From a0b34488b259f8fdfb7386d2ef9f0f300c1f53e9 Mon Sep 17 00:00:00 2001 From: Gaurav Tiwari Date: Wed, 10 May 2017 19:08:53 +0100 Subject: [PATCH 1/2] Fail if yarn is outdated --- lib/install/bin/yarn.tt | 2 +- lib/tasks/webpacker/check_yarn.rake | 9 ++++++--- lib/tasks/webpacker/yarn_install.rake | 2 +- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/lib/install/bin/yarn.tt b/lib/install/bin/yarn.tt index 5187824b2..e72676245 100644 --- a/lib/install/bin/yarn.tt +++ b/lib/install/bin/yarn.tt @@ -2,7 +2,7 @@ VENDOR_PATH = File.expand_path('..', __dir__) Dir.chdir(VENDOR_PATH) do begin - exec "yarnpkg #{ARGV.join(" ")}" + exec "yarn #{ARGV.join(" ")}" rescue Errno::ENOENT $stderr.puts "Yarn executable was not detected in the system." $stderr.puts "Download Yarn at https://yarnpkg.com/en/docs/install" diff --git a/lib/tasks/webpacker/check_yarn.rake b/lib/tasks/webpacker/check_yarn.rake index a16698251..88ccced3f 100644 --- a/lib/tasks/webpacker/check_yarn.rake +++ b/lib/tasks/webpacker/check_yarn.rake @@ -1,11 +1,14 @@ namespace :webpacker do desc "Verifies if yarn is installed" task :check_yarn do + required_yarn_version = "0.20.1" + begin - version = `yarn --version` - raise Errno::ENOENT if version.blank? + yarn_version = `yarn --version` + + raise Errno::ENOENT if yarn_version.blank? || Gem::Version.new(yarn_version) < Gem::Version.new(required_yarn_version) rescue Errno::ENOENT - puts "Webpacker requires yarn. Please download and install Yarn https://yarnpkg.com/lang/en/docs/install/" + puts "Webpacker requires Yarn version >= #{required_yarn_version}. Please download latest version and install https://yarnpkg.com/lang/en/docs/install/" puts "Exiting!" && exit! end end diff --git a/lib/tasks/webpacker/yarn_install.rake b/lib/tasks/webpacker/yarn_install.rake index 43e3d1431..74ef4cb31 100644 --- a/lib/tasks/webpacker/yarn_install.rake +++ b/lib/tasks/webpacker/yarn_install.rake @@ -1,6 +1,6 @@ namespace :webpacker do desc "Support for older Rails versions.Install all JavaScript dependencies as specified via Yarn" task :yarn_install do - system("./bin/yarn") + exec "#{RbConfig.ruby} ./bin/yarn" end end From 79aa0dfc5021d0b118c4e688b3f5777e8baaa448 Mon Sep 17 00:00:00 2001 From: Gaurav Tiwari Date: Thu, 11 May 2017 10:49:54 +0100 Subject: [PATCH 2/2] Revert other changes --- lib/install/bin/yarn.tt | 2 +- lib/tasks/webpacker/yarn_install.rake | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/install/bin/yarn.tt b/lib/install/bin/yarn.tt index e72676245..5187824b2 100644 --- a/lib/install/bin/yarn.tt +++ b/lib/install/bin/yarn.tt @@ -2,7 +2,7 @@ VENDOR_PATH = File.expand_path('..', __dir__) Dir.chdir(VENDOR_PATH) do begin - exec "yarn #{ARGV.join(" ")}" + exec "yarnpkg #{ARGV.join(" ")}" rescue Errno::ENOENT $stderr.puts "Yarn executable was not detected in the system." $stderr.puts "Download Yarn at https://yarnpkg.com/en/docs/install" diff --git a/lib/tasks/webpacker/yarn_install.rake b/lib/tasks/webpacker/yarn_install.rake index 74ef4cb31..43e3d1431 100644 --- a/lib/tasks/webpacker/yarn_install.rake +++ b/lib/tasks/webpacker/yarn_install.rake @@ -1,6 +1,6 @@ namespace :webpacker do desc "Support for older Rails versions.Install all JavaScript dependencies as specified via Yarn" task :yarn_install do - exec "#{RbConfig.ruby} ./bin/yarn" + system("./bin/yarn") end end