engine_cart 2.1.0 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7acd2e67ab4152ab60b9ecbb9a0de155774d8056b233dfe6ec92a73a2b975c81
4
- data.tar.gz: 8dd57d5c797097eedfa7489eeb359e4230d71e4360107e95bf8ae066212a8c3a
3
+ metadata.gz: c910fecebf1668fff3496adb5ffbb775f8b26d6172c0bd852a42b2347ab37c5b
4
+ data.tar.gz: c9f3f648c782203de8dec936e58057432db338ead895ac7f142829b130692e00
5
5
  SHA512:
6
- metadata.gz: e41340b993f1a2c2dff98270baace7bb630458cb43320700b77e88d8899f8584bfcdb2c6568e78b38ecfaa3da7d462b646d5bca247f564f32f739d3cf1cb57fb
7
- data.tar.gz: 77e96ce1b344c527be7cf28a72e38d8990c55b3a6bab64e456d10914426eeb3ecd7684c6e6e629d8bf41d1fcb1f87c64e740b6fe498394c52c55e872a55c4875
6
+ metadata.gz: 2a5b3d945948e1b95120b621085ca3b560ce1ae6e4f1b10b99edfa288e97a8d6a43e98db7b16ece7d736a8878d80384ff76baf3577ee00a509c1fe0d9c5e4473
7
+ data.tar.gz: 54d05bb765b09739ae6e53816b488efa619d2d5b3730c8b8b30db427c51b33a32a822282c5d4b94f7e5eb841b71d9baad8d9d7707e6d3ea8dd86c74bb50d0d8f
@@ -0,0 +1,33 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [ master ]
6
+ pull_request:
7
+ branches: [ master ]
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ubuntu-latest
12
+ strategy:
13
+ matrix:
14
+ ruby:
15
+ - 2.7
16
+ rails_version:
17
+ - 5.2.6
18
+ - 6.0.4.1
19
+ - 6.1.4.1
20
+ steps:
21
+ - uses: actions/checkout@v2
22
+ - name: Set up Ruby
23
+ uses: ruby/setup-ruby@v1
24
+ with:
25
+ ruby-version: ${{ matrix.ruby }}
26
+ - name: Install dependencies
27
+ run: bundle install
28
+ env:
29
+ RAILS_VERSION: ${{ matrix.rails_version }}
30
+ - name: Run tests
31
+ run: bundle exec rake
32
+ env:
33
+ RAILS_VERSION: ${{ matrix.rails_version }}
data/Gemfile CHANGED
@@ -4,3 +4,13 @@ source 'https://rubygems.org'
4
4
  gemspec
5
5
 
6
6
  gem 'rails', ENV['RAILS_VERSION'] if ENV['RAILS_VERSION']
7
+
8
+ case ENV['RAILS_VERSION']
9
+ when /^6.0/
10
+ gem 'sass-rails', '>= 6'
11
+ gem 'webpacker', '~> 4.0'
12
+ when /^5.[12]/
13
+ gem 'sprockets', '< 4.0'
14
+ gem 'sass-rails', '~> 5.0'
15
+ gem 'thor', '~> 0.20'
16
+ end
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- [![Build Status](https://travis-ci.org/cbeer/engine_cart.svg?branch=master)](https://travis-ci.org/cbeer/engine_cart) [![Gem Version](https://badge.fury.io/rb/engine_cart.svg)](http://badge.fury.io/rb/engine_cart)
1
+ [![Gem Version](https://badge.fury.io/rb/engine_cart.svg)](http://badge.fury.io/rb/engine_cart)
2
2
 
3
3
  # EngineCart
4
4
 
@@ -7,7 +7,7 @@ Rake tasks to generate a test application for a Rails Engine gem.
7
7
  If you have a Rails Engine and want to test it, the suggested approach is a small dummy application that loads up a Rails application with your engine loaded. This dummy application is usually checked into source control and maintained with the application. This works great, until you want to test:
8
8
 
9
9
  - different versions of Ruby (e.g. MRI and JRuby)
10
- - different versions of Rails (Rails 3.x, 4.0 and 4.1)
10
+ - different versions of Rails (Rails 5.0, 6.0)
11
11
  - different deployment environments (with and without devise, etc)
12
12
 
13
13
  where each scenario may involve different configurations, Gemfiles, etc.
data/Rakefile CHANGED
@@ -10,18 +10,27 @@ end
10
10
 
11
11
  task :generate_test_gem => ['engine_cart:setup'] do
12
12
  system("rm -rf .internal_test_gem")
13
- gem 'rails'
13
+ gem 'rails', ENV['RAILS_VERSION']
14
14
 
15
15
  rails_path = Gem.bin_path('railties', 'rails')
16
+ puts rails_path
16
17
 
17
- Bundler.with_clean_env do
18
- system("#{rails_path} plugin new internal_test_gem")
19
- end
20
- system("mv internal_test_gem .internal_test_gem")
18
+ require "rails/generators"
19
+ require "rails/generators/rails/plugin/plugin_generator"
20
+
21
+ pwd = Dir.pwd
22
+ Rails::Generators::PluginGenerator.start ['internal_test_gem']
23
+
24
+ Dir.chdir(pwd)
25
+
26
+ system("mv #{Dir.pwd}/internal_test_gem #{Dir.pwd}/.internal_test_gem")
21
27
 
22
28
  IO.write(".internal_test_gem/internal_test_gem.gemspec", File.open(".internal_test_gem/internal_test_gem.gemspec") {|f| f.read.gsub(/FIXME/, "DONTCARE")})
23
29
  IO.write(".internal_test_gem/internal_test_gem.gemspec", File.open(".internal_test_gem/internal_test_gem.gemspec") {|f| f.read.gsub(/TODO/, "DONTCARE")})
24
30
  IO.write(".internal_test_gem/internal_test_gem.gemspec", File.open(".internal_test_gem/internal_test_gem.gemspec") {|f| f.read.gsub(/.*homepage.*/, "")})
31
+ IO.write(".internal_test_gem/internal_test_gem.gemspec", File.open(".internal_test_gem/internal_test_gem.gemspec") {|f| f.read.gsub(/.*sqlite3.*/, "")})
32
+ IO.write(".internal_test_gem/internal_test_gem.gemspec", File.open(".internal_test_gem/internal_test_gem.gemspec") {|f| f.read.gsub(/.*source_code_uri.*/, "")})
33
+ IO.write(".internal_test_gem/internal_test_gem.gemspec", File.open(".internal_test_gem/internal_test_gem.gemspec") {|f| f.read.gsub(/.*changelog_uri.*/, "")})
25
34
 
26
35
  Rake::Task['engine_cart:inject_gemfile_extras'].invoke
27
36
  EngineCart.within_test_app do
@@ -43,10 +52,7 @@ task :generate_test_gem => ['engine_cart:setup'] do
43
52
  end
44
53
 
45
54
  system "echo '\ngem \"rspec-rails\"\n' >> Gemfile"
46
- if Gem.loaded_specs["rails"].version.to_s < '4.2'
47
- system %Q{echo '\ngem "sass", "~> 3.2.15"\n' >> Gemfile}
48
- system %Q{echo '\ngem "sprockets", "~> 2.11.0"\n' >> Gemfile}
49
- end
55
+
50
56
  Bundler.clean_system "bundle update --quiet"
51
57
  system "echo 'require \"engine_cart/rake_task\"\n' >> Rakefile"
52
58
 
data/engine_cart.gemspec CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_dependency "rails"
21
+ spec.add_dependency 'rails', '>= 5.0'
22
22
  spec.add_development_dependency "rake"
23
23
  spec.add_development_dependency "rspec"
24
24
  end
@@ -1,6 +1,6 @@
1
1
  module EngineCart
2
2
  def self.gemfile_stanza_check_line
3
- "engine_cart stanza: 0.10.0"
3
+ 'engine_cart stanza: 2.5.0'
4
4
  end
5
5
 
6
6
  def self.gemfile_stanza_text
@@ -27,15 +27,16 @@ module EngineCart
27
27
  else
28
28
  gem 'rails', ENV['RAILS_VERSION']
29
29
  end
30
- end
31
30
 
32
- case ENV['RAILS_VERSION']
33
- when /^4\.2/
34
- gem 'responders', '~> 2.0'
35
- gem 'sass-rails', '>= 5.0'
36
- gem 'coffee-rails', '~> 4.1.0'
37
- when /^4\.[01]/
38
- gem 'sass-rails', '< 5.0'
31
+ case ENV['RAILS_VERSION']
32
+ when /^6.0/
33
+ gem 'sass-rails', '>= 6'
34
+ gem 'webpacker', '~> 4.0'
35
+ when /^5.[12]/
36
+ gem 'sass-rails', '~> 5.0'
37
+ gem 'sprockets', '~> 3.7'
38
+ gem 'thor', '~> 0.20'
39
+ end
39
40
  end
40
41
  end
41
42
  # END ENGINE_CART BLOCK
@@ -34,9 +34,27 @@ namespace :engine_cart do
34
34
  require 'rails/generators'
35
35
  require 'rails/generators/rails/app/app_generator'
36
36
 
37
+ # Clear out our current bundle so that the rails generator can run with it's own bundle
38
+ backup_gemfile = ENV['BUNDLE_GEMFILE']
39
+ ENV.delete('BUNDLE_GEMFILE')
40
+
37
41
  # Using the Rails generator directly, instead of shelling out, to
38
42
  # ensure we use the right version of Rails.
39
- Rails::Generators::AppGenerator.start(['internal', '--skip_spring', *EngineCart.rails_options, ("-m #{EngineCart.template}" if EngineCart.template)].compact)
43
+ Rails::Generators::AppGenerator.start([
44
+ 'internal',
45
+ '--skip-git',
46
+ '--skip-keeps',
47
+ '--skip_spring',
48
+ '--skip-bootsnap',
49
+ '--skip-listen',
50
+ '--skip-test',
51
+ *EngineCart.rails_options,
52
+ ("-m #{EngineCart.template}" if EngineCart.template)
53
+ ].compact)
54
+
55
+ # Restore our gemfile
56
+ ENV['BUNDLE_GEMFILE'] = backup_gemfile
57
+
40
58
  end
41
59
  exit 0
42
60
  end
@@ -48,20 +66,13 @@ namespace :engine_cart do
48
66
  Rake::Task['engine_cart:clean'].invoke if File.exist? EngineCart.destination
49
67
  FileUtils.move "#{dir}/internal", "#{EngineCart.destination}"
50
68
 
51
- if Gem.loaded_specs["rails"].version.to_s < '4.2.4'
52
- has_web_console = false
53
-
54
- # Hack for https://github.com/rails/web-console/issues/150
69
+ if Gem.loaded_specs['rails'].version.to_s < '5.2.3'
70
+ # Hack for https://github.com/rails/rails/issues/35153
55
71
  gemfile = File.join(EngineCart.destination, 'Gemfile')
56
72
  IO.write(gemfile, File.open(gemfile) do |f|
57
73
  text = f.read
58
- has_web_console = text.match('web-console')
59
- text.gsub(/.*web-console.*/, "").gsub(/.*IRB console on exception pages.*/, "")
74
+ text.gsub(/^gem ["']sqlite3["']$/, 'gem "sqlite3", "~> 1.3.0"')
60
75
  end)
61
-
62
- File.open(gemfile, "a") do |f|
63
- f.puts 'gem "web-console", group: :development'
64
- end if has_web_console
65
76
  end
66
77
  end
67
78
  end
@@ -76,15 +87,21 @@ namespace :engine_cart do
76
87
  end
77
88
  end
78
89
 
90
+ desc 'find out if the generated app needs to be rebuilt'
91
+ task :test => [:setup] do
92
+ EngineCart.debug = true
93
+ if EngineCart.fingerprint_expired?
94
+ puts "Expired!"
95
+ exit 1
96
+ end
97
+ end
98
+
79
99
  desc "Create the test rails app"
80
100
  task :generate => [:setup] do
81
101
  if EngineCart.fingerprint_expired?
82
102
 
83
103
  # Create a new test rails app
84
104
  Rake::Task['engine_cart:create_test_rails_app'].invoke
85
-
86
- Bundler.clean_system "bundle install --quiet"
87
-
88
105
  Rake::Task['engine_cart:inject_gemfile_extras'].invoke
89
106
 
90
107
  # Copy our test app generators into the app and prepare it
@@ -1,3 +1,3 @@
1
1
  module EngineCart
2
- VERSION = '2.1.0'
2
+ VERSION = '2.4.0'
3
3
  end
data/lib/engine_cart.rb CHANGED
@@ -25,10 +25,32 @@ module EngineCart
25
25
  end
26
26
 
27
27
  def self.fingerprint_current?
28
- return false unless File.exist? stored_fingerprint_file
28
+
29
+ unless File.exist? stored_fingerprint_file
30
+ STDERR.puts "No finger print file found: #{stored_fingerprint_file}" if debug?
31
+ return false
32
+ end
29
33
  content = File.read(stored_fingerprint_file)
30
34
  data = JSON.parse(content, symbolize_names: true)
31
- data == fingerprint
35
+ calculated = fingerprint
36
+
37
+ return true if data == calculated
38
+ if debug?
39
+ STDERR.puts "Fingerprint mismatch:\n\n"
40
+
41
+ data.keys.each do |key|
42
+ case data[key]
43
+ when Array
44
+ data[key].zip(calculated[key]).each do |(stored, calc)|
45
+ STDERR.puts("#{key}:\nstored: #{stored}\ncalculate: #{calc}") if stored != calc
46
+ end
47
+ else
48
+ STDERR.puts("#{key}:\nstored: #{data[key]}\ncalculate: #{calculated[key]}") if data[key] != calculated[key]
49
+ end
50
+ end
51
+ end
52
+
53
+ false
32
54
  rescue
33
55
  false
34
56
  end
@@ -53,7 +75,7 @@ module EngineCart
53
75
 
54
76
  def self.fingerprinted_files
55
77
  Dir.glob("./*.gemspec").select { |f| File.file? f } +
56
- [Bundler.default_gemfile.to_s, Bundler.default_lockfile.to_s] +
78
+ [Bundler.default_gemfile.to_s] +
57
79
  Dir.glob("./db/migrate/*").select { |f| File.file? f } +
58
80
  Dir.glob("./lib/generators/**/**").select { |f| File.file? f } +
59
81
  Dir.glob("./spec/test_app_templates/**/**").select { |f| File.file? f } +
@@ -69,7 +91,7 @@ module EngineCart
69
91
  end
70
92
 
71
93
  def self.env_fingerprint
72
- { 'RUBY_DESCRIPTION' => RUBY_DESCRIPTION, 'BUNDLE_GEMFILE' => Bundler.default_gemfile.to_s }.reject { |k, v| v.nil? || v.empty? }.to_s
94
+ { RUBY_DESCRIPTION: RUBY_DESCRIPTION, BUNDLE_GEMFILE: Bundler.default_gemfile.to_s }.reject { |k, v| v.nil? || v.empty? }
73
95
  end
74
96
 
75
97
  def self.configuration(options = {})
@@ -92,4 +114,12 @@ module EngineCart
92
114
  Bundler.ui.warn EngineCart.gemfile_stanza_text
93
115
  end
94
116
  end
117
+
118
+ def self.debug=(debug)
119
+ @debug = debug
120
+ end
121
+
122
+ def self.debug?
123
+ @debug
124
+ end
95
125
  end
@@ -79,7 +79,7 @@ describe "EngineCart powered application" do
79
79
  File.open('spec/require_spec.rb', 'w') do |f|
80
80
  f.puts <<-EOF
81
81
  require 'spec_helper'
82
- require 'coffee-rails'
82
+ require 'sqlite3'
83
83
 
84
84
  describe ApplicationController do
85
85
  it "should be able to run specs that reference gems provided by the test app" do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: engine_cart
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Beer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-01-04 00:00:00.000000000 Z
11
+ date: 2021-12-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: '5.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: '5.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -60,8 +60,8 @@ extensions: []
60
60
  extra_rdoc_files: []
61
61
  files:
62
62
  - ".engine_cart.yml"
63
+ - ".github/workflows/ci.yml"
63
64
  - ".gitignore"
64
- - ".travis.yml"
65
65
  - Gemfile
66
66
  - LICENSE.txt
67
67
  - README.md
@@ -96,8 +96,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
96
96
  - !ruby/object:Gem::Version
97
97
  version: '0'
98
98
  requirements: []
99
- rubyforge_project:
100
- rubygems_version: 2.7.6
99
+ rubygems_version: 3.1.4
101
100
  signing_key:
102
101
  specification_version: 4
103
102
  summary: Helper for testing Rails Engines sanely
data/.travis.yml DELETED
@@ -1,8 +0,0 @@
1
- language: ruby
2
- sudo: false
3
- rvm:
4
- - 2.6.0-rc1
5
- - 2.5.3
6
-
7
- env:
8
- - "RAILS_VERSION=5.2.2"