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.
- checksums.yaml +4 -4
- data/.gitignore +2 -1
- data/.rubocop-https---relaxed-ruby-style-rubocop-yml +3 -24
- data/CHANGELOG.md +52 -1
- data/Gemfile +4 -0
- data/README.md +68 -8
- data/lib/solidus_dev_support/extension.rb +54 -9
- data/lib/solidus_dev_support/rake_tasks.rb +15 -0
- data/lib/solidus_dev_support/rspec/rails_helper.rb +3 -1
- data/lib/solidus_dev_support/templates/extension/Gemfile +7 -0
- data/lib/solidus_dev_support/templates/extension/README.md +25 -2
- data/lib/solidus_dev_support/templates/extension/Rakefile +1 -1
- data/lib/solidus_dev_support/templates/extension/bin/r.tt +13 -0
- data/lib/solidus_dev_support/templates/extension/bin/rake +7 -0
- data/lib/solidus_dev_support/templates/extension/bin/sandbox.tt +84 -0
- data/lib/solidus_dev_support/templates/extension/bin/sandbox_rails +18 -0
- data/lib/solidus_dev_support/templates/extension/bin/setup +1 -1
- data/lib/solidus_dev_support/templates/extension/extension.gemspec.tt +36 -0
- data/lib/solidus_dev_support/templates/extension/gitignore +1 -0
- data/lib/solidus_dev_support/templates/extension/lib/%file_name%/engine.rb.tt +3 -2
- data/lib/solidus_dev_support/templates/extension/lib/%file_name%/version.rb.tt +1 -1
- data/lib/solidus_dev_support/templates/extension/lib/generators/%file_name%/install/install_generator.rb.tt +8 -8
- data/lib/solidus_dev_support/templates/extension/rubocop.yml +5 -0
- data/lib/solidus_dev_support/version.rb +1 -1
- metadata +7 -4
- data/lib/solidus_dev_support/templates/extension/bin/rails +0 -15
- 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:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 57982502f6b6cda3d014e241f319db1a59e5fb7c5b108d5c41e60e2458ce7fe3
|
|
4
|
+
data.tar.gz: 4a738944d3d5fa4789ea68c372f861a0665c0ad9347cb9bda11195b4dcf3c451
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 65cf8c5ebb47608aaeb7aab52823d7ad8ccec81697ad922144880a971ffea891442cc1fa584b1311df120fc85e762ae06f90a1849083f0058f05c5026336f3b9
|
|
7
|
+
data.tar.gz: f013f6ee048e65a40be05b330e7472fb934c1a14a345efd7319466e976681daba40425b0723356f5f95b3ce0f1ebb65183a8397c7e3afa544b96c5741f830b7e
|
data/.gitignore
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# Relaxed.Ruby.Style
|
|
2
|
-
## Version 2.
|
|
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
|
-
|
|
148
|
+
Layout/LineLength:
|
|
149
149
|
Enabled: false
|
|
150
150
|
|
|
151
|
-
Metrics
|
|
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
|
|
data/CHANGELOG.md
CHANGED
|
@@ -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/
|
|
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
|
|
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
|
-
|
|
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 `
|
|
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:
|
|
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
|
-
|
|
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 `
|
|
169
|
-
version, update the version number in `version.rb`, and then run `
|
|
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
|
-
|
|
26
|
-
bin
|
|
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
|
|
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 '
|
|
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
|
|
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
|
-
|
|
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
|
|
|
@@ -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,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
|
|
@@ -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
|
|
@@ -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
|
|
8
|
+
include SolidusSupport::EngineExtensions
|
|
8
9
|
|
|
9
|
-
isolate_namespace Spree
|
|
10
|
+
isolate_namespace ::Spree
|
|
10
11
|
|
|
11
12
|
engine_name '<%= file_name %>'
|
|
12
13
|
|
|
@@ -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 '
|
|
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 '
|
|
25
|
+
run 'bin/rails db:migrate'
|
|
26
26
|
else
|
|
27
|
-
puts 'Skipping
|
|
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
|
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:
|
|
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-
|
|
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/
|
|
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.
|
|
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
|