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 )
This commit is contained in:
Xavier Noria
2010-06-21 00:39:32 +02:00
parent 69fec3ab3f
commit b5fe014fdc
2 changed files with 8 additions and 2 deletions

View File

@@ -20,15 +20,19 @@ module Rails
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

View File

@@ -19,7 +19,7 @@ module ApplicationTests
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 ApplicationTests
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