From b5fe014fdcc285f3bcb8779c4f7cfbc5a820856f Mon Sep 17 00:00:00 2001 From: Xavier Noria Date: Mon, 21 Jun 2010 00:39:32 +0200 Subject: [PATCH] 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 ) --- railties/lib/rails/engine/configuration.rb | 6 +++++- railties/test/application/initializers/load_path_test.rb | 4 +++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/railties/lib/rails/engine/configuration.rb b/railties/lib/rails/engine/configuration.rb index 446fe0bda9ad7..620a723a04a2b 100644 --- a/railties/lib/rails/engine/configuration.rb +++ b/railties/lib/rails/engine/configuration.rb @@ -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 diff --git a/railties/test/application/initializers/load_path_test.rb b/railties/test/application/initializers/load_path_test.rb index 714d62311d5c6..d9aac8719cd76 100644 --- a/railties/test/application/initializers/load_path_test.rb +++ b/railties/test/application/initializers/load_path_test.rb @@ -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