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