From d627c932bdc5c0e2911e39cfb38952c29dab7afc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Wed, 4 Nov 2009 00:14:44 -0200 Subject: Pass config.generators options along when RAILS_GENERATORS is set and show --force-plural message just once. Signed-off-by: Jeremy Kemper --- railties/lib/rails/application.rb | 3 ++- railties/lib/rails/commands/destroy.rb | 2 -- railties/lib/rails/commands/generate.rb | 2 -- railties/lib/rails/configuration.rb | 14 +++++++++----- railties/lib/rails/generators/actions.rb | 1 + railties/lib/rails/generators/named_base.rb | 5 ++++- .../rails/generators/rails/app/templates/script/destroy.tt | 3 ++- .../generators/rails/app/templates/script/generate.tt | 1 + railties/lib/rails/generators/resource_helpers.rb | 8 +++++++- railties/test/application/generators_test.rb | 6 ++++-- railties/test/generators/resource_generator_test.rb | 2 +- 11 files changed, 31 insertions(+), 16 deletions(-) diff --git a/railties/lib/rails/application.rb b/railties/lib/rails/application.rb index af73b08547..ce3ab9147c 100644 --- a/railties/lib/rails/application.rb +++ b/railties/lib/rails/application.rb @@ -416,7 +416,8 @@ module Rails # === # TODO: Does this need to be an initializer here? initializer :initialize_generators do - if defined?(Rails::Generators) + if defined?(RAILS_GENERATORS) && RAILS_GENERATORS + require 'rails/generators' Rails::Generators.no_color! unless config.generators.colorize_logging Rails::Generators.aliases.deep_merge! config.generators.aliases Rails::Generators.options.deep_merge! config.generators.options diff --git a/railties/lib/rails/commands/destroy.rb b/railties/lib/rails/commands/destroy.rb index 1270fdd033..15ff90f78a 100644 --- a/railties/lib/rails/commands/destroy.rb +++ b/railties/lib/rails/commands/destroy.rb @@ -1,5 +1,3 @@ -require File.expand_path(File.join(File.dirname(__FILE__), '..', 'generators')) - if ARGV.size == 0 Rails::Generators.help exit diff --git a/railties/lib/rails/commands/generate.rb b/railties/lib/rails/commands/generate.rb index d91dcf9788..82a658e2ed 100755 --- a/railties/lib/rails/commands/generate.rb +++ b/railties/lib/rails/commands/generate.rb @@ -1,5 +1,3 @@ -require File.expand_path(File.join(File.dirname(__FILE__), '..', 'generators')) - if ARGV.size == 0 Rails::Generators.help exit diff --git a/railties/lib/rails/configuration.rb b/railties/lib/rails/configuration.rb index 0a545f23de..2b847ba711 100644 --- a/railties/lib/rails/configuration.rb +++ b/railties/lib/rails/configuration.rb @@ -278,12 +278,16 @@ module Rails end def method_missing(method, *args) - method = method.to_s.sub(/=$/, '').to_sym - namespace = args.first.is_a?(Symbol) ? args.shift : nil - configuration = args.first.is_a?(Hash) ? args.shift : nil + method = method.to_s.sub(/=$/, '').to_sym - @options[:rails][method] = namespace if namespace - namespace ||= method + if method == :rails + namespace, configuration = :rails, args.shift + elsif args.first.is_a?(Hash) + namespace, configuration = method, args.shift + else + namespace, configuration = args.shift, args.shift + @options[:rails][method] = namespace + end if configuration aliases = configuration.delete(:aliases) diff --git a/railties/lib/rails/generators/actions.rb b/railties/lib/rails/generators/actions.rb index c601c6fb39..8677bf283b 100644 --- a/railties/lib/rails/generators/actions.rb +++ b/railties/lib/rails/generators/actions.rb @@ -289,6 +289,7 @@ module Rails if args.size == 1 say args.first.to_s else + args << (self.behavior == :invoke ? :green : :red) say_status *args end end diff --git a/railties/lib/rails/generators/named_base.rb b/railties/lib/rails/generators/named_base.rb index 0e5976f915..1d4f52286e 100644 --- a/railties/lib/rails/generators/named_base.rb +++ b/railties/lib/rails/generators/named_base.rb @@ -11,7 +11,10 @@ module Rails alias :file_name :singular_name - def initialize(*args) #:nodoc: + def initialize(args, *options) #:nodoc: + # Unfreeze name in case it's given as a frozen string + args[0] = args[0].dup if args[0].is_a?(String) && args[0].frozen? + super assign_names!(self.name) parse_attributes! if respond_to?(:attributes) diff --git a/railties/lib/rails/generators/rails/app/templates/script/destroy.tt b/railties/lib/rails/generators/rails/app/templates/script/destroy.tt index c97090cdee..62a856d338 100755 --- a/railties/lib/rails/generators/rails/app/templates/script/destroy.tt +++ b/railties/lib/rails/generators/rails/app/templates/script/destroy.tt @@ -1,3 +1,4 @@ <%= shebang %> -require File.expand_path('../../config/application', __FILE__) +RAILS_GENERATORS = true +require File.expand_path('../../config/environment', __FILE__) require 'rails/commands/destroy' diff --git a/railties/lib/rails/generators/rails/app/templates/script/generate.tt b/railties/lib/rails/generators/rails/app/templates/script/generate.tt index 26f029c6a6..a005e77104 100755 --- a/railties/lib/rails/generators/rails/app/templates/script/generate.tt +++ b/railties/lib/rails/generators/rails/app/templates/script/generate.tt @@ -1,3 +1,4 @@ <%= shebang %> +RAILS_GENERATORS = true require File.expand_path('../../config/environment', __FILE__) require 'rails/commands/generate' diff --git a/railties/lib/rails/generators/resource_helpers.rb b/railties/lib/rails/generators/resource_helpers.rb index 0385581083..99954e2292 100644 --- a/railties/lib/rails/generators/resource_helpers.rb +++ b/railties/lib/rails/generators/resource_helpers.rb @@ -6,6 +6,8 @@ module Rails # ActiveModel. # module ResourceHelpers + mattr_accessor :skip_warn + def self.included(base) #:nodoc: base.send :attr_reader, :controller_name, :controller_class_name, :controller_file_name, :controller_class_path, :controller_file_path @@ -19,7 +21,11 @@ module Rails super if name == name.pluralize && !options[:force_plural] - say "Plural version of the model detected, using singularized version. Override with --force-plural." + unless ResourceHelpers.skip_warn + say "Plural version of the model detected, using singularized version. Override with --force-plural." + ResourceHelpers.skip_warn = true + end + name.replace name.singularize assign_names!(self.name) end diff --git a/railties/test/application/generators_test.rb b/railties/test/application/generators_test.rb index 445a867c85..bfbf1ffd16 100644 --- a/railties/test/application/generators_test.rb +++ b/railties/test/application/generators_test.rb @@ -1,4 +1,5 @@ require "isolation/abstract_unit" +RAILS_GENERATORS = true module ApplicationTests class GeneratorsTest < Test::Unit::TestCase @@ -23,7 +24,8 @@ module ApplicationTests Rails::Initializer.run do |c| c.generators.orm = :datamapper c.generators.test_framework = :rspec - expected = { :rails => { :orm => :datamapper, :test_framework => :rspec } } + c.generators.helper = false + expected = { :rails => { :orm => :datamapper, :test_framework => :rspec, :helper => false } } assert_equal(expected, c.generators.options) end end @@ -93,4 +95,4 @@ module ApplicationTests assert Rails::Generators.options.size >= 1 end end -end \ No newline at end of file +end diff --git a/railties/test/generators/resource_generator_test.rb b/railties/test/generators/resource_generator_test.rb index dcae81c204..886af01b22 100644 --- a/railties/test/generators/resource_generator_test.rb +++ b/railties/test/generators/resource_generator_test.rb @@ -75,7 +75,7 @@ class ResourceGeneratorTest < GeneratorsTestCase end def test_plural_names_are_singularized - content = run_generator ["accounts"] + content = run_generator ["accounts".freeze] assert_file "app/models/account.rb", /class Account < ActiveRecord::Base/ assert_file "test/unit/account_test.rb", /class AccountTest/ assert_match /Plural version of the model detected, using singularized version. Override with --force-plural./, content -- cgit v1.2.3