cbeer / engine_cart

Rake tasks to generate test applications for Rails Engines
MIT License
18 stars 16 forks source link

Gemfile stanza is not replaced on update #79

Open dazza-codes opened 7 years ago

dazza-codes commented 7 years ago

In the hyrax master branch (May 19, 2017), the engine cart is appending a new Gemfile stanza when one already exists. The update should replace an existing stanza. How engine-cart detects the need to update may be a part of this too.

As background/context for this issue:

$ git remote -v
origin  git@github.com:projecthydra-labs/hyrax.git (fetch)
origin  git@github.com:projecthydra-labs/hyrax.git (push)

$ git lol -n2
* 57d81b4 (HEAD -> master, origin/master, origin/HEAD) Don't overwrite the data key
* 716c95c Don't put objects in the repository when they aren't required for the test

$ rbenv versions
  system
* 2.4.1 (set by /users/dlweber/.rbenv/version)
$ gem --version
2.6.11
$ bundle --version
Bundler version 1.14.6

$ rbenv which rails
/data/src/dlss/hydra/hyrax/.bundle/bin/rails
$ rails --version
Rails 5.1.1

##
## This was a clean hyrax git-clone (no Gemfile.lock or .internal_test_app existed)
## After running bundle install and EC:generate, the Gemfile has a new EC stanza
##

$ git diff
diff --git a/Gemfile b/Gemfile
index 1a6710d..b116551 100644
--- a/Gemfile
+++ b/Gemfile
@@ -48,3 +48,37 @@ end
 unless File.exist?(file)
   eval_gemfile File.expand_path('spec/test_app_templates/Gemfile.extra', File.dirname(__FILE__))
 end
+# BEGIN ENGINE_CART BLOCK
+# engine_cart: 1.1.0
+# engine_cart stanza: 0.10.0
+# the below comes from engine_cart, a gem used to test this Rails engine gem in the context of a Rails app.
+file = File.expand_path('Gemfile', ENV['ENGINE_CART_DESTINATION'] || ENV['RAILS_ROOT'] || File.expand_path('.internal_test_app', File.dirname(__FILE__)))
+if File.exist?(file)
+  begin
+    eval_gemfile file
+  rescue Bundler::GemfileError => e
+    Bundler.ui.warn '[EngineCart] Skipping Rails application dependencies:'
+    Bundler.ui.warn e.message
+  end
+else
+  Bundler.ui.warn "[EngineCart] Unable to find test application dependencies in #{file}, using placeholder dependencies"
+
+  if ENV['RAILS_VERSION']
+    if ENV['RAILS_VERSION'] == 'edge'
+      gem 'rails', github: 'rails/rails'
+      ENV['ENGINE_CART_RAILS_OPTIONS'] = '--edge --skip-turbolinks'
+    else
+      gem 'rails', ENV['RAILS_VERSION']
+    end
+  end
+
+  case ENV['RAILS_VERSION']
+  when /^4.2/
+    gem 'responders', '~> 2.0'
+    gem 'sass-rails', '>= 5.0'
+    gem 'coffee-rails', '~> 4.1.0'
+  when /^4.[01]/
+    gem 'sass-rails', '< 5.0'
+  end
+end
+# END ENGINE_CART BLOCK