From 9556dd9194042c555ada15dbdd93f20a16b945a0 Mon Sep 17 00:00:00 2001 From: John Hawthorn Date: Tue, 9 Jun 2015 15:59:26 -0700 Subject: [PATCH 1/8] Add sample to targets for rake clean --- Rakefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Rakefile b/Rakefile index 6207fb9ece8..fbc893ee7bf 100644 --- a/Rakefile +++ b/Rakefile @@ -42,7 +42,7 @@ task :clean do puts "Deleting pkg directory.." FileUtils.rm_rf("pkg") - %w(api backend core frontend).each do |gem_name| + %w(api backend core frontend sample).each do |gem_name| puts "Cleaning #{gem_name}:" puts " Deleting #{gem_name}/Gemfile" FileUtils.rm_f("#{gem_name}/Gemfile") From 04246c0fc014c5600b141e7f9f1b385674a7f104 Mon Sep 17 00:00:00 2001 From: John Hawthorn Date: Tue, 9 Jun 2015 16:01:34 -0700 Subject: [PATCH 2/8] rake clean should delete Gemfile.lock not Gemfile --- Rakefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Rakefile b/Rakefile index fbc893ee7bf..591855fc5b8 100644 --- a/Rakefile +++ b/Rakefile @@ -44,8 +44,8 @@ task :clean do %w(api backend core frontend sample).each do |gem_name| puts "Cleaning #{gem_name}:" - puts " Deleting #{gem_name}/Gemfile" - FileUtils.rm_f("#{gem_name}/Gemfile") + puts " Deleting #{gem_name}/Gemfile.lock" + FileUtils.rm_f("#{gem_name}/Gemfile.lock") puts " Deleting #{gem_name}/pkg" FileUtils.rm_rf("#{gem_name}/pkg") puts " Deleting #{gem_name}'s dummy application" From da0c5faf0a8dafce6d4b07e7be8fb2d9a9f637c0 Mon Sep 17 00:00:00 2001 From: John Hawthorn Date: Tue, 9 Jun 2015 16:03:29 -0700 Subject: [PATCH 3/8] Clean rake clean --- Rakefile | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/Rakefile b/Rakefile index 591855fc5b8..766b9ce6749 100644 --- a/Rakefile +++ b/Rakefile @@ -37,21 +37,13 @@ end desc "clean the whole repository by removing all the generated files" task :clean do - puts "Deleting sandbox..." - FileUtils.rm_rf("sandbox") - puts "Deleting pkg directory.." - FileUtils.rm_rf("pkg") + rm_rf "sandbox" + rm_rf "pkg" %w(api backend core frontend sample).each do |gem_name| - puts "Cleaning #{gem_name}:" - puts " Deleting #{gem_name}/Gemfile.lock" - FileUtils.rm_f("#{gem_name}/Gemfile.lock") - puts " Deleting #{gem_name}/pkg" - FileUtils.rm_rf("#{gem_name}/pkg") - puts " Deleting #{gem_name}'s dummy application" - Dir.chdir("#{gem_name}/spec") do - FileUtils.rm_rf("dummy") - end + rm_f "#{gem_name}/Gemfile.lock" + rm_rf "#{gem_name}/pkg" + rm_rf "#{gem_name}/spec/dummy" end end From b247cb982939ef973934402a8b700ccd9757333c Mon Sep 17 00:00:00 2001 From: John Hawthorn Date: Tue, 9 Jun 2015 23:51:03 -0700 Subject: [PATCH 4/8] rake clean should remove the toplevel Gemfile.lock --- Rakefile | 1 + 1 file changed, 1 insertion(+) diff --git a/Rakefile b/Rakefile index 766b9ce6749..66134f41f34 100644 --- a/Rakefile +++ b/Rakefile @@ -37,6 +37,7 @@ end desc "clean the whole repository by removing all the generated files" task :clean do + rm_f "Gemfile.lock" rm_rf "sandbox" rm_rf "pkg" From a9ac07b74bd3569cdcd8dd5b5d852a231ee019d1 Mon Sep 17 00:00:00 2001 From: John Hawthorn Date: Wed, 10 Jun 2015 10:37:00 -0700 Subject: [PATCH 5/8] Remove unnecessary require in rake test_app --- Rakefile | 1 - 1 file changed, 1 deletion(-) diff --git a/Rakefile b/Rakefile index 66134f41f34..8171fd4f52e 100644 --- a/Rakefile +++ b/Rakefile @@ -27,7 +27,6 @@ end desc "Generates a dummy app for testing for every Spree engine" task :test_app do - require File.expand_path('../core/lib/generators/spree/install/install_generator', __FILE__) %w(api backend core frontend sample).each do |engine| ENV['LIB_NAME'] = File.join('spree', engine) ENV['DUMMY_PATH'] = File.expand_path("../#{engine}/spec/dummy", __FILE__) From bd2355f9e39498bd69630db5d805eb4f74685d73 Mon Sep 17 00:00:00 2001 From: John Hawthorn Date: Tue, 9 Jun 2015 16:09:32 -0700 Subject: [PATCH 6/8] Remove install.rb Use rake gem:install instead --- install.rb | 20 -------------------- 1 file changed, 20 deletions(-) delete mode 100644 install.rb diff --git a/install.rb b/install.rb deleted file mode 100644 index bf5e914c321..00000000000 --- a/install.rb +++ /dev/null @@ -1,20 +0,0 @@ -require 'fileutils' - -version = ARGV.pop - -%w( core api backend frontend sample ).each do |framework| - puts "Installing #{framework}..." - - Dir.chdir(framework) do - `gem build spree_#{framework}.gemspec` - `gem install spree_#{framework}-#{version}.gem --no-ri --no-rdoc` - FileUtils.remove "spree_#{framework}-#{version}.gem" - end - -end - -puts "Installing Spree..." - `gem build spree.gemspec` - `gem install spree-#{version}.gem --no-ri --no-rdoc ` - - FileUtils.remove "spree-#{version}.gem" From 65f79ec40288fe9a923a21c4560ff18f654faf3a Mon Sep 17 00:00:00 2001 From: John Hawthorn Date: Tue, 9 Jun 2015 16:43:12 -0700 Subject: [PATCH 7/8] Replace gem rake tasks Replaces the individual rake tasks for building, installing, and deploying gems with a simpler system in the top level Rakefile. Existing tasks were a mix of the PackageTask shipping with rubygems, and the bundler supplied GemHelpers. PackageTask worked fine, but did very little, and had a lot of output and temporary files left in pkg. GemHelpers were installed on all projects other than sample, but supplied a rake release, which did entirely the wrong thing for our project (tag and push to github, but only release one of the gems). The replacement should be simpler, always building/installing/releasing all 6 gems, and keeping their generated gems in the same place (toplevel pkg), and should remove confusion about whether we're building the toplevel solidus gem, or all of the project's gems. --- Rakefile | 70 +++++++++++++++++++++-------------------------- api/Rakefile | 14 ---------- backend/Rakefile | 14 ---------- core/Rakefile | 14 ---------- frontend/Rakefile | 14 ---------- sample/Rakefile | 14 ---------- 6 files changed, 31 insertions(+), 109 deletions(-) diff --git a/Rakefile b/Rakefile index 8171fd4f52e..c88ea7d5302 100644 --- a/Rakefile +++ b/Rakefile @@ -1,5 +1,4 @@ require 'rake' -require 'rubygems/package_task' require 'thor/group' begin require 'spree/testing_support/common_rake' @@ -8,11 +7,6 @@ rescue LoadError exit end -spec = eval(File.read('solidus.gemspec')) -Gem::PackageTask.new(spec) do |pkg| - pkg.gem_spec = spec -end - task default: :test desc "Runs all tests in all Spree engines" @@ -48,49 +42,47 @@ task :clean do end namespace :gem do - desc "run rake gem for all gems" - task :build do - %w(core api backend frontend sample ).each do |gem_name| - puts "########################### #{gem_name} #########################" - puts "Deleting #{gem_name}/pkg" - FileUtils.rm_rf("#{gem_name}/pkg") - cmd = "cd #{gem_name} && bundle exec rake gem"; puts cmd; system cmd + def version + File.read(File.expand_path("../SOLIDUS_VERSION", __FILE__)).strip + end + + def for_each_gem + %w(core api backend frontend sample).each do |gem_name| + yield "pkg/solidus_#{gem_name}-#{version}.gem" end - puts "Deleting pkg directory" - FileUtils.rm_rf("pkg") - cmd = "bundle exec rake gem"; puts cmd; system cmd + yield "pkg/solidus-#{version}.gem" end -end -namespace :gem do - desc "run gem install for all gems" - task :install do - version = File.read(File.expand_path("../SOLIDUS_VERSION", __FILE__)).strip + desc "Build all solidus gems" + task :build do + pkgdir = File.expand_path("../pkg", __FILE__) + FileUtils.mkdir_p pkgdir %w(core api backend frontend sample).each do |gem_name| - puts "########################### #{gem_name} #########################" - puts "Deleting #{gem_name}/pkg" - FileUtils.rm_rf("#{gem_name}/pkg") - cmd = "cd #{gem_name} && bundle exec rake gem"; puts cmd; system cmd - cmd = "cd #{gem_name}/pkg && gem install solidus_#{gem_name}-#{version}.gem"; puts cmd; system cmd + Dir.chdir(gem_name) do + sh "gem build solidus_#{gem_name}.gemspec" + mv "solidus_#{gem_name}-#{version}.gem", pkgdir + end end - puts "Deleting pkg directory" - FileUtils.rm_rf("pkg") - cmd = "bundle exec rake gem"; puts cmd; system cmd - cmd = "gem install pkg/solidus-#{version}.gem"; puts cmd; system cmd + + sh "gem build solidus.gemspec" + mv "solidus-#{version}.gem", pkgdir end -end -namespace :gem do - desc "Release all gems to gemcutter. Package spree components, then push spree" - task :release do - version = File.read(File.expand_path("../SOLIDUS_VERSION", __FILE__)).strip + desc "Install all solidus gems" + task :install => :build do + for_each_gem do |gem_path| + sh "gem install #{gem_path}" + end + end - %w(core api backend frontend sample).each do |gem_name| - puts "########################### #{gem_name} #########################" - cmd = "cd #{gem_name}/pkg && gem push solidus_#{gem_name}-#{version}.gem"; puts cmd; system cmd + desc "Release all gems to rubygems" + task :release => :build do + sh "git tag -a -m \"Version #{version}\" v#{version}" + + for_each_gem do |gem_path| + sh "gem push '#{gem_path}'" end - cmd = "gem push pkg/solidus-#{version}.gem"; puts cmd; system cmd end end diff --git a/api/Rakefile b/api/Rakefile index 4113ae2cc01..e3c093bb1e1 100644 --- a/api/Rakefile +++ b/api/Rakefile @@ -1,26 +1,12 @@ require 'rubygems' require 'rake' require 'rake/testtask' -require 'rake/packagetask' -require 'rubygems/package_task' require 'rspec/core/rake_task' require 'spree/testing_support/common_rake' require 'rails/all' -Bundler::GemHelper.install_tasks RSpec::Core::RakeTask.new -spec = eval(File.read('solidus_api.gemspec')) -Gem::PackageTask.new(spec) do |p| - p.gem_spec = spec -end - -desc "Release to gemcutter" -task :release do - version = File.read(File.expand_path("../../SOLIDUS_VERSION", __FILE__)).strip - cmd = "cd pkg && gem push solidus_api-#{version}.gem"; puts cmd; system cmd -end - task :default => :spec desc "Generates a dummy app for testing" diff --git a/backend/Rakefile b/backend/Rakefile index a8e0a885ecc..3c93e091063 100644 --- a/backend/Rakefile +++ b/backend/Rakefile @@ -1,25 +1,11 @@ require 'rubygems' require 'rake' require 'rake/testtask' -require 'rake/packagetask' -require 'rubygems/package_task' require 'rspec/core/rake_task' require 'spree/testing_support/common_rake' -Bundler::GemHelper.install_tasks RSpec::Core::RakeTask.new -spec = eval(File.read('solidus_backend.gemspec')) -Gem::PackageTask.new(spec) do |p| - p.gem_spec = spec -end - -desc "Release to gemcutter" -task :release do - version = File.read(File.expand_path("../../SOLIDUS_VERSION", __FILE__)).strip - cmd = "cd pkg && gem push solidus_backend-#{version}.gem"; puts cmd; system cmd -end - task :default => :spec desc "Generates a dummy app for testing" diff --git a/core/Rakefile b/core/Rakefile index 93a012166c1..8cbaba0a507 100644 --- a/core/Rakefile +++ b/core/Rakefile @@ -1,26 +1,12 @@ require 'rubygems' require 'rake' require 'rake/testtask' -require 'rake/packagetask' -require 'rubygems/package_task' require 'rspec/core/rake_task' require 'spree/testing_support/common_rake' load 'lib/tasks/exchanges.rake' -Bundler::GemHelper.install_tasks RSpec::Core::RakeTask.new -spec = eval(File.read('solidus_core.gemspec')) -Gem::PackageTask.new(spec) do |p| - p.gem_spec = spec -end - -desc "Release to gemcutter" -task :release do - version = File.read(File.expand_path("../../SOLIDUS_VERSION", __FILE__)).strip - cmd = "cd pkg && gem push solidus_core-#{version}.gem"; puts cmd; system cmd -end - task :default => :spec desc "Generates a dummy app for testing" diff --git a/frontend/Rakefile b/frontend/Rakefile index 257bc77e81f..a0aa102367e 100644 --- a/frontend/Rakefile +++ b/frontend/Rakefile @@ -1,25 +1,11 @@ require 'rubygems' require 'rake' require 'rake/testtask' -require 'rake/packagetask' -require 'rubygems/package_task' require 'rspec/core/rake_task' require 'spree/testing_support/common_rake' -Bundler::GemHelper.install_tasks RSpec::Core::RakeTask.new -spec = eval(File.read('solidus_frontend.gemspec')) -Gem::PackageTask.new(spec) do |p| - p.gem_spec = spec -end - -desc "Release to gemcutter" -task :release do - version = File.read(File.expand_path("../../SOLIDUS_VERSION", __FILE__)).strip - cmd = "cd pkg && gem push solidus_frontend-#{version}.gem"; puts cmd; system cmd -end - task :default => :spec desc "Generates a dummy app for testing" diff --git a/sample/Rakefile b/sample/Rakefile index ba3d538817d..5bce1a08a8a 100644 --- a/sample/Rakefile +++ b/sample/Rakefile @@ -1,22 +1,8 @@ require 'rake' require 'rake/testtask' -require 'rake/packagetask' -require 'rubygems/package_task' require 'rspec/core/rake_task' require 'spree/testing_support/common_rake' -spec = eval(File.read('solidus_sample.gemspec')) - -Gem::PackageTask.new(spec) do |p| - p.gem_spec = spec -end - -desc "Release to gemcutter" -task :release do - version = File.read(File.expand_path("../../SOLIDUS_VERSION", __FILE__)).strip - cmd = "cd pkg && gem push solidus_sample-#{version}.gem"; puts cmd; system cmd -end - desc "Generates a dummy app for testing" task :test_app do ENV['LIB_NAME'] = 'spree/sample' From 336104ded058dca93834f18734a5154e0155c677 Mon Sep 17 00:00:00 2001 From: John Hawthorn Date: Wed, 10 Jun 2015 11:08:15 -0700 Subject: [PATCH 8/8] Simplify rake test_app sh will fail when there is an exception, only difference here is that it will print out "rspec", which I consider to be an improvement. --- Rakefile | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Rakefile b/Rakefile index c88ea7d5302..0f752498845 100644 --- a/Rakefile +++ b/Rakefile @@ -10,11 +10,10 @@ end task default: :test desc "Runs all tests in all Spree engines" -task :test do - Rake::Task['test_app'].invoke +task :test => :test_app do %w(api backend core frontend sample).each do |gem_name| Dir.chdir("#{File.dirname(__FILE__)}/#{gem_name}") do - system("rspec") or exit!(1) + sh 'rspec' end end end