aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPiotr Sarnacki <drogus@gmail.com>2010-10-28 20:25:20 +0200
committerPiotr Sarnacki <drogus@gmail.com>2010-11-02 17:14:52 +0100
commita5311ee86bffad3f0bce00babd1ff5d78ec85618 (patch)
treeec8c04d706fa778454bfe9d8e7e0d7b70ddc77a7
parent5071b727b438f1ca6be502c906f5af751abb0229 (diff)
downloadrails-a5311ee86bffad3f0bce00babd1ff5d78ec85618.tar.gz
rails-a5311ee86bffad3f0bce00babd1ff5d78ec85618.tar.bz2
rails-a5311ee86bffad3f0bce00babd1ff5d78ec85618.zip
Make deep copy of application generators on engine initialization.
Otherwise nested hashes will be same objects for both application and engine, which will result in overwriting each others values on changes.
-rw-r--r--railties/lib/rails/configuration.rb8
-rw-r--r--railties/lib/rails/engine/configuration.rb2
-rw-r--r--railties/test/railties/engine_test.rb3
3 files changed, 12 insertions, 1 deletions
diff --git a/railties/lib/rails/configuration.rb b/railties/lib/rails/configuration.rb
index 8369795e71..66fab0a760 100644
--- a/railties/lib/rails/configuration.rb
+++ b/railties/lib/rails/configuration.rb
@@ -1,5 +1,6 @@
require 'active_support/deprecation'
require 'active_support/ordered_options'
+require 'active_support/core_ext/hash/deep_dup'
require 'rails/paths'
require 'rails/rack'
@@ -51,6 +52,13 @@ module Rails
@colorize_logging = true
end
+ def initialize_copy(source)
+ @aliases = @aliases.deep_dup
+ @options = @options.deep_dup
+ @fallbacks = @fallbacks.deep_dup
+ @templates = @templates.dup
+ end
+
def method_missing(method, *args)
method = method.to_s.sub(/=$/, '').to_sym
diff --git a/railties/lib/rails/engine/configuration.rb b/railties/lib/rails/engine/configuration.rb
index 5607628d96..4f458b0aee 100644
--- a/railties/lib/rails/engine/configuration.rb
+++ b/railties/lib/rails/engine/configuration.rb
@@ -10,7 +10,7 @@ module Rails
def initialize(root=nil)
super()
@root = root
- @generators = app_generators
+ @generators = app_generators.dup
end
# Returns the middleware stack for the engine.
diff --git a/railties/test/railties/engine_test.rb b/railties/test/railties/engine_test.rb
index 3509f964eb..822be24ef1 100644
--- a/railties/test/railties/engine_test.rb
+++ b/railties/test/railties/engine_test.rb
@@ -701,6 +701,9 @@ module RailtiesTest
generators = Bukkits::Engine.config.generators.options[:rails]
assert_equal :active_record, generators[:orm]
assert_equal :rspec , generators[:test_framework]
+
+ app_generators = Rails.application.config.generators.options[:rails]
+ assert_equal :test_unit , app_generators[:test_framework]
end
end
end