solidus_dev_support 0.4.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (29) hide show
  1. checksums.yaml +4 -4
  2. data/.gem_release.yml +5 -0
  3. data/.gitignore +2 -1
  4. data/.rubocop-https---relaxed-ruby-style-rubocop-yml +3 -24
  5. data/CHANGELOG.md +69 -7
  6. data/Gemfile +4 -0
  7. data/README.md +50 -9
  8. data/lib/solidus_dev_support/extension.rb +54 -4
  9. data/lib/solidus_dev_support/rake_tasks.rb +15 -0
  10. data/lib/solidus_dev_support/rspec/rails_helper.rb +3 -1
  11. data/lib/solidus_dev_support/templates/extension/Gemfile +7 -0
  12. data/lib/solidus_dev_support/templates/extension/LICENSE +1 -1
  13. data/lib/solidus_dev_support/templates/extension/README.md +1 -1
  14. data/lib/solidus_dev_support/templates/extension/Rakefile +1 -1
  15. data/lib/solidus_dev_support/templates/extension/bin/rails +7 -4
  16. data/lib/solidus_dev_support/templates/extension/bin/rake +7 -0
  17. data/lib/solidus_dev_support/templates/extension/bin/sandbox.tt +72 -0
  18. data/lib/solidus_dev_support/templates/extension/bin/setup +1 -1
  19. data/lib/solidus_dev_support/templates/extension/extension.gemspec.tt +36 -0
  20. data/lib/solidus_dev_support/templates/extension/gem_release.yml.tt +1 -1
  21. data/lib/solidus_dev_support/templates/extension/lib/%file_name%.rb.tt +1 -0
  22. data/lib/solidus_dev_support/templates/extension/lib/%file_name%/engine.rb.tt +1 -1
  23. data/lib/solidus_dev_support/templates/extension/lib/%file_name%/version.rb.tt +1 -1
  24. data/lib/solidus_dev_support/templates/extension/lib/generators/%file_name%/install/install_generator.rb.tt +3 -3
  25. data/lib/solidus_dev_support/templates/extension/rspec +2 -1
  26. data/lib/solidus_dev_support/templates/extension/rubocop.yml +0 -12
  27. data/lib/solidus_dev_support/version.rb +1 -1
  28. metadata +6 -3
  29. data/lib/solidus_dev_support/templates/extension/extension.gemspec.erb +0 -37
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 389395ffb560031a111e0baaba5c71d9b7f2a8ccc6ca750ea2577fb214250410
4
- data.tar.gz: a0c401f0b752a9f87dadbb44eb862f4cf43cde5e3337218f974a37333da64436
3
+ metadata.gz: f56dae194c8b778da9182c440ef9e3114dd3fc85f95884199c4809eda2d902e3
4
+ data.tar.gz: e8b766266ff7d54e13f706fb0a57682cb4578f834b79ef50d89b401ae1728304
5
5
  SHA512:
6
- metadata.gz: 8f85910f752ebe285a4dedc588ec00e16c934649b04a754298c907ef1c041b0dee5e86e7cd4702ca6e8bb82947e6533e13ec5043fba086fc3c71dcb4aab01db4
7
- data.tar.gz: 5fb1ae79621a936f5abd625205f1980998a7f6769851f9402d3497c2b73d5e2601aa08e0533b1e7f4fd443eecebf039796cf41ddcc3f46a9e8544ed6f39d57b0
6
+ metadata.gz: 0db6603ab2abbda31d662be42a9195031a4e6f810e16d4735942189593ac3cae15c526e962f5162a0efb2b5f4412df6f446da6379e03c9e4753fcaf6a73ad75f
7
+ data.tar.gz: ecffb2ae71fc3188152defc95d8cf0ca3a9a1a26472bc5d6195aa3593e63bdb0804e09be1fa49a9d5d042917a9302c49e968d04d2d7b11dc1679e7a823e44733
@@ -0,0 +1,5 @@
1
+ bump:
2
+ recurse: false
3
+ file: 'lib/solidus_dev_support/version.rb'
4
+ message: Bump SolidusDevSupport to %{version}
5
+ tag: true
data/.gitignore CHANGED
@@ -7,7 +7,8 @@
7
7
  /spec/reports/
8
8
  /tmp/
9
9
  /vendor/bundle/
10
- Gemfile.lock
10
+ /Gemfile.lock
11
+ /Gemfile-local*
11
12
 
12
13
  # rspec failure tracking
13
14
  .rspec_status
@@ -1,5 +1,5 @@
1
1
  # Relaxed.Ruby.Style
2
- ## Version 2.4
2
+ ## Version 2.5
3
3
 
4
4
  Style/Alias:
5
5
  Enabled: false
@@ -145,30 +145,9 @@ Lint/AssignmentInCondition:
145
145
  Enabled: false
146
146
  StyleGuide: https://relaxed.ruby.style/#lintassignmentincondition
147
147
 
148
- Metrics/AbcSize:
148
+ Layout/LineLength:
149
149
  Enabled: false
150
150
 
151
- Metrics/BlockNesting:
152
- Enabled: false
153
-
154
- Metrics/ClassLength:
155
- Enabled: false
156
-
157
- Metrics/ModuleLength:
158
- Enabled: false
159
-
160
- Metrics/CyclomaticComplexity:
161
- Enabled: false
162
-
163
- Metrics/LineLength:
164
- Enabled: false
165
-
166
- Metrics/MethodLength:
167
- Enabled: false
168
-
169
- Metrics/ParameterLists:
170
- Enabled: false
171
-
172
- Metrics/PerceivedComplexity:
151
+ Metrics:
173
152
  Enabled: false
174
153
 
@@ -5,7 +5,63 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project
6
6
  adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
- ## [Unreleased]
8
+ ## [1.0.1] - 2020-02-17
9
+
10
+ ### Fixed
11
+
12
+ - Fixed missing factory definitions when using `modify` on Solidus factories
13
+
14
+ ## [1.0.0] - 2020-02-07
15
+
16
+ ### Added
17
+
18
+ - Added a binstub for `rake` to the extension generator
19
+ - Added the ability for the generator to reuse existing data for the gemspec
20
+
21
+ ### Fixed
22
+
23
+ - Fixed Dependabot throwing an error because of `eval_gemfile` in the Gemfile
24
+
25
+ ## [0.6.0] - 2020-01-20
26
+
27
+ ### Added
28
+
29
+ - Added support for a local Gemfile for local development dependencies (e.g. 'pry-debug')
30
+ - Added a `bin/sandbox` script to all extension for local development with `bin/rails` support.
31
+
32
+ ### Changed
33
+
34
+ - The default rake task no longer re-generates the `test_app` each time it runs.
35
+ In order to get that behavior back simply call clobber before launching it:
36
+ `bin/rake clobber default`
37
+
38
+ ### Fixed
39
+
40
+ - Fixed generated extensions isolating the wrong namespace
41
+
42
+ ## [0.5.0] - 2020-01-16
43
+
44
+ ### Added
45
+
46
+ - Added `--require spec_helper` to the generated `.rspec`
47
+
48
+ ### Fixed
49
+
50
+ - Replaced "Spree" with "Solidus" in the license of generated extensions
51
+
52
+ ### Changed
53
+
54
+ - Updated gem-release to use tags instead of branches for new releases
55
+
56
+ ## [0.4.1] - 2020-01-15
57
+
58
+ ### Fixed
59
+
60
+ - Fixed the generated RuboCop config inheriting from this gem's dev-only config
61
+ - Fixed the generated extension not requiring the `version` file
62
+ - Fixed the generator not properly marking `bin/` files as executable
63
+
64
+ ## [0.4.0] - 2020-01-10
9
65
 
10
66
  ### Added
11
67
 
@@ -29,7 +85,7 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
29
85
  - Removed the `-v` option from the `solidus` executable
30
86
  - Removed the factory_bot gem from the Gemfile
31
87
 
32
- ## [0.3.0] - 2019-01-10
88
+ ## [0.3.0] - 2020-01-10
33
89
 
34
90
  ### Added
35
91
 
@@ -80,8 +136,14 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
80
136
 
81
137
  Initial release.
82
138
 
83
- [Unreleased]: https://github.com/solidusio-contrib/solidus_dev_support/compare/v0.3.0...HEAD
84
- [0.3.0]: https://github.com/solidusio-contrib/solidus_dev_support/compare/v0.2.0...v0.3.0
85
- [0.2.0]: https://github.com/solidusio-contrib/solidus_dev_support/compare/v0.1.1...v0.2.0
86
- [0.1.1]: https://github.com/solidusio-contrib/solidus_dev_support/compare/v0.1.0...v0.1.1
87
- [0.1.0]: https://github.com/solidusio-contrib/solidus_dev_support/releases/tag/v0.1.0
139
+ [Unreleased]: https://github.com/solidusio/solidus_dev_support/compare/v1.0.1...HEAD
140
+ [1.0.1]: https://github.com/solidusio/solidus_dev_support/compare/v1.0.0...v1.0.1
141
+ [1.0.0]: https://github.com/solidusio/solidus_dev_support/compare/v0.6.0...v1.0.0
142
+ [0.6.0]: https://github.com/solidusio/solidus_dev_support/compare/v0.5.0...v0.6.0
143
+ [0.5.0]: https://github.com/solidusio/solidus_dev_support/compare/v0.4.1...v0.5.0
144
+ [0.4.1]: https://github.com/solidusio/solidus_dev_support/compare/v0.4.0...v0.4.1
145
+ [0.4.0]: https://github.com/solidusio/solidus_dev_support/compare/v0.3.0...v0.4.0
146
+ [0.3.0]: https://github.com/solidusio/solidus_dev_support/compare/v0.2.0...v0.3.0
147
+ [0.2.0]: https://github.com/solidusio/solidus_dev_support/compare/v0.1.1...v0.2.0
148
+ [0.1.1]: https://github.com/solidusio/solidus_dev_support/compare/v0.1.0...v0.1.1
149
+ [0.1.0]: https://github.com/solidusio/solidus_dev_support/releases/tag/v0.1.0
data/Gemfile CHANGED
@@ -21,3 +21,7 @@ group :test do
21
21
  gem 'pg'
22
22
  gem 'sqlite3'
23
23
  end
24
+
25
+ # Use a local Gemfile to include development dependencies that might not be
26
+ # relevant for the project or for other contributors, e.g.: `gem 'pry-debug'`.
27
+ eval_gemfile 'Gemfile-local' if File.exist? 'Gemfile-local'
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # solidus_dev_support
2
2
 
3
- [![CircleCI](https://circleci.com/gh/solidusio-contrib/solidus_dev_support.svg?style=svg)](https://circleci.com/gh/solidusio-contrib/solidus_dev_support)
3
+ [![CircleCI](https://circleci.com/gh/solidusio/solidus_dev_support.svg?style=svg)](https://circleci.com/gh/solidusio/solidus_dev_support)
4
4
 
5
5
  This gem contains common development functionality for Solidus extensions.
6
6
 
@@ -34,6 +34,42 @@ $ solidus extension my_awesome_extension
34
34
  This will generate the basic extension structure, already configured to use all the shiny helpers
35
35
  in solidus_dev_support.
36
36
 
37
+ #### Updating existing extensions
38
+
39
+ If you have an existing extension and want to update it to use the latest standards from this gem,
40
+ you can run the following in the extension's directory:
41
+
42
+ ```console
43
+ $ solidus extension .
44
+ ```
45
+
46
+ In case of conflicting files, you will be prompted for an action. You can overwrite the files with
47
+ the new version, keep the current version or view the diff and only apply the adjustments that make
48
+ sense to you.
49
+
50
+ ### Sandbox app
51
+
52
+ When developing an extension you will surely need to try it out within a Rails app with Solidus
53
+ installed. Using solidus_dev_support your extension will have a `bin/rails` executable that will
54
+ operate on a _sandbox_ app (creating it if necessary).
55
+
56
+ The path for the sandbox app is `./sandbox` and `bin/rails` will forward any Rails command
57
+ to `sandbox/bin/rails`.
58
+
59
+ Example:
60
+
61
+ ```bash
62
+ $ bin/rails server
63
+ => Booting Puma
64
+ => Rails 6.0.2.1 application starting in development
65
+ * Listening on tcp://127.0.0.1:3000
66
+ Use Ctrl-C to stop
67
+ ```
68
+
69
+ #### Rebuilding the sandbox app
70
+
71
+ To rebuild the sandbox app just remove the `./sandbox` folder or run `bin/sandbox`.
72
+
37
73
  ### RSpec helpers
38
74
 
39
75
  This gem provides some useful helpers for RSpec to setup an extension's test environment easily.
@@ -123,15 +159,16 @@ releases for your gem.
123
159
  For instance, you can run the following to release a new minor version:
124
160
 
125
161
  ```console
126
- $ gem bump --version minor --tag --release
162
+ $ gem bump -v minor -r
127
163
  ```
128
164
 
129
165
  The above command will:
130
166
 
131
- * bump the gem version to the next minor;
132
- * commit the change and push it to `upstream/master`;
167
+ * bump the gem version to the next minor (you can also use `patch`, `major` or a specific version
168
+ number);
169
+ * commit the change and push it to `origin/master`;
133
170
  * create a Git tag;
134
- * push the tag to the `upstream` remote;
171
+ * push the tag to the `origin` remote;
135
172
  * release the new version on RubyGems.
136
173
 
137
174
  You can refer to
@@ -146,7 +183,7 @@ To install extension-related Rake tasks, add this to your `Rakefile`:
146
183
  require 'solidus_dev_support/rake_tasks'
147
184
  SolidusDevSupport::RakeTasks.install
148
185
 
149
- task default: %w[extension:test_app extension:specs]
186
+ task default: 'extension:specs'
150
187
  ```
151
188
 
152
189
  (If your extension used the legacy extension Rakefile, then you should completely replace its
@@ -157,7 +194,11 @@ This will provide the following tasks:
157
194
  - `extension:test_app`, which generates a dummy app for your extension
158
195
  - `extension:specs` (default), which runs the specs for your extension
159
196
 
160
- It also allows you to run `rake` to, respectively, generate a test app and run all tests.
197
+ If your extension requires the `test_app` to be always recreated you can do so by running:
198
+
199
+ ```rb
200
+ bin/rake extension:test_app extension:specs
201
+ ```
161
202
 
162
203
  ## Development
163
204
 
@@ -165,8 +206,8 @@ After checking out the repo, run `bin/setup` to install dependencies. Then, run
165
206
  the tests. You can also run `bin/console` for an interactive prompt that will allow you to
166
207
  experiment.
167
208
 
168
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new
169
- version, update the version number in `version.rb`, and then run `bundle exec rake release`, which
209
+ To install this gem onto your local machine, run `bin/rake install`. To release a new
210
+ version, update the version number in `version.rb`, and then run `bin/rake release`, which
170
211
  will create a git tag for the version, push git commits and tags, and push the `.gem` file to
171
212
  [rubygems.org](https://rubygems.org).
172
213
 
@@ -22,11 +22,11 @@ module SolidusDevSupport
22
22
  directory '.circleci', "#{path}/.circleci"
23
23
  directory '.github', "#{path}/.github"
24
24
 
25
- Dir["#{file_name}/bin/*"].each do |executable|
26
- make_executable executable
25
+ Dir["#{path}/bin/*"].each do |bin|
26
+ make_executable bin
27
27
  end
28
28
 
29
- template 'extension.gemspec.erb', "#{path}/#{file_name}.gemspec"
29
+ template 'extension.gemspec', "#{path}/#{file_name}.gemspec"
30
30
  template 'Gemfile', "#{path}/Gemfile"
31
31
  template 'gitignore', "#{path}/.gitignore"
32
32
  template 'gem_release.yml.tt', "#{path}/.gem_release.yml"
@@ -51,6 +51,56 @@ module SolidusDevSupport
51
51
 
52
52
  @root = File.dirname(path)
53
53
  @path = File.join(@root, @file_name)
54
+
55
+ @gemspec = existing_gemspec || default_gemspec
56
+ end
57
+
58
+ def gemspec_path
59
+ @gemspec_path ||= File.join(path, "#{file_name}.gemspec")
60
+ end
61
+
62
+ def default_gemspec
63
+ @default_gemspec ||= Gem::Specification.new(@file_name, '0.0.1') do |gem|
64
+ gem.author = git('config user.name', 'TODO: Write your name')
65
+ gem.description = 'TODO: Write a longer description or delete this line.'
66
+ gem.email = git('config user.email', 'TODO: Write your email address')
67
+ gem.homepage = default_homepage
68
+ gem.license = 'BSD-3-Clause'
69
+ gem.metadata['changelog_uri'] = default_homepage + '/releases'
70
+ gem.summary = 'TODO: Write a short summary, because RubyGems requires one.'
71
+ end
72
+ end
73
+
74
+ def existing_gemspec
75
+ return unless File.exist?(gemspec_path)
76
+
77
+ @existing_gemspec ||= Gem::Specification.load(gemspec_path).tap do |spec|
78
+ spec.author ||= default_gemspec.author
79
+ spec.email ||= default_gemspec.email
80
+ spec.homepage ||= default_gemspec.homepage
81
+ spec.license ||= default_gemspec.license
82
+ spec.metadata['changelog_uri'] ||= default_gemspec.metadata[:changelog_uri]
83
+ spec.summary ||= default_gemspec.summary
84
+ end
85
+ end
86
+
87
+ def default_homepage
88
+ @default_homepage ||= git(
89
+ 'remote get-url origin',
90
+ "git@github.com:#{github_user}/#{file_name}.git"
91
+ ).sub(
92
+ %r{^.*github\.com.([^/]+)/([^/\.]+).*$},
93
+ 'https://github.com/\1/\2'
94
+ )
95
+ end
96
+
97
+ def github_user
98
+ @github_user ||= git('config github.user', '[USERNAME]')
99
+ end
100
+
101
+ def git(command, default)
102
+ result = `git #{command} 2> /dev/null`.strip
103
+ result.empty? ? default : result
54
104
  end
55
105
 
56
106
  def make_executable(path)
@@ -59,7 +109,7 @@ module SolidusDevSupport
59
109
  path.chmod(executable)
60
110
  end
61
111
 
62
- attr_reader :root, :path, :file_name, :class_name
112
+ attr_reader :root, :path, :file_name, :class_name, :gemspec
63
113
  end
64
114
 
65
115
  def self.source_root
@@ -21,6 +21,7 @@ module SolidusDevSupport
21
21
 
22
22
  def install
23
23
  install_test_app_task
24
+ install_dev_app_task
24
25
  install_rspec_task
25
26
  end
26
27
 
@@ -34,10 +35,24 @@ module SolidusDevSupport
34
35
  ::CLOBBER.include test_app_path
35
36
 
36
37
  namespace :extension do
38
+ # We need to go back to the gem root since the upstream
39
+ # extension:test_app changes the working directory to be the dummy app.
37
40
  task :test_app do
38
41
  Rake::Task['extension:test_app'].invoke
39
42
  cd root
40
43
  end
44
+
45
+ directory ENV['DUMMY_PATH'] do
46
+ Rake::Task['extension:test_app'].invoke
47
+ end
48
+ end
49
+ end
50
+
51
+ def install_dev_app_task
52
+ desc "Creates a sandbox application for simulating the Extension code in a deployed Rails app"
53
+ task :sandbox do
54
+ warn "DEPRECATED TASK: This task is here just for parity with solidus, please use bin/sandbox directly."
55
+ exec("bin/sandbox", gemspec.name)
41
56
  end
42
57
  end
43
58
 
@@ -12,7 +12,7 @@ require 'solidus_dev_support'
12
12
 
13
13
  require 'rspec/rails'
14
14
  require 'database_cleaner'
15
- require 'factory_bot_rails'
15
+ require 'factory_bot'
16
16
  require 'ffaker'
17
17
 
18
18
  require 'spree/testing_support/authorization_helpers'
@@ -22,6 +22,8 @@ require 'spree/testing_support/preferences'
22
22
  require 'spree/testing_support/controller_requests'
23
23
  require 'solidus_dev_support/testing_support/preferences'
24
24
 
25
+ FactoryBot.find_definitions
26
+
25
27
  RSpec.configure do |config|
26
28
  config.infer_spec_type_from_file_location!
27
29
 
@@ -24,3 +24,10 @@ else
24
24
  end
25
25
 
26
26
  gemspec
27
+
28
+ # Use a local Gemfile to include development dependencies that might not be
29
+ # relevant for the project or for other contributors, e.g. pry-byebug.
30
+ #
31
+ # We use `send` instead of calling `eval_gemfile` to work around an issue with
32
+ # how Dependabot parses projects: https://github.com/dependabot/dependabot-core/issues/1658.
33
+ send(:eval_gemfile, 'Gemfile-local') if File.exist? 'Gemfile-local'
@@ -9,7 +9,7 @@ are permitted provided that the following conditions are met:
9
9
  * Redistributions in binary form must reproduce the above copyright notice,
10
10
  this list of conditions and the following disclaimer in the documentation
11
11
  and/or other materials provided with the distribution.
12
- * Neither the name Spree nor the names of its contributors may be used to
12
+ * Neither the name Solidus nor the names of its contributors may be used to
13
13
  endorse or promote products derived from this software without specific
14
14
  prior written permission.
15
15
 
@@ -26,7 +26,7 @@ First bundle your dependencies, then run `rake`. `rake` will default to building
26
26
 
27
27
  ```shell
28
28
  bundle
29
- bundle exec rake
29
+ bin/rake
30
30
  ```
31
31
 
32
32
  When testing your application's integration with this extension you may use its factories.
@@ -3,4 +3,4 @@
3
3
  require 'solidus_dev_support/rake_tasks'
4
4
  SolidusDevSupport::RakeTasks.install
5
5
 
6
- task default: %w[extension:test_app extension:specs]
6
+ task default: 'extension:specs'
@@ -2,12 +2,15 @@
2
2
 
3
3
  # frozen_string_literal: true
4
4
 
5
- app_root = 'spec/dummy'
5
+ app_root = 'sandbox'
6
6
 
7
7
  unless File.exist? "#{app_root}/bin/rails"
8
- system "bin/rake", app_root or begin # rubocop:disable Style/AndOr
9
- warn "Automatic creation of the dummy app failed"
10
- exit 1
8
+ warn 'Creating the sandbox app...'
9
+ Dir.chdir "#{__dir__}/.." do
10
+ system "#{__dir__}/sandbox" or begin # rubocop:disable Style/AndOr
11
+ warn 'Automatic creation of the sandbox app failed'
12
+ exit 1
13
+ end
11
14
  end
12
15
  end
13
16
 
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require "rubygems"
5
+ require "bundler/setup"
6
+
7
+ load Gem.bin_path("rake", "rake")
@@ -0,0 +1,72 @@
1
+ #!/usr/bin/env bash
2
+
3
+ set -e
4
+
5
+ case "$DB" in
6
+ postgres|postgresql)
7
+ RAILSDB="postgresql"
8
+ ;;
9
+ mysql)
10
+ RAILSDB="mysql"
11
+ ;;
12
+ sqlite|'')
13
+ RAILSDB="sqlite3"
14
+ ;;
15
+ *)
16
+ echo "Invalid DB specified: $DB"
17
+ exit 1
18
+ ;;
19
+ esac
20
+
21
+ extension_name="<%= file_name %>"
22
+
23
+ # Stay away from the bundler env of the containing extension.
24
+ function unbundled {
25
+ ruby -rbundler -e'b = proc {system *ARGV}; Bundler.respond_to?(:with_unbundled_env) ? Bundler.with_unbundled_env(&b) : Bundler.with_clean_env(&b)' -- $@
26
+ }
27
+
28
+ rm -rf ./sandbox
29
+ unbundled bundle exec rails new sandbox --database="$RAILSDB" \
30
+ --skip-bundle \
31
+ --skip-git \
32
+ --skip-keeps \
33
+ --skip-rc \
34
+ --skip-spring \
35
+ --skip-test \
36
+ --skip-javascript
37
+
38
+ if [ ! -d "sandbox" ]; then
39
+ echo 'sandbox rails application failed'
40
+ exit 1
41
+ fi
42
+
43
+ cd ./sandbox
44
+ cat <<RUBY >> Gemfile
45
+
46
+ gem '$extension_name', path: '..'
47
+ gem 'solidus_auth_devise', '>= 2.1.0'
48
+ gem 'rails-i18n'
49
+ gem 'solidus_i18n'
50
+
51
+ group :test, :development do
52
+ platforms :mri do
53
+ gem 'pry-byebug'
54
+ end
55
+ end
56
+ RUBY
57
+
58
+ unbundled bundle install --gemfile Gemfile
59
+
60
+ unbundled bundle exec rake db:drop db:create
61
+
62
+ unbundled bundle exec rails generate spree:install \
63
+ --auto-accept \
64
+ --user_class=Spree::User \
65
+ --enforce_available_locales=true \
66
+ $@
67
+
68
+ unbundled bundle exec rails generate solidus:auth:install
69
+
70
+ echo
71
+ echo "🚀 Sandbox app successfully created for $extension_name!"
72
+ echo "🚀 This app is intended for test purposes."
@@ -5,4 +5,4 @@ set -vx
5
5
 
6
6
  gem install bundler --conservative
7
7
  bundle update
8
- bundle exec rake extension:test_app
8
+ bin/rake clobber
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'lib/<%= file_name %>/version'
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = '<%= file_name %>'
7
+ spec.version = <%= class_name %>::VERSION
8
+ spec.authors = <%= gemspec.authors.inspect.gsub('"', "'") %>
9
+ spec.email = '<%= gemspec.email %>'
10
+
11
+ spec.summary = '<%= gemspec.summary %>'
12
+ spec.description = '<%= gemspec.description %>'
13
+ spec.homepage = '<%= gemspec.homepage %>'
14
+ spec.license = '<%= gemspec.license %>'
15
+
16
+ spec.metadata['homepage_uri'] = spec.homepage
17
+ spec.metadata['source_code_uri'] = '<%= gemspec.homepage %>'
18
+ spec.metadata['changelog_uri'] = '<%= gemspec.metadata["changelog_uri"] %>'
19
+
20
+ spec.required_ruby_version = Gem::Requirement.new('~> 2.4')
21
+
22
+ # Specify which files should be added to the gem when it is released.
23
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
24
+ files = Dir.chdir(__dir__) { `git ls-files -z`.split("\x0") }
25
+
26
+ spec.files = files.grep_v(%r{^(test|spec|features)/})
27
+ spec.test_files = files.grep(%r{^(test|spec|features)/})
28
+ spec.bindir = "exe"
29
+ spec.executables = files.grep(%r{^exe/}) { |f| File.basename(f) }
30
+ spec.require_paths = ["lib"]
31
+
32
+ spec.add_dependency 'solidus_core', ['>= 2.0.0', '< 3']
33
+ spec.add_dependency 'solidus_support', '~> 0.4.0'
34
+
35
+ spec.add_development_dependency 'solidus_dev_support'
36
+ end
@@ -2,4 +2,4 @@ bump:
2
2
  recurse: false
3
3
  file: 'lib/<%=file_name%>/version.rb'
4
4
  message: Bump <%=class_name%> to %{version}
5
- branch: true
5
+ tag: true
@@ -3,4 +3,5 @@
3
3
  require 'solidus_core'
4
4
  require 'solidus_support'
5
5
 
6
+ require '<%=file_name%>/version'
6
7
  require '<%=file_name%>/engine'
@@ -6,7 +6,7 @@ module <%= class_name %>
6
6
  class Engine < Rails::Engine
7
7
  include SolidusSupport::EngineExtensions::Decorators
8
8
 
9
- isolate_namespace Spree
9
+ isolate_namespace ::Spree
10
10
 
11
11
  engine_name '<%= file_name %>'
12
12
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module <%= class_name %>
4
- VERSION = '0.0.1'
4
+ VERSION = '<%= gemspec.version %>'
5
5
  end
@@ -16,15 +16,15 @@ module <%= class_name %>
16
16
  end
17
17
 
18
18
  def add_migrations
19
- run 'bundle exec rake railties:install:migrations FROM=<%= file_name %>'
19
+ run 'bin/rails railties:install:migrations FROM=<%= file_name %>'
20
20
  end
21
21
 
22
22
  def run_migrations
23
23
  run_migrations = options[:auto_run_migrations] || ['', 'y', 'Y'].include?(ask('Would you like to run the migrations now? [Y/n]'))
24
24
  if run_migrations
25
- run 'bundle exec rake db:migrate'
25
+ run 'bin/rails db:migrate'
26
26
  else
27
- puts 'Skipping rake db:migrate, don\'t forget to run it!' # rubocop:disable Rails/Output
27
+ puts 'Skipping bin/rails db:migrate, don\'t forget to run it!' # rubocop:disable Rails/Output
28
28
  end
29
29
  end
30
30
  end
@@ -1 +1,2 @@
1
- --color
1
+ --color
2
+ --require spec_helper
@@ -1,14 +1,2 @@
1
1
  require:
2
2
  - solidus_dev_support/rubocop
3
-
4
- inherit_gem:
5
- solidus_dev_support: .rubocop.yml
6
-
7
- AllCops:
8
- Exclude:
9
- - spec/dummy/**/*
10
- - vendor/**/*
11
-
12
- Rails/SkipsModelValidations:
13
- Exclude:
14
- - db/migrate/**/*
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SolidusDevSupport
4
- VERSION = "0.4.0"
4
+ VERSION = "1.0.1"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solidus_dev_support
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alessandro Desantis
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-01-10 00:00:00.000000000 Z
11
+ date: 2020-02-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: apparition
@@ -291,6 +291,7 @@ extensions: []
291
291
  extra_rdoc_files: []
292
292
  files:
293
293
  - ".circleci/config.yml"
294
+ - ".gem_release.yml"
294
295
  - ".github/PULL_REQUEST_TEMPLATE.md"
295
296
  - ".github/stale.yml"
296
297
  - ".gitignore"
@@ -330,10 +331,12 @@ files:
330
331
  - lib/solidus_dev_support/templates/extension/app/assets/stylesheets/spree/frontend/%file_name%.css
331
332
  - lib/solidus_dev_support/templates/extension/bin/console.tt
332
333
  - lib/solidus_dev_support/templates/extension/bin/rails
334
+ - lib/solidus_dev_support/templates/extension/bin/rake
335
+ - lib/solidus_dev_support/templates/extension/bin/sandbox.tt
333
336
  - lib/solidus_dev_support/templates/extension/bin/setup
334
337
  - lib/solidus_dev_support/templates/extension/config/locales/en.yml
335
338
  - lib/solidus_dev_support/templates/extension/config/routes.rb
336
- - lib/solidus_dev_support/templates/extension/extension.gemspec.erb
339
+ - lib/solidus_dev_support/templates/extension/extension.gemspec.tt
337
340
  - lib/solidus_dev_support/templates/extension/gem_release.yml.tt
338
341
  - lib/solidus_dev_support/templates/extension/gitignore
339
342
  - lib/solidus_dev_support/templates/extension/lib/%file_name%.rb.tt
@@ -1,37 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- $:.push File.expand_path('lib', __dir__)
4
- require '<%= file_name %>/version'
5
-
6
- Gem::Specification.new do |s|
7
- s.name = '<%= file_name %>'
8
- s.version = <%= class_name %>::VERSION
9
- s.summary = 'TODO'
10
- s.description = 'TODO'
11
- s.license = 'BSD-3-Clause'
12
-
13
- # s.author = 'You'
14
- # s.email = 'you@example.com'
15
- # s.homepage = 'http://www.example.com'
16
-
17
- if s.respond_to?(:metadata)
18
- s.metadata["homepage_uri"] = s.homepage if s.homepage
19
- s.metadata["source_code_uri"] = s.homepage if s.homepage
20
- s.metadata["changelog_uri"] = 'TODO'
21
- end
22
-
23
- s.required_ruby_version = '~> 2.4'
24
-
25
- s.files = Dir.chdir(File.expand_path(__dir__)) do
26
- `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
27
- end
28
- s.test_files = Dir['spec/**/*']
29
- s.bindir = "exe"
30
- s.executables = s.files.grep(%r{^exe/}) { |f| File.basename(f) }
31
- s.require_paths = ["lib"]
32
-
33
- s.add_dependency 'solidus_core', ['>= 2.0.0', '< 3']
34
- s.add_dependency 'solidus_support', '~> 0.4.0'
35
-
36
- s.add_development_dependency 'solidus_dev_support'
37
- end