From 1979c37443e63f756725a6e4b1faaf5bffda6aa8 Mon Sep 17 00:00:00 2001 From: Fred Wu Date: Wed, 25 Aug 2010 11:36:07 +1000 Subject: [PATCH] Fixed the session name generated by the app_generator. Also refactored the corresponding test suites to be cleaner. --- .../rails/generators/rails/app/app_generator.rb | 3 ++ railties/test/generators/app_generator_test.rb | 27 +++++++++++++++---- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/railties/lib/rails/generators/rails/app/app_generator.rb b/railties/lib/rails/generators/rails/app/app_generator.rb index 6eba0f7..cdff174 100644 --- a/railties/lib/rails/generators/rails/app/app_generator.rb +++ b/railties/lib/rails/generators/rails/app/app_generator.rb @@ -355,6 +355,8 @@ module Rails def app_name @app_name ||= File.basename(destination_root) end + + alias_method :defined_app_name, :app_name def defined_app_const_base Rails.respond_to?(:application) && defined?(Rails::Application) && @@ -362,6 +364,7 @@ module Rails end def app_const_base + defined_app_name # ensures the correct app_name if it's already defined @app_const_base ||= defined_app_const_base || app_name.gsub(/\W/, '_').squeeze('_').camelize end diff --git a/railties/test/generators/app_generator_test.rb b/railties/test/generators/app_generator_test.rb index dcd7629..9ce2308 100644 --- a/railties/test/generators/app_generator_test.rb +++ b/railties/test/generators/app_generator_test.rb @@ -45,6 +45,12 @@ class AppGeneratorTest < Rails::Generators::TestCase super Rails::Generators::AppGenerator.instance_variable_set('@desc', nil) @bundle_command = File.basename(Thor::Util.ruby_command).sub(/ruby/, 'bundle') + + Kernel::silence_warnings do + Thor::Base.shell.send(:attr_accessor, :always_force) + @shell = Thor::Base.shell.new + @shell.send(:always_force=, true) + end end def teardown @@ -118,17 +124,26 @@ class AppGeneratorTest < Rails::Generators::TestCase FileUtils.mv(app_root, app_moved_root) - # forces the shell to automatically overwrite all files - Thor::Base.shell.send(:attr_accessor, :always_force) - shell = Thor::Base.shell.new - shell.send(:always_force=, true) - generator = Rails::Generators::AppGenerator.new ["rails"], { :with_dispatchers => true }, - :destination_root => app_moved_root, :shell => shell + :destination_root => app_moved_root, :shell => @shell generator.send(:app_const) silence(:stdout){ generator.send(:create_config_files) } assert_file "myapp_moved/config/environment.rb", /Myapp::Application\.initialize!/ end + + def test_rails_update_generates_correct_session_key + app_root = File.join(destination_root, 'myapp') + run_generator [app_root] + + Rails.application.config.root = app_root + Rails.application.class.stubs(:name).returns("Myapp") + Rails.application.stubs(:is_a?).returns(Rails::Application) + + generator = Rails::Generators::AppGenerator.new ["rails"], { :with_dispatchers => true }, :destination_root => app_root, :shell => @shell + generator.send(:app_const) + silence(:stdout){ generator.send(:create_config_files) } + assert_file "myapp/config/initializers/session_store.rb", /_myapp_session/ + end def test_application_names_are_not_singularized run_generator [File.join(destination_root, "hats")] -- 1.7.2