solidus_dev_support 0.5.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
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