solidus_dev_support 0.5.0 → 1.2.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.
Files changed (27) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -1
  3. data/.rubocop-https---relaxed-ruby-style-rubocop-yml +3 -24
  4. data/CHANGELOG.md +52 -1
  5. data/Gemfile +4 -0
  6. data/README.md +68 -8
  7. data/lib/solidus_dev_support/extension.rb +54 -9
  8. data/lib/solidus_dev_support/rake_tasks.rb +15 -0
  9. data/lib/solidus_dev_support/rspec/rails_helper.rb +3 -1
  10. data/lib/solidus_dev_support/templates/extension/Gemfile +7 -0
  11. data/lib/solidus_dev_support/templates/extension/README.md +25 -2
  12. data/lib/solidus_dev_support/templates/extension/Rakefile +1 -1
  13. data/lib/solidus_dev_support/templates/extension/bin/r.tt +13 -0
  14. data/lib/solidus_dev_support/templates/extension/bin/rake +7 -0
  15. data/lib/solidus_dev_support/templates/extension/bin/sandbox.tt +84 -0
  16. data/lib/solidus_dev_support/templates/extension/bin/sandbox_rails +18 -0
  17. data/lib/solidus_dev_support/templates/extension/bin/setup +1 -1
  18. data/lib/solidus_dev_support/templates/extension/extension.gemspec.tt +36 -0
  19. data/lib/solidus_dev_support/templates/extension/gitignore +1 -0
  20. data/lib/solidus_dev_support/templates/extension/lib/%file_name%/engine.rb.tt +3 -2
  21. data/lib/solidus_dev_support/templates/extension/lib/%file_name%/version.rb.tt +1 -1
  22. data/lib/solidus_dev_support/templates/extension/lib/generators/%file_name%/install/install_generator.rb.tt +8 -8
  23. data/lib/solidus_dev_support/templates/extension/rubocop.yml +5 -0
  24. data/lib/solidus_dev_support/version.rb +1 -1
  25. metadata +7 -4
  26. data/lib/solidus_dev_support/templates/extension/bin/rails +0 -15
  27. 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: 22dbc17966230ac110fc0129505cbda25986817faa51629c7b0a68455dc893f5
4
- data.tar.gz: edd55039b0d7d67f84ef65ef20979e935c3705cd599e5a9b88f1f388f6d6b070
3
+ metadata.gz: 57982502f6b6cda3d014e241f319db1a59e5fb7c5b108d5c41e60e2458ce7fe3
4
+ data.tar.gz: 4a738944d3d5fa4789ea68c372f861a0665c0ad9347cb9bda11195b4dcf3c451
5
5
  SHA512:
6
- metadata.gz: 8ce7fb47313fa68bcd1a3d53244cf45f878f164d0cf3d4f4a637326d9ffd11b4762c9a8b4baa0268e9303ad3b8ee7fd6d2a217b1a0b30783e22e37e64d2bb88f
7
- data.tar.gz: 2b4e414288b002b2ad832a5284632ae819fd54e04ac8a870993ceb2bd1dc427b2f6736554963259f1e73e4de5aceb05d6d9a5931928a030f3ba3405c86e78093
6
+ metadata.gz: 65cf8c5ebb47608aaeb7aab52823d7ad8ccec81697ad922144880a971ffea891442cc1fa584b1311df120fc85e762ae06f90a1849083f0058f05c5026336f3b9
7
+ data.tar.gz: f013f6ee048e65a40be05b330e7472fb934c1a14a345efd7319466e976681daba40425b0723356f5f95b3ce0f1ebb65183a8397c7e3afa544b96c5741f830b7e
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
 
@@ -7,6 +7,54 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ### Added
11
+
12
+ - Made Git ignore `sandbox` in generated extensions
13
+ - Added support for specifying `SOLIDUS_BRANCH` in the sandbox
14
+
15
+ ### Changed
16
+
17
+ - Split `bin/rails` into `bin/r` and `bin/sandbox_rails`
18
+ - Updated the extension template with the latest modifications
19
+
20
+ ### Fixed
21
+
22
+ - Fixed the sandbox Gemfile not including Solidus
23
+
24
+ ## [1.0.1] - 2020-02-17
25
+
26
+ ### Fixed
27
+
28
+ - Fixed missing factory definitions when using `modify` on Solidus factories
29
+
30
+ ## [1.0.0] - 2020-02-07
31
+
32
+ ### Added
33
+
34
+ - Added a binstub for `rake` to the extension generator
35
+ - Added the ability for the generator to reuse existing data for the gemspec
36
+
37
+ ### Fixed
38
+
39
+ - Fixed Dependabot throwing an error because of `eval_gemfile` in the Gemfile
40
+
41
+ ## [0.6.0] - 2020-01-20
42
+
43
+ ### Added
44
+
45
+ - Added support for a local Gemfile for local development dependencies (e.g. 'pry-debug')
46
+ - Added a `bin/sandbox` script to all extension for local development with `bin/rails` support.
47
+
48
+ ### Changed
49
+
50
+ - The default rake task no longer re-generates the `test_app` each time it runs.
51
+ In order to get that behavior back simply call clobber before launching it:
52
+ `bin/rake clobber default`
53
+
54
+ ### Fixed
55
+
56
+ - Fixed generated extensions isolating the wrong namespace
57
+
10
58
  ## [0.5.0] - 2020-01-16
11
59
 
12
60
  ### Added
@@ -104,7 +152,10 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
104
152
 
105
153
  Initial release.
106
154
 
107
- [Unreleased]: https://github.com/solidusio/solidus_dev_support/compare/v0.5.0...HEAD
155
+ [Unreleased]: https://github.com/solidusio/solidus_dev_support/compare/v1.0.1...HEAD
156
+ [1.0.1]: https://github.com/solidusio/solidus_dev_support/compare/v1.0.0...v1.0.1
157
+ [1.0.0]: https://github.com/solidusio/solidus_dev_support/compare/v0.6.0...v1.0.0
158
+ [0.6.0]: https://github.com/solidusio/solidus_dev_support/compare/v0.5.0...v0.6.0
108
159
  [0.5.0]: https://github.com/solidusio/solidus_dev_support/compare/v0.4.1...v0.5.0
109
160
  [0.4.1]: https://github.com/solidusio/solidus_dev_support/compare/v0.4.0...v0.4.1
110
161
  [0.4.0]: https://github.com/solidusio/solidus_dev_support/compare/v0.3.0...v0.4.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
@@ -34,6 +34,61 @@ $ 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/sandbox_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/sandbox_rails` will forward any Rails command
57
+ to `sandbox/bin/rails`.
58
+
59
+ Example:
60
+
61
+ ```bash
62
+ $ bin/sandbox_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
+ You can control the DB adapter and Solidus version used with the sandbox by providing
73
+ the `DB` and `SOLIDUS_BRANCH` env variables.
74
+
75
+ ```bash
76
+ DB=[postgres|mysql|sqlite] SOLIDUS_BRANCH=<BRANCH-NAME> bin/sandbox
77
+ ```
78
+
79
+ By default we use sqlite3 and the master branch.
80
+
81
+ ### Rails generators
82
+
83
+ Your extension will have a `bin/r` executable that you can use for generating models, migrations
84
+ etc. It's the same as the default `rails` command in Rails engines.
85
+
86
+ Example:
87
+
88
+ ```bash
89
+ $ bin/r generate migration AddStoreIdToProducts
90
+ ```
91
+
37
92
  ### RSpec helpers
38
93
 
39
94
  This gem provides some useful helpers for RSpec to setup an extension's test environment easily.
@@ -123,15 +178,16 @@ releases for your gem.
123
178
  For instance, you can run the following to release a new minor version:
124
179
 
125
180
  ```console
126
- $ gem bump --version minor --tag --release
181
+ $ gem bump -v minor -r
127
182
  ```
128
183
 
129
184
  The above command will:
130
185
 
131
- * bump the gem version to the next minor;
132
- * commit the change and push it to `upstream/master`;
186
+ * bump the gem version to the next minor (you can also use `patch`, `major` or a specific version
187
+ number);
188
+ * commit the change and push it to `origin/master`;
133
189
  * create a Git tag;
134
- * push the tag to the `upstream` remote;
190
+ * push the tag to the `origin` remote;
135
191
  * release the new version on RubyGems.
136
192
 
137
193
  You can refer to
@@ -146,7 +202,7 @@ To install extension-related Rake tasks, add this to your `Rakefile`:
146
202
  require 'solidus_dev_support/rake_tasks'
147
203
  SolidusDevSupport::RakeTasks.install
148
204
 
149
- task default: %w[extension:test_app extension:specs]
205
+ task default: 'extension:specs'
150
206
  ```
151
207
 
152
208
  (If your extension used the legacy extension Rakefile, then you should completely replace its
@@ -157,7 +213,11 @@ This will provide the following tasks:
157
213
  - `extension:test_app`, which generates a dummy app for your extension
158
214
  - `extension:specs` (default), which runs the specs for your extension
159
215
 
160
- It also allows you to run `rake` to, respectively, generate a test app and run all tests.
216
+ If your extension requires the `test_app` to be always recreated you can do so by running:
217
+
218
+ ```rb
219
+ bin/rake extension:test_app extension:specs
220
+ ```
161
221
 
162
222
  ## Development
163
223
 
@@ -165,8 +225,8 @@ After checking out the repo, run `bin/setup` to install dependencies. Then, run
165
225
  the tests. You can also run `bin/console` for an interactive prompt that will allow you to
166
226
  experiment.
167
227
 
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
228
+ To install this gem onto your local machine, run `bin/rake install`. To release a new
229
+ version, update the version number in `version.rb`, and then run `bin/rake release`, which
170
230
  will create a git tag for the version, push git commits and tags, and push the `.gem` file to
171
231
  [rubygems.org](https://rubygems.org).
172
232
 
@@ -22,16 +22,11 @@ module SolidusDevSupport
22
22
  directory '.circleci', "#{path}/.circleci"
23
23
  directory '.github', "#{path}/.github"
24
24
 
25
- %w[
26
- bin/console
27
- bin/rails
28
- bin/setup
29
- ].each do |bin|
30
- template bin, "#{path}/#{bin}"
31
- make_executable "#{path}/#{bin}"
25
+ Dir["#{path}/bin/*"].each do |bin|
26
+ make_executable bin
32
27
  end
33
28
 
34
- template 'extension.gemspec.erb', "#{path}/#{file_name}.gemspec"
29
+ template 'extension.gemspec', "#{path}/#{file_name}.gemspec"
35
30
  template 'Gemfile', "#{path}/Gemfile"
36
31
  template 'gitignore', "#{path}/.gitignore"
37
32
  template 'gem_release.yml.tt', "#{path}/.gem_release.yml"
@@ -56,6 +51,56 @@ module SolidusDevSupport
56
51
 
57
52
  @root = File.dirname(path)
58
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
59
104
  end
60
105
 
61
106
  def make_executable(path)
@@ -64,7 +109,7 @@ module SolidusDevSupport
64
109
  path.chmod(executable)
65
110
  end
66
111
 
67
- attr_reader :root, :path, :file_name, :class_name
112
+ attr_reader :root, :path, :file_name, :class_name, :gemspec
68
113
  end
69
114
 
70
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'
@@ -22,11 +22,17 @@ bundle exec rails g <%= file_name %>:install
22
22
  Testing
23
23
  -------
24
24
 
25
- First bundle your dependencies, then run `rake`. `rake` will default to building the dummy app if it does not exist, then it will run specs, and [Rubocop](https://github.com/bbatsov/rubocop) static code analysis. The dummy app can be regenerated by using `rake test_app`.
25
+ First bundle your dependencies, then run `bin/rake`. `bin/rake` will default to building the dummy app if it does not exist, then it will run specs. The dummy app can be regenerated by using `bin/rake extension:test_app`.
26
26
 
27
27
  ```shell
28
28
  bundle
29
- bundle exec rake
29
+ bin/rake
30
+ ```
31
+
32
+ To run [Rubocop](https://github.com/bbatsov/rubocop) static code analysis run
33
+
34
+ ```shell
35
+ bundle exec rubocop
30
36
  ```
31
37
 
32
38
  When testing your application's integration with this extension you may use its factories.
@@ -36,6 +42,23 @@ Simply add this require statement to your spec_helper:
36
42
  require '<%= file_name %>/factories'
37
43
  ```
38
44
 
45
+ Sandbox app
46
+ -----------
47
+
48
+ To run this extension in a sandboxed Solidus application you can run `bin/sandbox`
49
+ The path for the sandbox app is `./sandbox` and `bin/rails` will forward any Rails command
50
+ to `sandbox/bin/rails`.
51
+
52
+ Example:
53
+
54
+ ```shell
55
+ $ bin/rails server
56
+ => Booting Puma
57
+ => Rails 6.0.2.1 application starting in development
58
+ * Listening on tcp://127.0.0.1:3000
59
+ Use Ctrl-C to stop
60
+ ```
61
+
39
62
  Releasing
40
63
  ---------
41
64
 
@@ -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'
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env ruby
2
+ # This command will automatically be run when you run "rails" with Rails gems
3
+ # installed from the root of your application.
4
+
5
+ ENGINE_ROOT = File.expand_path('..', __dir__)
6
+ ENGINE_PATH = File.expand_path('../lib/<%=file_name%>/engine', __dir__)
7
+
8
+ # Set up gems listed in the Gemfile.
9
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__)
10
+ require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
11
+
12
+ require 'rails/all'
13
+ require 'rails/engine/commands'
@@ -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,84 @@
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
+ if [ ! -z $SOLIDUS_BRANCH ]
22
+ then
23
+ BRANCH=$SOLIDUS_BRANCH
24
+ else
25
+ BRANCH="master"
26
+ fi
27
+
28
+ extension_name="<%= file_name %>"
29
+
30
+ # Stay away from the bundler env of the containing extension.
31
+ function unbundled {
32
+ ruby -rbundler -e'b = proc {system *ARGV}; Bundler.respond_to?(:with_unbundled_env) ? Bundler.with_unbundled_env(&b) : Bundler.with_clean_env(&b)' -- $@
33
+ }
34
+
35
+ rm -rf ./sandbox
36
+ unbundled bundle exec rails new sandbox --database="$RAILSDB" \
37
+ --skip-bundle \
38
+ --skip-git \
39
+ --skip-keeps \
40
+ --skip-rc \
41
+ --skip-spring \
42
+ --skip-test \
43
+ --skip-javascript
44
+
45
+ if [ ! -d "sandbox" ]; then
46
+ echo 'sandbox rails application failed'
47
+ exit 1
48
+ fi
49
+
50
+ cd ./sandbox
51
+ cat <<RUBY >> Gemfile
52
+ gem 'solidus', github: 'solidusio/solidus', branch: '$BRANCH'
53
+ gem 'solidus_auth_devise', '>= 2.1.0'
54
+ gem 'rails-i18n'
55
+ gem 'solidus_i18n'
56
+
57
+ gem '$extension_name', path: '..'
58
+
59
+ group :test, :development do
60
+ platforms :mri do
61
+ gem 'pry-byebug'
62
+ end
63
+ end
64
+ RUBY
65
+
66
+ unbundled bundle install --gemfile Gemfile
67
+
68
+ unbundled bundle exec rake db:drop db:create
69
+
70
+ unbundled bundle exec rails generate spree:install \
71
+ --auto-accept \
72
+ --user_class=Spree::User \
73
+ --enforce_available_locales=true \
74
+ --with-authentication=false \
75
+ $@
76
+
77
+ unbundled bundle exec rails generate solidus:auth:install
78
+
79
+ echo
80
+ echo "🚀 Sandbox app successfully created for $extension_name!"
81
+ echo "🚀 Using $RAILSDB and Solidus $BRANCH"
82
+ echo "🚀 Use 'export DB=[postgres|mysql|sqlite]' to control the DB adapter"
83
+ echo "🚀 Use 'export SOLIDUS_BRANCH=<BRANCH-NAME>' to control the Solidus version"
84
+ echo "🚀 This app is intended for test purposes."
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # frozen_string_literal: true
4
+
5
+ app_root = 'sandbox'
6
+
7
+ unless File.exist? "#{app_root}/bin/rails"
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
14
+ end
15
+ end
16
+
17
+ Dir.chdir app_root
18
+ exec 'bin/rails', *ARGV
@@ -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
@@ -14,3 +14,4 @@ pkg
14
14
  *.swp
15
15
  spec/dummy
16
16
  spec/examples.txt
17
+ /sandbox
@@ -1,12 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'spree/core'
4
+ require '<%= file_name %>'
4
5
 
5
6
  module <%= class_name %>
6
7
  class Engine < Rails::Engine
7
- include SolidusSupport::EngineExtensions::Decorators
8
+ include SolidusSupport::EngineExtensions
8
9
 
9
- isolate_namespace Spree
10
+ isolate_namespace ::Spree
10
11
 
11
12
  engine_name '<%= file_name %>'
12
13
 
@@ -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
@@ -6,25 +6,25 @@ module <%= class_name %>
6
6
  class_option :auto_run_migrations, type: :boolean, default: false
7
7
 
8
8
  def add_javascripts
9
- append_file 'vendor/assets/javascripts/spree/frontend/all.js', "//= require spree/frontend/<%= file_name %>\n"
10
- append_file 'vendor/assets/javascripts/spree/backend/all.js', "//= require spree/backend/<%= file_name %>\n"
9
+ append_file 'vendor/assets/javascripts/spree/frontend/all.js', "//= require spree/frontend/<%= file_name %>\n" # rubocop:disable Metrics/LineLength
10
+ append_file 'vendor/assets/javascripts/spree/backend/all.js', "//= require spree/backend/<%= file_name %>\n" # rubocop:disable Metrics/LineLength
11
11
  end
12
12
 
13
13
  def add_stylesheets
14
- inject_into_file 'vendor/assets/stylesheets/spree/frontend/all.css', " *= require spree/frontend/<%= file_name %>\n", before: %r{\*/}, verbose: true
15
- inject_into_file 'vendor/assets/stylesheets/spree/backend/all.css', " *= require spree/backend/<%= file_name %>\n", before: %r{\*/}, verbose: true
14
+ inject_into_file 'vendor/assets/stylesheets/spree/frontend/all.css', " *= require spree/frontend/<%= file_name %>\n", before: %r{\*/}, verbose: true # rubocop:disable Metrics/LineLength
15
+ inject_into_file 'vendor/assets/stylesheets/spree/backend/all.css', " *= require spree/backend/<%= file_name %>\n", before: %r{\*/}, verbose: true # rubocop:disable Metrics/LineLength
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
- run_migrations = options[:auto_run_migrations] || ['', 'y', 'Y'].include?(ask('Would you like to run the migrations now? [Y/n]'))
23
+ run_migrations = options[:auto_run_migrations] || ['', 'y', 'Y'].include?(ask('Would you like to run the migrations now? [Y/n]')) # rubocop:disable Metrics/LineLength
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,2 +1,7 @@
1
1
  require:
2
2
  - solidus_dev_support/rubocop
3
+
4
+ AllCops:
5
+ Exclude:
6
+ - sandbox/**/*
7
+ - spec/dummy/**/*
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SolidusDevSupport
4
- VERSION = "0.5.0"
4
+ VERSION = "1.2.0"
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.5.0
4
+ version: 1.2.0
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-16 00:00:00.000000000 Z
11
+ date: 2020-04-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: apparition
@@ -330,11 +330,14 @@ files:
330
330
  - lib/solidus_dev_support/templates/extension/app/assets/stylesheets/spree/backend/%file_name%.css
331
331
  - lib/solidus_dev_support/templates/extension/app/assets/stylesheets/spree/frontend/%file_name%.css
332
332
  - lib/solidus_dev_support/templates/extension/bin/console.tt
333
- - lib/solidus_dev_support/templates/extension/bin/rails
333
+ - lib/solidus_dev_support/templates/extension/bin/r.tt
334
+ - lib/solidus_dev_support/templates/extension/bin/rake
335
+ - lib/solidus_dev_support/templates/extension/bin/sandbox.tt
336
+ - lib/solidus_dev_support/templates/extension/bin/sandbox_rails
334
337
  - lib/solidus_dev_support/templates/extension/bin/setup
335
338
  - lib/solidus_dev_support/templates/extension/config/locales/en.yml
336
339
  - lib/solidus_dev_support/templates/extension/config/routes.rb
337
- - lib/solidus_dev_support/templates/extension/extension.gemspec.erb
340
+ - lib/solidus_dev_support/templates/extension/extension.gemspec.tt
338
341
  - lib/solidus_dev_support/templates/extension/gem_release.yml.tt
339
342
  - lib/solidus_dev_support/templates/extension/gitignore
340
343
  - lib/solidus_dev_support/templates/extension/lib/%file_name%.rb.tt
@@ -1,15 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- # frozen_string_literal: true
4
-
5
- app_root = 'spec/dummy'
6
-
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
11
- end
12
- end
13
-
14
- Dir.chdir app_root
15
- exec 'bin/rails', *ARGV
@@ -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