solidus_dev_support 0.6.0 → 1.0.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/.rubocop-https---relaxed-ruby-style-rubocop-yml +3 -24
- data/CHANGELOG.md +10 -0
- data/README.md +26 -3
- data/lib/solidus_dev_support/extension.rb +54 -9
- data/lib/solidus_dev_support/rake_tasks.rb +9 -0
- data/lib/solidus_dev_support/templates/extension/Gemfile +5 -2
- data/lib/solidus_dev_support/templates/extension/README.md +1 -1
- data/lib/solidus_dev_support/templates/extension/bin/rails +7 -4
- data/lib/solidus_dev_support/templates/extension/bin/rake +7 -0
- data/lib/solidus_dev_support/templates/extension/bin/sandbox.tt +72 -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/lib/%file_name%/version.rb.tt +1 -1
- data/lib/solidus_dev_support/templates/extension/lib/generators/%file_name%/install/install_generator.rb.tt +3 -3
- data/lib/solidus_dev_support/version.rb +1 -1
- metadata +5 -3
- 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: de90c411c336bc81c47f733d981c94bd1ab190b67ac4f3d4150137939d80e334
|
4
|
+
data.tar.gz: 5fc688becf3ee554bd58ed6c1b93ffc1d780d99ef49965e1820a09ee735cb148
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0d2309d00fc65e1883f45a8d197a9b8da364da2f9752a9cdf0dab4fe15907ed71bdde00d16c981623ebdf6e7a48accd1c6384a8abe22a6fce90ec06a3fa13e30
|
7
|
+
data.tar.gz: b219aa253dc28f0d899c3fd336918d5b5a55074829e3b66ad30b29b261e37621cc5c89c7fd59275b47515adfb7c2ea5f7b5ad7fe115c12939ffdadda711f6a28
|
@@ -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,11 +7,21 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
8
8
|
## [Unreleased]
|
9
9
|
|
10
|
+
### Added
|
11
|
+
|
12
|
+
- Added a binstub for `rake` to the extension generator
|
13
|
+
- Added the ability for the generator to reuse existing data for the gemspec
|
14
|
+
|
15
|
+
### Fixed
|
16
|
+
|
17
|
+
- Fixed Dependabot throwing an error because of `eval_gemfile` in the Gemfile
|
18
|
+
|
10
19
|
## [0.6.0] - 2020-01-20
|
11
20
|
|
12
21
|
### Added
|
13
22
|
|
14
23
|
- Added support for a local Gemfile for local development dependencies (e.g. 'pry-debug')
|
24
|
+
- Added a `bin/sandbox` script to all extension for local development with `bin/rails` support.
|
15
25
|
|
16
26
|
### Changed
|
17
27
|
|
data/README.md
CHANGED
@@ -47,6 +47,29 @@ In case of conflicting files, you will be prompted for an action. You can overwr
|
|
47
47
|
the new version, keep the current version or view the diff and only apply the adjustments that make
|
48
48
|
sense to you.
|
49
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
|
+
|
50
73
|
### RSpec helpers
|
51
74
|
|
52
75
|
This gem provides some useful helpers for RSpec to setup an extension's test environment easily.
|
@@ -174,7 +197,7 @@ This will provide the following tasks:
|
|
174
197
|
If your extension requires the `test_app` to be always recreated you can do so by running:
|
175
198
|
|
176
199
|
```rb
|
177
|
-
|
200
|
+
bin/rake extension:test_app extension:specs
|
178
201
|
```
|
179
202
|
|
180
203
|
## Development
|
@@ -183,8 +206,8 @@ After checking out the repo, run `bin/setup` to install dependencies. Then, run
|
|
183
206
|
the tests. You can also run `bin/console` for an interactive prompt that will allow you to
|
184
207
|
experiment.
|
185
208
|
|
186
|
-
To install this gem onto your local machine, run `
|
187
|
-
version, update the version number in `version.rb`, and then run `
|
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
|
188
211
|
will create a git tag for the version, push git commits and tags, and push the `.gem` file to
|
189
212
|
[rubygems.org](https://rubygems.org).
|
190
213
|
|
@@ -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
|
|
@@ -47,6 +48,14 @@ module SolidusDevSupport
|
|
47
48
|
end
|
48
49
|
end
|
49
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)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
50
59
|
def install_rspec_task
|
51
60
|
require 'rspec/core/rake_task'
|
52
61
|
|
@@ -26,5 +26,8 @@ end
|
|
26
26
|
gemspec
|
27
27
|
|
28
28
|
# Use a local Gemfile to include development dependencies that might not be
|
29
|
-
# relevant for the project or for other contributors, e.g
|
30
|
-
|
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'
|
@@ -2,12 +2,15 @@
|
|
2
2
|
|
3
3
|
# frozen_string_literal: true
|
4
4
|
|
5
|
-
app_root = '
|
5
|
+
app_root = 'sandbox'
|
6
6
|
|
7
7
|
unless File.exist? "#{app_root}/bin/rails"
|
8
|
-
|
9
|
-
|
10
|
-
|
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,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."
|
@@ -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
|
@@ -16,15 +16,15 @@ module <%= class_name %>
|
|
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
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 '
|
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: 0.
|
4
|
+
version: 1.0.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-02-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: apparition
|
@@ -331,10 +331,12 @@ files:
|
|
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
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
|
334
336
|
- lib/solidus_dev_support/templates/extension/bin/setup
|
335
337
|
- lib/solidus_dev_support/templates/extension/config/locales/en.yml
|
336
338
|
- lib/solidus_dev_support/templates/extension/config/routes.rb
|
337
|
-
- lib/solidus_dev_support/templates/extension/extension.gemspec.
|
339
|
+
- lib/solidus_dev_support/templates/extension/extension.gemspec.tt
|
338
340
|
- lib/solidus_dev_support/templates/extension/gem_release.yml.tt
|
339
341
|
- lib/solidus_dev_support/templates/extension/gitignore
|
340
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
|