diff options
author | lest <just.lest@gmail.com> | 2011-11-19 19:03:44 +0200 |
---|---|---|
committer | lest <just.lest@gmail.com> | 2011-11-19 19:09:09 +0200 |
commit | 39d2251d8a3e50bf004b6361e0079679466b2280 (patch) | |
tree | 730fc5f830836cb8b55d31d6b90d7c789854cf08 /railties | |
parent | bc04455f1032166e66f5aef06ff2976173ac7da6 (diff) | |
download | rails-39d2251d8a3e50bf004b6361e0079679466b2280.tar.gz rails-39d2251d8a3e50bf004b6361e0079679466b2280.tar.bz2 rails-39d2251d8a3e50bf004b6361e0079679466b2280.zip |
fix rails plugin new CamelCasedName bug
refs #3684
Diffstat (limited to 'railties')
-rw-r--r-- | railties/lib/rails/generators/rails/plugin_new/plugin_new_generator.rb | 20 | ||||
-rw-r--r-- | railties/test/generators/plugin_new_generator_test.rb | 6 |
2 files changed, 22 insertions, 4 deletions
diff --git a/railties/lib/rails/generators/rails/plugin_new/plugin_new_generator.rb b/railties/lib/rails/generators/rails/plugin_new/plugin_new_generator.rb index f5c8ccf940..ff523fc26f 100644 --- a/railties/lib/rails/generators/rails/plugin_new/plugin_new_generator.rb +++ b/railties/lib/rails/generators/rails/plugin_new/plugin_new_generator.rb @@ -246,8 +246,20 @@ task :default => :test "rails plugin new #{self.arguments.map(&:usage).join(' ')} [options]" end + def original_name + @original_name ||= File.basename(destination_root) + end + def name - @name ||= File.basename(destination_root) + unless @name + # same as ActiveSupport::Inflector#underscore except not replacing '-' + @name = original_name.dup + @name.gsub!(/([A-Z]+)([A-Z][a-z])/,'\1_\2') + @name.gsub!(/([a-z\d])([A-Z])/,'\1_\2') + @name.downcase! + end + + @name end def camelized @@ -256,11 +268,11 @@ task :default => :test def valid_const? if camelized =~ /^\d/ - raise Error, "Invalid plugin name #{name}. Please give a name which does not start with numbers." + raise Error, "Invalid plugin name #{original_name}. Please give a name which does not start with numbers." elsif RESERVED_NAMES.include?(name) - raise Error, "Invalid plugin name #{name}. Please give a name which does not match one of the reserved rails words." + raise Error, "Invalid plugin name #{original_name}. Please give a name which does not match one of the reserved rails words." elsif Object.const_defined?(camelized) - raise Error, "Invalid plugin name #{name}, constant #{camelized} is already in use. Please choose another plugin name." + raise Error, "Invalid plugin name #{original_name}, constant #{camelized} is already in use. Please choose another plugin name." end end diff --git a/railties/test/generators/plugin_new_generator_test.rb b/railties/test/generators/plugin_new_generator_test.rb index b70f9f4d9c..826eac904e 100644 --- a/railties/test/generators/plugin_new_generator_test.rb +++ b/railties/test/generators/plugin_new_generator_test.rb @@ -37,6 +37,12 @@ class PluginNewGeneratorTest < Rails::Generators::TestCase assert_file "things-43/lib/things-43.rb", /module Things43/ end + def test_camelcase_plugin_name_underscores_filenames + run_generator [File.join(destination_root, "CamelCasedName")] + assert_no_file "CamelCasedName/lib/CamelCasedName.rb" + assert_file "CamelCasedName/lib/camel_cased_name.rb", /module CamelCasedName/ + end + def test_generating_without_options run_generator assert_file "README.rdoc", /Bukkits/ |