aboutsummaryrefslogtreecommitdiffstats
path: root/railties/lib
diff options
context:
space:
mode:
authorAmol Hatwar <amol@hatwar.org>2008-05-13 16:02:56 -0500
committerJoshua Peek <josh@joshpeek.com>2008-05-13 16:02:56 -0500
commit2d372d704987e05712ccd937e78d8dbd41242efe (patch)
tree91f59cafa9824876a0b296c5a9af433acd53ec76 /railties/lib
parent4562a5b57f5999fadc8b0957ed5777f35be8dea5 (diff)
downloadrails-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')
-rw-r--r--railties/lib/rails_generator/commands.rb25
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