diff options
author | Amol Hatwar <amol@hatwar.org> | 2008-05-13 16:02:56 -0500 |
---|---|---|
committer | Joshua Peek <josh@joshpeek.com> | 2008-05-13 16:02:56 -0500 |
commit | 2d372d704987e05712ccd937e78d8dbd41242efe (patch) | |
tree | 91f59cafa9824876a0b296c5a9af433acd53ec76 /railties/lib/rails_generator/commands.rb | |
parent | 4562a5b57f5999fadc8b0957ed5777f35be8dea5 (diff) | |
download | rails-2d372d704987e05712ccd937e78d8dbd41242efe.tar.gz rails-2d372d704987e05712ccd937e78d8dbd41242efe.tar.bz2 rails-2d372d704987e05712ccd937e78d8dbd41242efe.zip |
Fixed generator collisions for nested controller modules.
Signed-off-by: Joshua Peek <josh@joshpeek.com>
Diffstat (limited to 'railties/lib/rails_generator/commands.rb')
-rw-r--r-- | railties/lib/rails_generator/commands.rb | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/railties/lib/rails_generator/commands.rb b/railties/lib/rails_generator/commands.rb index 440bab276c..03b7d354a6 100644 --- a/railties/lib/rails_generator/commands.rb +++ b/railties/lib/rails_generator/commands.rb @@ -154,28 +154,35 @@ HELP # Ruby or Rails. In the future, expand to check other namespaces # such as the rest of the user's app. def class_collisions(*class_names) + + # Initialize some check varibles + last_class = Object + current_class = nil + name = nil + class_names.flatten.each do |class_name| # Convert to string to allow symbol arguments. class_name = class_name.to_s # Skip empty strings. - next if class_name.strip.empty? + class_name.strip.empty? ? next : current_class = class_name # Split the class from its module nesting. nesting = class_name.split('::') name = nesting.pop # Extract the last Module in the nesting. - last = nesting.inject(Object) { |last, nest| - break unless last.const_defined?(nest) - last.const_get(nest) + last = nesting.inject(last_class) { |last, nest| + break unless last_class.const_defined?(nest) + last_class = last_class.const_get(nest) } - # If the last Module exists, check whether the given - # class exists and raise a collision if so. - if last and last.const_defined?(name.camelize) - raise_class_collision(class_name) - end + end + # If the last Module exists, check whether the given + # class exists and raise a collision if so. + + if last_class and last_class.const_defined?(name.camelize) + raise_class_collision(current_class) end end |