diff --git a/railties/lib/rails/generators/app_base.rb b/railties/lib/rails/generators/app_base.rb index f6038792ee..8543dec603 100644 --- a/railties/lib/rails/generators/app_base.rb +++ b/railties/lib/rails/generators/app_base.rb @@ -268,6 +268,13 @@ module Rails version end end + + def to_s + [ ("# #{comment}\n" if comment), + ("# " if commented_out), "gem \"#{name}\"", (", \"#{version}\"" if version), + *options.map { |key, val| ", #{key}: #{val.inspect}" } + ].compact.join + end end def rails_prerelease? diff --git a/railties/lib/rails/generators/rails/app/templates/Gemfile.tt b/railties/lib/rails/generators/rails/app/templates/Gemfile.tt index c07997031c..809c776e5c 100644 --- a/railties/lib/rails/generators/rails/app/templates/Gemfile.tt +++ b/railties/lib/rails/generators/rails/app/templates/Gemfile.tt @@ -2,14 +2,10 @@ source "https://rubygems.org" git_source(:github) { |repo| "https://github.com/#{repo}.git" } ruby <%= "\"#{RUBY_VERSION}\"" -%> -<% gemfile_entries.each do |gem| -%> -<% if gem.comment %> -# <%= gem.comment %> +<% gemfile_entries.each do |gemfile_entry| %> +<%= gemfile_entry %> <% end -%> -<%= gem.commented_out ? "# " : "" %>gem "<%= gem.name %>"<%= %(, "#{gem.version}") if gem.version -%> -<% if gem.options.any? -%>, <%= gem.options.map { |k,v| "#{k}: #{v.inspect}" }.join(", ") %><% end -%> -<% end %> <% unless options.minimal? -%> # Use Kredis to get higher-level data types in Redis [https://github.com/rails/kredis] diff --git a/railties/lib/rails/generators/rails/plugin/templates/Gemfile.tt b/railties/lib/rails/generators/rails/plugin/templates/Gemfile.tt index 845963646e..4aa43aa4fa 100644 --- a/railties/lib/rails/generators/rails/plugin/templates/Gemfile.tt +++ b/railties/lib/rails/generators/rails/plugin/templates/Gemfile.tt @@ -17,17 +17,8 @@ end <% if rails_prerelease? -%> # Your gem is dependent on a prerelease version of Rails. Once you can lock this # dependency down to a specific version, move it to your gemspec. -<% max_width = gemfile_entries.map { |g| g.name.length }.max -%> -<% gemfile_entries.each do |gem| -%> -<% if gem.comment -%> - -# <%= gem.comment %> -<% end -%> -<%= gem.commented_out ? "# " : "" %>gem "<%= gem.name %>"<%= %(, "#{gem.version}") if gem.version -%> -<% if gem.options.any? -%> -, <%= gem.options.map { |k,v| - "#{k}: #{v.inspect}" }.join(", ") %> -<% end -%> +<% gemfile_entries.each do |gemfile_entry| -%> +<%= gemfile_entry %> <% end -%> <% end -%> diff --git a/railties/test/generators/db_system_change_generator_test.rb b/railties/test/generators/db_system_change_generator_test.rb index 584e6e864c..e5da7a14b7 100644 --- a/railties/test/generators/db_system_change_generator_test.rb +++ b/railties/test/generators/db_system_change_generator_test.rb @@ -11,9 +11,10 @@ module Rails include GeneratorsTestHelper setup do - copy_gemfile( - GemfileEntry.new("sqlite3", nil, "Use sqlite3 as the database for Active Record") - ) + copy_gemfile <<~ENTRY + # Use sqlite3 as the database for Active Record + gem 'sqlite3' + ENTRY end test "change to invalid database" do diff --git a/railties/test/generators/generators_test_helper.rb b/railties/test/generators/generators_test_helper.rb index e975d4726e..f6c0da3e35 100644 --- a/railties/test/generators/generators_test_helper.rb +++ b/railties/test/generators/generators_test_helper.rb @@ -20,12 +20,6 @@ module GeneratorsTestHelper include ActiveSupport::Testing::Stream include ActiveSupport::Testing::MethodCallAssertions - GemfileEntry = Struct.new(:name, :version, :comment, :options, :commented_out) do - def initialize(name, version, comment, options = {}, commented_out = false) - super - end - end - def self.included(base) base.class_eval do destination File.expand_path("../fixtures/tmp", __dir__)