solidus_dev_support 0.2.0 → 0.3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 32f68913bee63209a6d6dd22002a39bc228b5413205487c5437cf17a98446e48
4
- data.tar.gz: 27f0f341b2d37ddfd9795a151eed63bd1a5396b01d8e5ff779643d7a54833d74
3
+ metadata.gz: a3823487a717fb97e853499a6e68ad405e443ae3f0b16bdfc4c11ab97dd31670
4
+ data.tar.gz: fa21213f5c4726ecaed62f37cff358774c1b09d1f9ad850e16f94e6d2b937722
5
5
  SHA512:
6
- metadata.gz: e4ed196776b2f7d34fb2e50e08db666e6d3252008892236e237da41505b14f93bff81057249bc923dcd3b346323cc163d41284f50c3e18123c8882b6083d9770
7
- data.tar.gz: ca477403957a8e3a4535dd951b52b186ef6e287cd115cb752d043050bad10db6a886b6ae905ba9958e149bf2cbaf8e2dbb11506fb59aaefe9fc7be8479fa089d
6
+ metadata.gz: a80b12e5e9a84e3b0ff6476c3f887277b3acc53ce9c79910679b22d791639ce7d74a1f6ca8a7c2d6550ee64ac1866420c08c1c892ac965a2a89fee053d62c504
7
+ data.tar.gz: 493cfb3d42a71d111c90ccdad26095010d660f78f5748e25f86518918689b2e0524425caa710e3d9e144b881e022650ae4a3ff13781e6923d994bf499ab9f895
data/.gitignore CHANGED
@@ -10,3 +10,5 @@ Gemfile.lock
10
10
 
11
11
  # rspec failure tracking
12
12
  .rspec_status
13
+
14
+ /spec/tmp/
data/.rubocop.yml CHANGED
@@ -1,2 +1,11 @@
1
1
  inherit_from:
2
2
  - https://relaxed.ruby.style/rubocop.yml
3
+
4
+ AllCops:
5
+ Exclude:
6
+ - tmp/**/*
7
+
8
+ Style/FrozenStringLiteralComment:
9
+ Exclude:
10
+ - "**/bin/*"
11
+ - "**/exe/*"
data/CHANGELOG.md CHANGED
@@ -9,6 +9,22 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
9
9
 
10
10
  ### Added
11
11
 
12
+ - Adopted Ruby 2.4+ as the minimum Ruby version in generated extensions
13
+ - Added `bin/console`, `bin/rails` and `bin/setup` to generated extensions
14
+ - Added some Bundler gemspec defaults to generated extensions
15
+
16
+ ### Changed
17
+
18
+ - Updated solidus_support to 0.4.0 for Zeitwerk and Rails 6 compatibility
19
+
20
+ ### Removed
21
+
22
+ - Removed solidus_support as a dependency
23
+
24
+ ## [0.2.0] - 2019-12-16
25
+
26
+ ### Added
27
+
12
28
  - Adopted [Apparition](https://github.com/twalpole/apparition) as the deafult JS driver for Capybara
13
29
  - Fixed window size to 1920x1080px in feature specs
14
30
  - Added [Stale](https://github.com/apps/stale) to automatically mark GitHub issues as stale
@@ -34,6 +50,7 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
34
50
 
35
51
  Initial release.
36
52
 
37
- [Unreleased]: https://github.com/solidusio-contrib/solidus_dev_support/compare/v0.1.1...HEAD
53
+ [Unreleased]: https://github.com/solidusio-contrib/solidus_dev_support/compare/v0.2.0...HEAD
54
+ [0.2.0]: https://github.com/solidusio-contrib/solidus_dev_support/compare/v0.1.1...v0.2.0
38
55
  [0.1.1]: https://github.com/solidusio-contrib/solidus_dev_support/compare/v0.1.0...v0.1.1
39
56
  [0.1.0]: https://github.com/solidusio-contrib/solidus_dev_support/releases/tag/v0.1.0
data/README.md CHANGED
@@ -1,6 +1,11 @@
1
1
  # solidus_dev_support
2
2
 
3
- This is a collection of tools for developing Solidus extensions.
3
+ [![CircleCI](https://circleci.com/gh/solidusio-contrib/solidus_dev_support.svg?style=svg)](https://circleci.com/gh/solidusio-contrib/solidus_dev_support)
4
+
5
+ This gem contains common development functionality for Solidus extensions.
6
+
7
+ If you're looking for runtime tools instead, look at
8
+ [solidus_support](https://github.com/solidusio/solidus_support).
4
9
 
5
10
  ## Installation
6
11
 
@@ -18,6 +23,17 @@ $ bundle
18
23
 
19
24
  ## Usage
20
25
 
26
+ ### Extension generator
27
+
28
+ This gem provides a generator for Solidus extensions. To use it, simply run:
29
+
30
+ ```console
31
+ $ solidus extension my_awesome_extension
32
+ ```
33
+
34
+ This will generate the basic extension structure, already configured to use all the shiny helpers
35
+ in solidus_dev_support.
36
+
21
37
  ### RSpec helpers
22
38
 
23
39
  This gem provides some useful helpers for RSpec to setup an extension's test environment easily.
@@ -107,7 +123,7 @@ releases for your gem.
107
123
  For instance, you can run the following to release a new minor version:
108
124
 
109
125
  ```console
110
- gem bump --version minor --tag --release
126
+ $ gem bump --version minor --tag --release
111
127
  ```
112
128
 
113
129
  The above command will:
@@ -124,7 +140,7 @@ further configuration and usage instructions.
124
140
 
125
141
  ### Rake tasks
126
142
 
127
- Put this in your `Rakefile`:
143
+ To install extension-related Rake tasks, add this to your `Rakefile`:
128
144
 
129
145
  ```rb
130
146
  require 'solidus_dev_support/rake_tasks'
@@ -133,6 +149,14 @@ SolidusDevSupport::RakeTasks.install
133
149
  task default: 'extension:specs'
134
150
  ```
135
151
 
152
+ (If your extension used the legacy extension Rakefile, then you should completely replace its
153
+ contents with the block above.)
154
+
155
+ This will provide the following tasks:
156
+
157
+ - `extension:specs` (default), which runs the specs for your extension
158
+ - `extension:test_app`, which generates a dummy app for your extension
159
+
136
160
  ## Development
137
161
 
138
162
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run
data/bin/setup CHANGED
@@ -1,8 +1,20 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
- IFS=$'\n\t'
4
- set -vx
1
+ #!/usr/bin/env ruby
2
+ require 'fileutils'
3
+ include FileUtils # rubocop:disable Style/MixinUsage
5
4
 
6
- bundle install
5
+ GEM_ROOT = File.expand_path('..', __dir__)
7
6
 
8
- # Do any other automated setup that you need to do here
7
+ def system(*args)
8
+ puts "$ #{args.size == 1 ? args.first : args.shelljoin}"
9
+ super
10
+ end
11
+
12
+ def system!(*args)
13
+ system(*args) || abort("\n== Command #{args} failed ==")
14
+ end
15
+
16
+ cd GEM_ROOT
17
+
18
+ puts "\n== Installing Ruby dependencies =="
19
+ system! %{gem install bundler --conservative}
20
+ system! %{bundle check || bundle install}
data/bin/solidus ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'bundler/setup'
4
+ load "#{__dir__}/../exe/solidus"
data/exe/solidus CHANGED
@@ -3,8 +3,7 @@
3
3
 
4
4
  require 'optparse'
5
5
 
6
- require 'solidus_dev_support'
7
- require 'solidus_dev_support/extension'
6
+ require 'solidus_dev_support/version'
8
7
 
9
8
  Options = Struct.new(:name)
10
9
 
@@ -46,6 +45,8 @@ if ARGV.first == 'extension' || ARGV.first == 'e'
46
45
  exit 1
47
46
  end
48
47
 
48
+ require 'solidus_dev_support'
49
+ require 'solidus_dev_support/extension'
49
50
  SolidusDevSupport::Extension.start
50
51
  else
51
52
  Parser.parse(ARGV)
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "solidus_support"
4
3
  require "solidus_dev_support/version"
5
4
 
6
5
  module SolidusDevSupport
@@ -9,7 +8,7 @@ module SolidusDevSupport
9
8
  class << self
10
9
  def reset_spree_preferences_deprecated?
11
10
  first_version_without_reset = Gem::Requirement.new('>= 2.9')
12
- first_version_without_reset.satisfied_by?(SolidusSupport.solidus_gem_version)
11
+ first_version_without_reset.satisfied_by?(Spree.solidus_gem_version)
13
12
  end
14
13
  end
15
14
  end
@@ -2,6 +2,7 @@
2
2
 
3
3
  require 'thor'
4
4
  require 'thor/group'
5
+ require 'pathname'
5
6
 
6
7
  module SolidusDevSupport
7
8
  class Extension < Thor::Group
@@ -23,6 +24,10 @@ module SolidusDevSupport
23
24
  directory '.circleci', "#{file_name}/.circleci"
24
25
  directory '.github', "#{file_name}/.github"
25
26
 
27
+ Dir["#{file_name}/bin/*"].each do |executable|
28
+ make_executable executable
29
+ end
30
+
26
31
  template 'extension.gemspec.erb', "#{file_name}/#{file_name}.gemspec"
27
32
  template 'Gemfile', "#{file_name}/Gemfile"
28
33
  template 'gitignore', "#{file_name}/.gitignore"
@@ -45,6 +50,12 @@ module SolidusDevSupport
45
50
  def use_prefix(prefix)
46
51
  @file_name = prefix + Thor::Util.snake_case(file_name) unless file_name =~ /^#{prefix}/
47
52
  end
53
+
54
+ def make_executable(path)
55
+ path = Pathname(path)
56
+ executable = (path.stat.mode | 0o111)
57
+ path.chmod(executable)
58
+ end
48
59
  end
49
60
  end
50
61
  end
@@ -180,6 +180,7 @@ require:
180
180
  - rubocop-performance
181
181
 
182
182
  AllCops:
183
+ TargetRubyVersion: 2.4
183
184
  Exclude:
184
185
  - spec/dummy/**/*
185
186
  - vendor/**/*
@@ -20,6 +20,4 @@ else
20
20
  gem 'sqlite3'
21
21
  end
22
22
 
23
- gem 'solidus_dev_support', github: 'solidusio-contrib/solidus_dev_support'
24
-
25
23
  gemspec
@@ -18,7 +18,7 @@ rescue LoadError # rubocop:disable Lint/HandleExceptions
18
18
  # no rspec available
19
19
  end
20
20
 
21
- task :first_run do # rubocop:disable Rails/RakeEnvironment
21
+ task :first_run do
22
22
  if Dir['spec/dummy'].empty?
23
23
  Rake::Task[:test_app].invoke
24
24
  Dir.chdir('../../')
@@ -26,7 +26,7 @@ task :first_run do # rubocop:disable Rails/RakeEnvironment
26
26
  end
27
27
 
28
28
  desc 'Generates a dummy app for testing'
29
- task :test_app do # rubocop:disable Rails/RakeEnvironment
29
+ task :test_app do
30
30
  ENV['LIB_NAME'] = '<%=file_name%>'
31
31
  Rake::Task['extension:test_app'].invoke
32
32
  end
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "<%= file_name %>"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+ $LOAD_PATH.unshift(*Dir["#{__dir__}/../app/*"])
9
+
10
+ # (If you use this, don't forget to add pry to your Gemfile!)
11
+ # require "pry"
12
+ # Pry.start
13
+
14
+ require "irb"
15
+ IRB.start(__FILE__)
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ app_root = 'spec/dummy'
4
+
5
+ unless File.exist? "#{app_root}/bin/rails"
6
+ system "bin/rake", app_root or begin # rubocop:disable Style/AndOr
7
+ warn "Automatic creation of the dummy app failed"
8
+ exit 1
9
+ end
10
+ end
11
+
12
+ Dir.chdir 'spec/dummy'
13
+ exec 'bin/rails', *ARGV
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ gem install bundler --conservative
7
+ bundle update
8
+ bin/rake clobber
9
+ bin/rake spec/dummy
10
+ bin/rails railties:install:migrations db:migrate db:seed
@@ -4,20 +4,34 @@ $:.push File.expand_path('lib', __dir__)
4
4
  require '<%= file_name %>/version'
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = '<%= file_name %>'
8
- s.version = <%= class_name %>::VERSION
9
- s.summary = 'TODO'
7
+ s.name = '<%= file_name %>'
8
+ s.version = <%= class_name %>::VERSION
9
+ s.summary = 'TODO'
10
10
  s.description = 'TODO'
11
- s.license = 'BSD-3-Clause'
11
+ s.license = 'BSD-3-Clause'
12
12
 
13
- # s.author = 'You'
14
- # s.email = 'you@example.com'
15
- # s.homepage = 'http://www.example.com'
13
+ # s.author = 'You'
14
+ # s.email = 'you@example.com'
15
+ # s.homepage = 'http://www.example.com'
16
16
 
17
- s.files = Dir["{app,config,db,lib}/**/*", 'LICENSE', 'Rakefile', 'README.md']
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
18
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"]
19
32
 
20
- s.add_dependency 'solidus_core' # Set Solidus version
33
+ s.add_dependency 'solidus_core', ['>= 2.0.0', '< 3']
34
+ s.add_dependency 'solidus_support', '~> 0.4.0'
21
35
 
22
36
  s.add_development_dependency 'solidus_dev_support'
23
37
  end
@@ -1,4 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'solidus_core'
4
+ require 'solidus_support'
5
+
4
6
  require '<%=file_name%>/engine'
@@ -1,22 +1,18 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'spree/core'
4
+
3
5
  module <%= class_name %>
4
6
  class Engine < Rails::Engine
5
- require 'spree/core'
7
+ include SolidusSupport::EngineExtensions::Decorators
8
+
6
9
  isolate_namespace Spree
10
+
7
11
  engine_name '<%= file_name %>'
8
12
 
9
13
  # use rspec for tests
10
14
  config.generators do |g|
11
15
  g.test_framework :rspec
12
16
  end
13
-
14
- def self.activate
15
- Dir.glob(File.join(File.dirname(__FILE__), '../../app/**/*_decorator*.rb')) do |c|
16
- Rails.configuration.cache_classes ? require(c) : load(c)
17
- end
18
- end
19
-
20
- config.to_prepare(&method(:activate).to_proc)
21
17
  end
22
18
  end
@@ -5,7 +5,6 @@ inherit_gem:
5
5
  solidus_dev_support: .rubocop.yml
6
6
 
7
7
  AllCops:
8
- TargetRubyVersion: 2.5
9
8
  Exclude:
10
9
  - spec/dummy/**/*
11
10
  - vendor/**/*
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SolidusDevSupport
4
- VERSION = "0.2.0"
4
+ VERSION = "0.3.0"
5
5
  end
@@ -43,7 +43,6 @@ Gem::Specification.new do |spec|
43
43
  spec.add_dependency 'rubocop-rails', '~> 2.3'
44
44
  spec.add_dependency 'rubocop-rspec', '~> 1.36'
45
45
  spec.add_dependency 'solidus_core', ['>= 2.0', '< 3']
46
- spec.add_dependency 'solidus_support', '~> 0.3.3'
47
46
 
48
47
  spec.add_development_dependency 'bundler'
49
48
  spec.add_development_dependency 'rake'
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.2.0
4
+ version: 0.3.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: 2019-12-16 00:00:00.000000000 Z
11
+ date: 2020-01-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: apparition
@@ -254,20 +254,6 @@ dependencies:
254
254
  - - "<"
255
255
  - !ruby/object:Gem::Version
256
256
  version: '3'
257
- - !ruby/object:Gem::Dependency
258
- name: solidus_support
259
- requirement: !ruby/object:Gem::Requirement
260
- requirements:
261
- - - "~>"
262
- - !ruby/object:Gem::Version
263
- version: 0.3.3
264
- type: :runtime
265
- prerelease: false
266
- version_requirements: !ruby/object:Gem::Requirement
267
- requirements:
268
- - - "~>"
269
- - !ruby/object:Gem::Version
270
- version: 0.3.3
271
257
  - !ruby/object:Gem::Dependency
272
258
  name: bundler
273
259
  requirement: !ruby/object:Gem::Requirement
@@ -318,6 +304,7 @@ files:
318
304
  - Rakefile
319
305
  - bin/console
320
306
  - bin/setup
307
+ - bin/solidus
321
308
  - exe/solidus
322
309
  - lib/solidus_dev_support.rb
323
310
  - lib/solidus_dev_support/extension.rb
@@ -339,7 +326,9 @@ files:
339
326
  - lib/solidus_dev_support/templates/extension/app/assets/javascripts/spree/frontend/%file_name%.js
340
327
  - lib/solidus_dev_support/templates/extension/app/assets/stylesheets/spree/backend/%file_name%.css
341
328
  - lib/solidus_dev_support/templates/extension/app/assets/stylesheets/spree/frontend/%file_name%.css
342
- - lib/solidus_dev_support/templates/extension/bin/rails.tt
329
+ - lib/solidus_dev_support/templates/extension/bin/console.tt
330
+ - lib/solidus_dev_support/templates/extension/bin/rails
331
+ - lib/solidus_dev_support/templates/extension/bin/setup
343
332
  - lib/solidus_dev_support/templates/extension/config/locales/en.yml
344
333
  - lib/solidus_dev_support/templates/extension/config/routes.rb
345
334
  - lib/solidus_dev_support/templates/extension/extension.gemspec.erb
@@ -1,7 +0,0 @@
1
- # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
2
-
3
- ENGINE_ROOT = File.expand_path('../..', __FILE__)
4
- ENGINE_PATH = File.expand_path('../../lib/<%= file_name -%>/engine', __FILE__)
5
-
6
- require 'rails/all'
7
- require 'rails/engine/commands'