diff --git a/railties/lib/rails/generators/rails/app/app_generator.rb b/railties/lib/rails/generators/rails/app/app_generator.rb index 15a0d153016b8..917a65e91b7c7 100644 --- a/railties/lib/rails/generators/rails/app/app_generator.rb +++ b/railties/lib/rails/generators/rails/app/app_generator.rb @@ -107,9 +107,7 @@ def bin_when_updating end def yarn_when_updating - return if File.exist?("bin/yarn") - - template "bin/yarn" do |content| + template "bin/yarn", force: true do |content| "#{shebang}\n" + content end diff --git a/railties/test/application/rake_test.rb b/railties/test/application/rake_test.rb index 885d12f4a2a08..8692b27af576b 100644 --- a/railties/test/application/rake_test.rb +++ b/railties/test/application/rake_test.rb @@ -301,6 +301,22 @@ def test_copy_templates end end + test "app:binstub:yarn generates bin/yarn" do + yarn_binstub = File.join(app_path, "bin/yarn") + rails "app:binstub:yarn" + + assert_path_exists yarn_binstub + assert_match %r/\A#!/, File.read(yarn_binstub) + end + + test "app:binstub:yarn overwrites existing bin/yarn" do + yarn_binstub = File.join(app_path, "bin/yarn") + File.write(yarn_binstub, "existing") + rails "app:binstub:yarn" + + assert_match %r/\A#!/, File.read(yarn_binstub) + end + def test_template_load_initializers app_file "config/initializers/dummy.rb", "puts 'Hello, World!'" app_file "template.rb", ""