Permalink
Browse files

files in the lib directory are no longer autoloaded

Conceptually, the lib directory is closer 3rd party libraries
than to the application itself. Thus, Rails adds it to Ruby's
load path ($LOAD_PATH, $:) but it is no longer included in
dependencies' load paths.

To enable autoloading back put this in your config/application.rb

  config.load_paths += %W( #{config.root}/lib )
  • Loading branch information...
1 parent 69fec3a commit b5fe014fdcc285f3bcb8779c4f7cfbc5a820856f @fxn fxn committed Jun 20, 2010
@@ -20,15 +20,19 @@ def paths
paths.app.models "app/models", :eager_load => true
paths.app.mailers "app/mailers", :eager_load => true
paths.app.views "app/views"
- paths.lib "lib", :load_path => true
+
+ paths.lib "lib"
paths.lib.tasks "lib/tasks", :glob => "**/*.rake"
+
paths.config "config"
paths.config.initializers "config/initializers", :glob => "**/*.rb"
paths.config.locales "config/locales", :glob => "*.{rb,yml}"
paths.config.routes "config/routes.rb"
+
paths.public "public"
paths.public.javascripts "public/javascripts"
paths.public.stylesheets "public/stylesheets"
+
paths
end
end
@@ -19,7 +19,7 @@ def setup
assert $:.include?("#{app_path}/app/models")
end
- test "initializing an application allows to load code on lib path inside application class definitation" do
+ test "initializing an application allows to load code on lib path inside application class definition" do
app_file "lib/foo.rb", <<-RUBY
module Foo; end
RUBY
@@ -60,6 +60,8 @@ module Zoo::ReptileHouse ; end
add_to_config <<-RUBY
config.root = "#{app_path}"
+ config.cache_classes = true
+ config.load_paths << "#{app_path}/lib"
config.eager_load_paths << "#{app_path}/lib"
RUBY

3 comments on commit b5fe014

Contributor

aaronchi replied Jun 20, 2010

This seems to break the loading of plugins

Owner

fxn replied Jun 20, 2010

Indeed it needs more thought, it is reverted now b311dbb

Good thing it's reverted. lib/app_name/foo.rb with AppName:: Foo is pretty common.

Please sign in to comment.