title: Meet "uninitialized constant #<Class:0x8d78f18>::Chef::Resource::CookbookFile" when running chef-client
body: <p>I am using Chef 11.10.0.</p>
  
  <p>I implement a new resource called MyCookbookFile which inherits Chef::Resource::CookbookFile.</p>
  
  <p>And, I am not going to change the provider this moment (So Chef::Provider::CookbookFile will be used).</p>
  
  <pre><code>require 'chef/resource/cookbook_file'
  require 'chef/mixin/securable'
  
  class Chef
    class Resource
      class MyCookbookFile &lt; Chef::Resource::CookbookFile
        include Chef::Mixin::Securable
  
        provides :my_cookbook_file, :on_platforms =&gt; :all
  
        # more codes here...
  
      end
    end
  end
  </code></pre>
  
  <p>I met the following error:</p>
  
  <pre><code>================================================================================
  Recipe Compile Error in /var/chef/cache/cookbooks/my-cookbook/resources/my_cookbook_file.rb
  ================================================================================
  
  
  NameError
  ---------
  uninitialized constant #&lt;Class:0x8d78f18&gt;::Chef::Resource::CookbookFile
  
  
  Cookbook Trace:
  ---------------
    /var/chef/cache/cookbooks/my-cookbook/resources/my_cookbook_file.rb:6:in `&lt;class:Resource&gt;'
    /var/chef/cache/cookbooks/my-cookbook/resources/my_cookbook_file.rb:5:in `&lt;class:Chef&gt;'
    /var/chef/cache/cookbooks/my-cookbook/resources/my_cookbook_file.rb:4:in `class_from_file'
  
  
  Relevant File Content:
  ----------------------
  /var/chef/cache/cookbooks/my-cookbook/resources/my_cookbook_file.rb:
  
    1:  require 'chef/resource/cookbook_file'
    2:  require 'chef/mixin/securable'
    3:
    4:  class Chef
    5:    class Resource
    6&gt;&gt;     class MyCookbookFile &lt; Chef::Resource::CookbookFile
  
  
  Running handlers:
  [2014-02-17T08:16:26+00:00] ERROR: Running exception handlers
  Running handlers complete
  
  [2014-02-17T08:16:26+00:00] ERROR: Exception handlers complete
  [2014-02-17T08:16:26+00:00] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out
  Chef Client failed. 0 resources updated in 1.189243344 seconds
  [2014-02-17T08:16:26+00:00] ERROR: uninitialized constant #&lt;Class:0x8d78f18&gt;::Chef::Resource::CookbookFile
  [2014-02-17T08:16:26+00:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)
  </code></pre>
  
  <p>I tried to print and check the LOAD_PATH in my cookbook. It includes:</p>
  
  <pre><code>/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.10.0/bin/../lib
  </code></pre>
  
  <p>And the library should be in place:</p>
  
  <pre><code>[root@localhost /]$ ll /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.10.0/lib/chef/resource/cookbook_file.rb 
  -rw-r--r-- 1 root root 1598 Feb  6 17:22 /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.10.0/lib/chef/resource/cookbook_file.rb
  </code></pre>