Skip to content

Commit

Permalink
Fixed the session name generated by the app_generator. Also refactore…
Browse files Browse the repository at this point in the history
…d the corresponding test suites to be cleaner. [#5434 state:resolved]

Signed-off-by: José Valim <jose.valim@gmail.com>
  • Loading branch information
fredwu authored and josevalim committed Aug 28, 2010
1 parent 3e22e0b commit 83f4507
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 6 deletions.
3 changes: 3 additions & 0 deletions railties/lib/rails/generators/rails/app/app_generator.rb
Expand Up @@ -355,13 +355,16 @@ def file(*args, &block)
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) &&
Rails.application.is_a?(Rails::Application) && Rails.application.class.name.sub(/::Application$/, "")
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

Expand Down
27 changes: 21 additions & 6 deletions railties/test/generators/app_generator_test.rb
Expand Up @@ -45,6 +45,12 @@ def setup
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
Expand Down Expand Up @@ -118,17 +124,26 @@ def test_application_name_is_detected_if_it_exists_and_app_folder_renamed

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")]
Expand Down

0 comments on commit 83f4507

Please sign in to comment.