From 6e78549d2c295656c1fca27ed4d09318be86bcc0 Mon Sep 17 00:00:00 2001 From: Jonathan Hefner Date: Wed, 10 Feb 2021 11:34:25 -0600 Subject: [PATCH] Overwrite bin/yarn when running app:binstub:yarn This ensures that commands which delegate to `app:binstub:yarn`, such as `action_text:install`, will update `bin/yarn`. --- .../rails/generators/rails/app/app_generator.rb | 4 +--- railties/test/application/rake_test.rb | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 3 deletions(-) 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", ""