class Rails::Generators::Base
def class_collisions(*class_names) #:nodoc:
application or Ruby on Rails.
Check whether the given class names are already taken by user
def class_collisions(*class_names) #:nodoc: return unless behavior == :invoke class_names.flatten.each do |class_name| class_name = class_name.to_s next if class_name.strip.empty? # Split the class from its module nesting nesting = class_name.split('::') last_name = nesting.pop # Hack to limit const_defined? to non-inherited on 1.9 extra = [] extra << false unless Object.method(:const_defined?).arity == 1 # Extract the last Module in the nesting last = nesting.inject(Object) do |last, nest| break unless last.const_defined?(nest, *extra) last.const_get(nest) end if last && last.const_defined?(last_name.camelize, *extra) raise Error, "The name '#{class_name}' is either already used in your application " << "or reserved by Ruby on Rails. Please choose an alternative and run " << "this generator again." end end end