Caching issue with class extension of RulesDataUI In my custom module I am trying to extend RulesDataUI class as below in the code which works fine just after clearing the caches, but on the next page reload I get warning as "Warning: class_implements(): Class RulesDataUICheckboxes does not exist and could not be loaded". I am not getting a clue how the class functions are invoked only just after cache clear.

The below code is present in my module name.rules.inc(nodequeue_rules.rules.inc)

 function nodequeue_rules_rules_data_info() {
      $return = array(
        'checkboxes' =&gt; array(
          'label' =&gt; t('checkboxes'),
          'ui class' =&gt; 'RulesDataUICheckboxes',
          'token type' =&gt; 'rules_text',
        )
      );
      return $return;
    }

class RulesDataUICheckboxes extends RulesDataUI implements RulesDataDirectInputFormInterface {
  public static function getDefaultMode() {
    dpm("hi");
    return 'input';
  }
  public static function inputForm($name, $info, $settings, RulesPlugin $element) {
    dpm("called");
    if (!empty($info['options list'])) {  
      // Make sure the .rules.inc of the providing module is included as the
      // options list callback may reside there.
      $element-&gt;call('loadBasicInclude');
      $form[$name] = array(
        '#type' =&gt; 'checkboxes',
        '#options' =&gt; call_user_func($info['options list'], $element, $name),
      );
    }
    else {
      $form[$name] = array(
        '#type' =&gt; 'textarea',
      );
      RulesDataInputEvaluator::attachForm($form, $settings, $info, $element-&gt;availableVariables());
    }
        $settings += array($name =&gt; isset($info['default value']) ? $info['default value'] : NULL);
    $form[$name] += array(
      '#title' =&gt; t('Value'),
      '#default_value' =&gt; $settings[$name],
      '#required' =&gt; empty($info['optional']),
      '#after_build' =&gt; array('rules_ui_element_fix_empty_after_build'),
      '#rows' =&gt; 3,
    );
    return $form;
  }
    public static function render($value) {
    return array(
      'content' =&gt; array('#markup' =&gt; check_plain($value)),
      '#attributes' =&gt; array('class' =&gt; array('rules-parameter-text')),
    );
  }
}
I think you need to add your rules.inc file to the info files[] array to ensure that the file is included while rebuilding the UI.

See more related: https://www.drupal.org/node/1275958 &amp; https://www.drupal.org/node/1276606