Ensure lib/rails/initializers/*.rb also works for gems.
This commit is contained in:
parent
cc0e402aa8
commit
5c41cb77d9
@ -109,6 +109,13 @@ def load_tasks
|
||||
config.generators.templates.unshift(*paths.lib.templates.to_a)
|
||||
end
|
||||
|
||||
initializer :load_lib_initializers do |app|
|
||||
paths.lib.rails.initializers.to_a.sort.each do |initializer|
|
||||
config = app.config
|
||||
eval(File.read(initializer), binding, initializer)
|
||||
end
|
||||
end
|
||||
|
||||
initializer :load_application_initializers do
|
||||
paths.config.initializers.to_a.sort.each do |initializer|
|
||||
load(initializer)
|
||||
|
@ -14,23 +14,25 @@ def initialize(root=nil)
|
||||
def paths
|
||||
@paths ||= begin
|
||||
paths = Rails::Paths::Root.new(@root)
|
||||
paths.app "app", :eager_load => true, :glob => "*"
|
||||
paths.app.controllers "app/controllers", :eager_load => true
|
||||
paths.app.helpers "app/helpers", :eager_load => true
|
||||
paths.app.models "app/models", :eager_load => true
|
||||
paths.app.mailers "app/mailers", :eager_load => true
|
||||
paths.app.metals "app/metal", :eager_load => true
|
||||
paths.app.views "app/views", :eager_load => true
|
||||
paths.lib "lib", :load_path => true
|
||||
paths.lib.tasks "lib/tasks", :glob => "**/*.rake"
|
||||
paths.lib.templates "lib/templates"
|
||||
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.app "app", :eager_load => true, :glob => "*"
|
||||
paths.app.controllers "app/controllers", :eager_load => true
|
||||
paths.app.helpers "app/helpers", :eager_load => true
|
||||
paths.app.models "app/models", :eager_load => true
|
||||
paths.app.mailers "app/mailers", :eager_load => true
|
||||
paths.app.metals "app/metal", :eager_load => true
|
||||
paths.app.views "app/views", :eager_load => true
|
||||
paths.lib "lib", :load_path => true
|
||||
paths.lib.rails "lib/rails", :glob => "**/*.rake"
|
||||
paths.lib.rails.initializers "lib/rails/initializers", :glob => "**/*.rb"
|
||||
paths.lib.tasks "lib/tasks", :glob => "**/*.rake"
|
||||
paths.lib.templates "lib/templates"
|
||||
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
|
||||
|
@ -47,20 +47,13 @@ def config
|
||||
end
|
||||
|
||||
initializer :load_init_rb, :before => :load_application_initializers do |app|
|
||||
initializers = Dir["#{root}/lib/rails/initializers/*.rb"]
|
||||
lib_initializers = paths.lib.rails.initializers.to_a
|
||||
files = %w(rails/init.rb init.rb).map { |path| File.expand_path(path, root) }
|
||||
|
||||
if initializers.any?
|
||||
initializers.each do |initializer|
|
||||
config = app.config
|
||||
eval(File.read(initializer), binding, initializer)
|
||||
end
|
||||
else
|
||||
files = %w(rails/init.rb init.rb).map { |path| File.expand_path path, root }
|
||||
if initrb = files.find { |path| File.file? path }
|
||||
ActiveSupport::Deprecation.warn "init.rb is deprecated: #{initrb}. Use lib/rails/initializers/#{name}.rb"
|
||||
config = app.config
|
||||
eval(File.read(initrb), binding, initrb)
|
||||
end
|
||||
if lib_initializers.empty? && initrb = files.find { |path| File.file?(path) }
|
||||
ActiveSupport::Deprecation.warn "init.rb is deprecated: #{initrb}. Use lib/rails/initializers/#{name}.rb"
|
||||
config = app.config
|
||||
eval(File.read(initrb), binding, initrb)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -94,26 +94,6 @@ class Engine < Rails::Engine
|
||||
assert rescued, "Expected boot rails to fail"
|
||||
end
|
||||
|
||||
test "loads lib/rails/initializers/foo.rb" do
|
||||
@plugin.write "lib/rails/initializers/foo.rb", <<-RUBY
|
||||
$loaded = true
|
||||
RUBY
|
||||
|
||||
boot_rails
|
||||
assert $loaded
|
||||
end
|
||||
|
||||
test "loads vendored rails/initializers/foo thats already in the $LOAD_PATH" do
|
||||
$: << "#{app_path}/vendor/foo/lib"
|
||||
|
||||
app_file "vendor/foo/lib/rails/initializers/foo.rb", <<-RUBY
|
||||
$loaded = true
|
||||
RUBY
|
||||
|
||||
boot_rails
|
||||
assert $loaded
|
||||
end
|
||||
|
||||
test "skips init.rb if initializer is present" do
|
||||
@plugin.write "lib/rails/initializers/foo.rb", <<-RUBY
|
||||
$loaded = true
|
||||
|
@ -297,6 +297,16 @@ def test_plugin_initializers
|
||||
assert $plugin_initializer
|
||||
end
|
||||
|
||||
def test_rails_plugin_initializers
|
||||
$plugin_initializer = false
|
||||
@plugin.write "lib/rails/initializers/foo.rb", <<-RUBY
|
||||
$plugin_initializer = true
|
||||
RUBY
|
||||
|
||||
boot_rails
|
||||
assert $plugin_initializer
|
||||
end
|
||||
|
||||
def test_plugin_midleware_referenced_in_configuration
|
||||
@plugin.write "lib/bukkits.rb", <<-RUBY
|
||||
class Bukkits
|
||||
|
Loading…
Reference in New Issue
Block a user