slayer_rails 0.5.0.beta → 0.6.1

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: c67f706f583469977288be1dd8114ec79bbca6f13f676d9bd71767d47e3423a1
4
- data.tar.gz: 9f97911c6825359b2c04b6d715abcb7835268c914022705530b8ad5dd4fda8a9
3
+ metadata.gz: 4f7b7bf9f3e80dbeca7190c30a0e7d371e3292c83d1a0709708ef4e32c1b4600
4
+ data.tar.gz: 3138904fe5297ea1a1e9fa494380c7a83548468de9e365dfd7a9880a8b6d82ec
5
5
  SHA512:
6
- metadata.gz: e2fc7da7f190526cc491a99f9f12f2cb517d75685a66c71db91564c1c3c0bd2dcfa57f3e5301d966c98fb8db4ebd80d34d02249daf7a87f5cb7aa45f23c5da2c
7
- data.tar.gz: a67ba310656947024f2001864cd1157cc2fb595a462e14f0b9585398476236ef1e2b43c089b74bac65c69d4228837c4166d56ddec78b057bcff5d83eddf898ea
6
+ metadata.gz: 19ff996d92552fce08f811fa0e7739fce8668666ca67f5672e510cb33e9bd463066c4a38e9acd4e1daeb08c934dfbc54357ba1b864f39c2bafaf123014d7e734
7
+ data.tar.gz: 34278bb1b4f381edfdcc5b86d7f987d50981edc80dc208c06183e5e43642f6690bc2c759b20218873ab79520602345bdf79bc667a5be2d49d5184d843dfedc3c
@@ -0,0 +1,60 @@
1
+ name: Publish
2
+ run-name: Publish ${{ github.ref_name }}
3
+
4
+ on:
5
+ push:
6
+ tags:
7
+ - "v*"
8
+
9
+ permissions:
10
+ contents: write
11
+
12
+ jobs:
13
+ publish:
14
+ name: Release ${{ github.ref_name }}
15
+ runs-on: ubuntu-latest
16
+
17
+ steps:
18
+ - name: Checkout
19
+ uses: actions/checkout@v6
20
+
21
+ - name: Setup Ruby
22
+ uses: ruby/setup-ruby@v1
23
+ with:
24
+ bundler-cache: true
25
+
26
+ - name: Build gem
27
+ run: bundle exec rake build
28
+
29
+ - name: Configure RubyGems credentials
30
+ run: |
31
+ mkdir -p ~/.gem
32
+ cat > ~/.gem/credentials <<EOF
33
+ ---
34
+ :rubygems_api_key: ${{ secrets.RUBYGEMS_AUTH_TOKEN }}
35
+ EOF
36
+ chmod 0600 ~/.gem/credentials
37
+
38
+ - name: Publish gem
39
+ run: gem push pkg/*.gem
40
+
41
+ - name: Create GitHub Release
42
+ env:
43
+ GH_TOKEN: ${{ github.token }}
44
+ run: |
45
+ TAG="${GITHUB_REF_NAME}"
46
+
47
+ if [[ "$TAG" =~ \.(pre|rc|beta)(\.|$) ]]; then
48
+ gh release create \
49
+ "$TAG" \
50
+ pkg/*.gem \
51
+ --title "$TAG" \
52
+ --generate-notes \
53
+ --prerelease
54
+ else
55
+ gh release create \
56
+ "$TAG" \
57
+ pkg/*.gem \
58
+ --title "$TAG" \
59
+ --generate-notes
60
+ fi
@@ -2,7 +2,7 @@ name: Test & Lint
2
2
 
3
3
  on:
4
4
  push:
5
- branches: [master]
5
+ branches: [main]
6
6
  pull_request:
7
7
 
8
8
  jobs:
@@ -12,12 +12,12 @@ jobs:
12
12
 
13
13
  strategy:
14
14
  matrix:
15
- ruby-version: ['2.7']
15
+ ruby-version: ['4.0', '3.4', '3.3']
16
16
 
17
17
  steps:
18
- - uses: actions/checkout@v3
18
+ - uses: actions/checkout@v6
19
19
  - name: Set up Ruby
20
- uses: ruby/setup-ruby@359bebbc29cbe6c87da6bc9ea3bc930432750108
20
+ uses: ruby/setup-ruby@v1
21
21
  with:
22
22
  ruby-version: ${{ matrix.ruby-version }}
23
23
  - name: Install dependencies
@@ -25,7 +25,7 @@ jobs:
25
25
  bundle install
26
26
  bundle exec appraisal install
27
27
  RAILS_ENV=test bundle exec rake dummy:db:reset
28
- - name: Rubocop
29
- run: rubocop
30
- - name: Run tests
31
- run: bundle exec appraisal rspec
28
+ - name: Lint and test
29
+ run: |
30
+ RAILS_ENV=test bundle exec rake dummy:db:schema:load
31
+ bundle exec rake
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 3.4
data/.standard.yml ADDED
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Standard Ruby configuration
4
+ # https://github.com/testdouble/standard
5
+
6
+ ruby_version: 3.3
7
+
8
+ ignore:
9
+ - 'bin/**/*'
10
+ - 'vendor/**/*'
11
+ - 'tmp/**/*'
12
+ - 'lib/generators/**/templates/**/*'
13
+
14
+ fix: true
data/Appraisals CHANGED
@@ -1,11 +1,25 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- appraise 'rails_6.1' do
4
- gem 'rails', '6.1'
5
- gem 'tzinfo-data'
3
+ appraise "rails_7.1" do
4
+ gem "rails", "~> 7.1"
5
+ gem "rspec", "~> 3.12"
6
+ gem "rspec-rails", "~> 6.1"
7
+ gem "rails-controller-testing"
8
+ gem "sqlite3", "~> 1.4"
6
9
  end
7
10
 
8
- appraise 'rails_7.0' do
9
- gem 'rails', '7.0'
10
- gem 'tzinfo-data'
11
+ appraise "rails_8.0" do
12
+ gem "rails", "~> 8.0.0"
13
+ gem "rspec", "~> 3.13"
14
+ gem "rspec-rails", "~> 8.0"
15
+ gem "rails-controller-testing"
16
+ gem "sqlite3", "~> 2.1"
17
+ end
18
+
19
+ appraise "rails_8.1" do
20
+ gem "rails", "~> 8.1.0"
21
+ gem "rspec", "~> 3.13"
22
+ gem "rspec-rails", "~> 8.0"
23
+ gem "rails-controller-testing"
24
+ gem "sqlite3", "~> 2.1"
11
25
  end
data/Dockerfile CHANGED
@@ -1,4 +1,4 @@
1
- FROM ruby:2.7-buster
1
+ FROM ruby:3.4-bookworm
2
2
 
3
3
  RUN apt-get update -qq && apt-get install -y --no-install-recommends \
4
4
  build-essential \
data/Gemfile CHANGED
@@ -1,13 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- source 'https://rubygems.org'
3
+ source "https://rubygems.org"
4
4
 
5
5
  # Specify your gem's dependencies in slayer_rails.gemspec
6
6
  gemspec
7
7
 
8
- gem 'appraisal'
9
- gem 'byebug'
10
- gem 'nokogiri'
11
- gem 'rspec-rails'
12
- gem 'sqlite3'
13
- gem 'tzinfo-data'
8
+ gem "appraisal"
9
+ gem "byebug"
10
+ gem "nokogiri"
11
+ gem "rspec-rails"
12
+ gem "sqlite3"
13
+ gem "tzinfo-data"
data/README.md CHANGED
@@ -12,16 +12,29 @@ gem 'slayer_rails'
12
12
 
13
13
  ## Development
14
14
 
15
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `bundle exec appraisal rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
15
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `bundle exec rake` to lint and run the appraisal test matrix. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
16
16
 
17
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
17
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, commit the change, and then run `bin/release`. The script creates and pushes the version tag; the `Publish` GitHub Actions workflow builds and publishes the gem to [rubygems.org](https://rubygems.org) using trusted publishing.
18
+
19
+ ### Releasing
20
+
21
+ Create a release from `main`:
22
+
23
+ ```sh
24
+ bin/release {major|minor|patch|pre}
25
+ git push --follow-tags
26
+ ```
27
+
28
+ The release script validates the repository, bumps the version, creates a git tag.
29
+
30
+ Publishing to RubyGems and creating a GitHub Release are handled automatically by GitHub Actions.
18
31
 
19
32
  ## Appraisal
20
33
 
21
34
  Testing against various `Rails` versions is handled with [appraisal](https://github.com/thoughtbot/appraisal). To test, run:
22
35
 
23
36
  ```sh
24
- $ bundle exec appraisal rake test
37
+ $ bundle exec rake
25
38
  ```
26
39
 
27
40
  ## Contributing
data/Rakefile CHANGED
@@ -1,15 +1,25 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'rubygems'
4
- require 'bundler/setup'
5
- require 'bundler/gem_tasks'
3
+ require "rubygems"
4
+ require "bundler/setup"
5
+ require "bundler/gem_tasks"
6
6
 
7
- require 'rake'
8
- require 'rspec/core/rake_task'
7
+ require "rake"
8
+ require "rspec/core/rake_task"
9
+
10
+ RSpec::Core::RakeTask.new(:spec)
11
+
12
+ task :standard do
13
+ sh "bundle exec standardrb"
14
+ end
15
+
16
+ task :appraisal do
17
+ sh "bundle exec appraisal rspec"
18
+ end
9
19
 
10
20
  namespace :dummy do
11
- require_relative 'spec/dummy/application'
21
+ require_relative "spec/dummy/application"
12
22
  Dummy::Application.load_tasks
13
23
  end
14
24
 
15
- task default: :spec
25
+ task default: [:standard, :appraisal]
data/bin/release ADDED
@@ -0,0 +1,39 @@
1
+ #!/usr/bin/env bash
2
+
3
+ set -euo pipefail
4
+
5
+ BUMP_TYPE="${1:-}"
6
+
7
+ case "$BUMP_TYPE" in
8
+ major|minor|patch|pre)
9
+ ;;
10
+ *)
11
+ echo "Usage: bin/release [major|minor|patch|pre]" >&2
12
+ exit 1
13
+ ;;
14
+ esac
15
+
16
+ run() {
17
+ echo "==> $*"
18
+ "$@"
19
+ }
20
+
21
+ if [ -n "$(git status --porcelain)" ]; then
22
+ echo "Git working tree is not clean" >&2
23
+ exit 1
24
+ fi
25
+
26
+ CURRENT_BRANCH="$(git branch --show-current)"
27
+
28
+ if [ "$CURRENT_BRANCH" != "main" ]; then
29
+ echo "Releases must be cut from main" >&2
30
+ exit 1
31
+ fi
32
+
33
+ run bundle exec bump "$BUMP_TYPE" --tag
34
+
35
+ VERSION="$(bundle exec bump current | awk '{print $NF}')"
36
+ TAG="v${VERSION}"
37
+
38
+ echo
39
+ echo "Released $TAG"
@@ -0,0 +1,3 @@
1
+ #! /bin/bash
2
+
3
+ docker-compose exec ruby bash
data/config.ru CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'rubygems'
4
- require 'bundler'
3
+ require "rubygems"
4
+ require "bundler"
5
5
 
6
6
  Bundler.require :default, :development
@@ -0,0 +1,15 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "appraisal"
6
+ gem "byebug"
7
+ gem "nokogiri"
8
+ gem "rspec-rails", "~> 6.1"
9
+ gem "sqlite3", "~> 1.4"
10
+ gem "tzinfo-data"
11
+ gem "rails", "~> 7.1"
12
+ gem "rspec", "~> 3.12"
13
+ gem "rails-controller-testing"
14
+
15
+ gemspec path: "../"
@@ -0,0 +1,15 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "appraisal"
6
+ gem "byebug"
7
+ gem "nokogiri"
8
+ gem "rspec-rails", "~> 8.0"
9
+ gem "sqlite3", "~> 2.1"
10
+ gem "tzinfo-data"
11
+ gem "rails", "~> 8.0.0"
12
+ gem "rspec", "~> 3.13"
13
+ gem "rails-controller-testing"
14
+
15
+ gemspec path: "../"
@@ -0,0 +1,15 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "appraisal"
6
+ gem "byebug"
7
+ gem "nokogiri"
8
+ gem "rspec-rails", "~> 8.0"
9
+ gem "sqlite3", "~> 2.1"
10
+ gem "tzinfo-data"
11
+ gem "rails", "~> 8.1.0"
12
+ gem "rspec", "~> 3.13"
13
+ gem "rails-controller-testing"
14
+
15
+ gemspec path: "../"
@@ -3,13 +3,13 @@
3
3
  module Slayer
4
4
  module Generators
5
5
  class CommandGenerator < NamedBase
6
- desc 'This generator creates new Slayer::Commands'
6
+ desc "This generator creates new Slayer::Commands"
7
7
 
8
- source_root File.expand_path('templates', __dir__)
9
- check_class_collision suffix: 'Command'
8
+ source_root File.expand_path("templates", __dir__)
9
+ check_class_collision suffix: "Command"
10
10
 
11
11
  def create_command_files
12
- template 'command.rb', File.join('app', 'commands', class_path, "#{file_name}_command.rb")
12
+ template "command.rb", File.join("app", "commands", class_path, "#{file_name}_command.rb")
13
13
  end
14
14
  end
15
15
  end
@@ -3,23 +3,23 @@
3
3
  module Slayer
4
4
  module Generators
5
5
  class FormGenerator < NamedBase
6
- desc 'This generator creates new Slayer::Forms'
6
+ desc "This generator creates new Slayer::Forms"
7
7
 
8
- source_root File.expand_path('templates', __dir__)
9
- check_class_collision suffix: 'Form'
8
+ source_root File.expand_path("templates", __dir__)
9
+ check_class_collision suffix: "Form"
10
10
 
11
11
  argument :name, type: :string
12
12
  argument :fields, type: :array, required: false,
13
- desc: 'The attributes of the generated form. name:String completed:Boolean'
13
+ desc: "The attributes of the generated form. name:String completed:Boolean"
14
14
 
15
15
  def initialize(args, *options) # :nodoc:
16
16
  super
17
17
  args.shift
18
- @fields = args.map { |a| a.split(':') }
18
+ @fields = args.map { |a| a.split(":") }
19
19
  end
20
20
 
21
21
  def create_form_files
22
- template 'form.rb', File.join('app', 'forms', class_path, "#{file_name}_form.rb")
22
+ template "form.rb", File.join("app", "forms", class_path, "#{file_name}_form.rb")
23
23
  end
24
24
  end
25
25
  end
@@ -3,14 +3,14 @@
3
3
  module Slayer
4
4
  module Generators
5
5
  class ScaffoldGenerator < NamedBase
6
- desc 'This generator creates a new Slayer::Commands and a corresponding Slayer::Form'
6
+ desc "This generator creates a new Slayer::Commands and a corresponding Slayer::Form"
7
7
 
8
- source_root File.expand_path('templates', __dir__)
9
- check_class_collision suffix: 'Command'
8
+ source_root File.expand_path("templates", __dir__)
9
+ check_class_collision suffix: "Command"
10
10
 
11
11
  argument :name, type: :string
12
12
  argument :fields, type: :array, required: false,
13
- desc: 'The attributes of the generated form. name:String completed:Boolean'
13
+ desc: "The attributes of the generated form. name:String completed:Boolean"
14
14
 
15
15
  def initialize(args, *options) # :nodoc:
16
16
  super
@@ -18,11 +18,11 @@ module Slayer
18
18
  end
19
19
 
20
20
  def create_command_files
21
- generate 'slayer:command', file_name.to_s
21
+ generate "slayer:command", file_name.to_s
22
22
  end
23
23
 
24
24
  def create_form_files
25
- generate 'slayer:form', @args.join(' ').to_s
25
+ generate "slayer:form", @args.join(" ").to_s
26
26
  end
27
27
  end
28
28
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'rails/generators'
4
- require 'rails/generators/named_base'
3
+ require "rails/generators"
4
+ require "rails/generators/named_base"
5
5
 
6
6
  module Slayer
7
7
  module Generators
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'json'
3
+ require "json"
4
4
 
5
5
  module SlayerRails
6
6
  module Extensions
@@ -14,7 +14,7 @@ module SlayerRails
14
14
  def validate!
15
15
  return if valid?
16
16
 
17
- message = errors.full_messages.join(', ')
17
+ message = errors.full_messages.join(", ")
18
18
  raise Slayer::FormValidationError, message unless valid?
19
19
  end
20
20
 
@@ -30,23 +30,23 @@ module SlayerRails
30
30
 
31
31
  class << self
32
32
  def from_params(params, additional_params: {}, root_key: nil)
33
- params = params.respond_to?(:to_unsafe_h) ? params.to_unsafe_h : params.to_h
34
- params = params.deep_symbolize_keys
33
+ params = params.respond_to?(:to_unsafe_h) ? params.to_unsafe_h : params.to_h
34
+ params = params.deep_symbolize_keys
35
35
  attr_names = attribute_set.map(&:name)
36
36
 
37
37
  params = params.fetch(root_key, {}) if root_key.present?
38
38
 
39
39
  attr_hash = params
40
- .merge(params.slice(*attr_names))
41
- .merge(additional_params)
40
+ .merge(params.slice(*attr_names))
41
+ .merge(additional_params)
42
42
 
43
43
  new(attr_hash)
44
44
  end
45
45
 
46
46
  def from_model(model)
47
47
  attr_hash = attribute_set.map(&:name)
48
- .select { |attr_name| model.respond_to?(attr_name) }
49
- .map { |attr_name| [attr_name, model.public_send(attr_name)] }
48
+ .select { |attr_name| model.respond_to?(attr_name) }
49
+ .map { |attr_name| [attr_name, model.public_send(attr_name)] }
50
50
 
51
51
  new(attr_hash.to_h)
52
52
  end
@@ -7,19 +7,19 @@ module SlayerRails
7
7
 
8
8
  # rubocop:disable Metrics/BlockLength
9
9
  included do
10
- def translate(key, options = {})
11
- I18n.translate(self.class.full_key(key), options.dup)
10
+ def translate(key, **options)
11
+ I18n.translate(self.class.full_key(key), **options)
12
12
  end
13
13
  alias_method :t, :translate
14
14
 
15
- def localize(*args)
16
- I18n.localize(*args)
15
+ def localize(*args, **kwargs)
16
+ I18n.localize(*args, **kwargs)
17
17
  end
18
18
  alias_method :l, :localize
19
19
 
20
20
  class << self
21
21
  def full_key(key)
22
- return key unless key.start_with? '.'
22
+ return key unless key.start_with? "."
23
23
 
24
24
  "#{implied_path}#{key}"
25
25
  end
@@ -29,16 +29,16 @@ module SlayerRails
29
29
  end
30
30
 
31
31
  def build_implied_path
32
- module_path = name.underscore.split('/')
32
+ module_path = name.underscore.split("/")
33
33
 
34
- class_name_parts = module_path.pop.split('_')
34
+ class_name_parts = module_path.pop.split("_")
35
35
 
36
36
  class_name_parts.pop if %w[command service form].include? class_name_parts.last
37
37
 
38
38
  module_path.unshift(slayer_type)
39
- module_path.push(class_name_parts.join('_'))
39
+ module_path.push(class_name_parts.join("_"))
40
40
 
41
- module_path.join('.')
41
+ module_path.join(".")
42
42
  end
43
43
 
44
44
  def slayer_type
@@ -46,8 +46,8 @@ module SlayerRails
46
46
  end
47
47
 
48
48
  def detect_slayer_type
49
- return 'commands' if self <= Slayer::Command
50
- return 'forms' if self <= Slayer::Form
49
+ return "commands" if self <= Slayer::Command
50
+ return "forms" if self <= Slayer::Form
51
51
 
52
52
  raise NotImplementedException, "Unknown Slayer Class: #{name}"
53
53
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SlayerRails
4
- VERSION = '0.5.0.beta'
4
+ VERSION = "0.6.1"
5
5
  end
data/lib/slayer_rails.rb CHANGED
@@ -1,19 +1,19 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'active_support'
4
- require 'active_model'
5
- require 'active_record'
6
- require 'slayer'
3
+ require "active_support"
4
+ require "active_model"
5
+ require "active_record"
6
+ require "slayer"
7
7
 
8
- require 'slayer_rails/version'
9
- require 'slayer_rails/extensions/form'
10
- require 'slayer_rails/extensions/transaction'
11
- require 'slayer_rails/extensions/translation'
8
+ require "slayer_rails/version"
9
+ require "slayer_rails/extensions/form"
10
+ require "slayer_rails/extensions/transaction"
11
+ require "slayer_rails/extensions/translation"
12
12
 
13
- require 'generators/slayer_base'
14
- require 'generators/command/command_generator'
15
- require 'generators/form/form_generator'
16
- require 'generators/scaffold/scaffold_generator'
13
+ require "generators/slayer_base"
14
+ require "generators/command/command_generator"
15
+ require "generators/form/form_generator"
16
+ require "generators/scaffold/scaffold_generator"
17
17
 
18
18
  module Slayer
19
19
  class Form
data/slayer_rails.gemspec CHANGED
@@ -1,31 +1,37 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- lib = File.expand_path('lib', __dir__)
3
+ lib = File.expand_path("lib", __dir__)
4
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
- require 'slayer_rails/version'
5
+ require "slayer_rails/version"
6
6
 
7
7
  Gem::Specification.new do |spec|
8
- spec.name = 'slayer_rails'
9
- spec.version = SlayerRails::VERSION
10
- spec.authors = ['Wyatt Kirby']
11
- spec.email = ['wyatt@apsis.io']
8
+ spec.name = "slayer_rails"
9
+ spec.version = SlayerRails::VERSION
10
+ spec.authors = ["Wyatt Kirby"]
11
+ spec.email = ["wyatt@apsis.io"]
12
12
 
13
- spec.summary = 'Rails extensions for Slayer.'
14
- spec.homepage = 'http://www.apsis.io'
15
- spec.license = 'MIT'
13
+ spec.summary = "Rails extensions for Slayer."
14
+ spec.homepage = "http://www.apsis.io"
15
+ spec.license = "MIT"
16
16
 
17
- spec.files = `git ls-files -z`.split("\x0").reject do |f|
17
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
18
18
  f.match(%r{^(test|spec|features)/})
19
19
  end
20
20
 
21
- spec.bindir = 'exe'
22
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
- spec.require_paths = ['lib']
21
+ spec.bindir = "exe"
22
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
+ spec.require_paths = ["lib"]
24
24
 
25
- spec.add_runtime_dependency 'rails', '>= 4.2.0'
26
- spec.add_runtime_dependency 'slayer', '>= 0.5.0.beta'
25
+ spec.required_ruby_version = ">= 3.3.0"
27
26
 
28
- spec.add_development_dependency 'bundler', '~> 2.0'
29
- spec.add_development_dependency 'rake', '~> 12.0'
30
- spec.add_development_dependency 'rubocop', '= 1.38.0'
27
+ spec.add_dependency "bigdecimal"
28
+ spec.add_dependency "ostruct"
29
+ spec.add_dependency "rails", ">= 7.1.0"
30
+ spec.add_dependency "slayer", ">= 0.5"
31
+
32
+ spec.add_development_dependency "bump"
33
+ spec.add_development_dependency "bundler", ">= 2.4.0"
34
+ spec.add_development_dependency "rake", "~> 13.0"
35
+ spec.add_development_dependency "standard", "~> 1.39"
36
+ spec.metadata["rubygems_mfa_required"] = "true"
31
37
  end
data/tasks/db.rb CHANGED
@@ -2,52 +2,50 @@
2
2
 
3
3
  # source: https://gist.github.com/schickling/6762581
4
4
 
5
- require 'slayer_rails'
6
- require 'active_record'
7
- require 'yaml'
5
+ require "slayer_rails"
6
+ require "active_record"
7
+ require "yaml"
8
8
 
9
- GEM_ROOT = File.dirname(__dir__)
10
- DB_CONFIG = YAML.safe_load(File.open('spec/dummy/config/database.yml'))
11
- SCHEMA_FILE = "#{GEM_ROOT}/spec/dummy/db/schema.rb"
9
+ GEM_ROOT = File.dirname(__dir__)
10
+ DB_CONFIG = YAML.safe_load(File.open("spec/dummy/config/database.yml"))
11
+ SCHEMA_FILE = "#{GEM_ROOT}/spec/dummy/db/schema.rb"
12
12
  MIGRATION_DIR = "#{GEM_ROOT}/spec/dummy/db/migrate"
13
13
 
14
14
  namespace :db do
15
- desc 'Migrate the database'
15
+ desc "Migrate the database"
16
16
  task :migrate do
17
17
  ActiveRecord::Base.establish_connection(DB_CONFIG)
18
18
  ActiveRecord::Migrator.migrate(MIGRATION_DIR)
19
- Rake::Task['db:schema'].invoke
20
- puts 'Database migrated.'
19
+ Rake::Task["db:schema"].invoke
20
+ puts "Database migrated."
21
21
  end
22
22
 
23
- desc 'Create a db/schema.rb file that is portable against any supported DB'
23
+ desc "Create a db/schema.rb file that is portable against any supported DB"
24
24
  task :schema do
25
25
  ActiveRecord::Base.establish_connection(DB_CONFIG)
26
- require 'active_record/schema_dumper'
26
+ require "active_record/schema_dumper"
27
27
 
28
- File.open(SCHEMA_FILE, 'w:utf-8') do |file|
28
+ File.open(SCHEMA_FILE, "w:utf-8") do |file|
29
29
  ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, file)
30
30
  end
31
31
  end
32
32
  end
33
33
 
34
34
  namespace :g do
35
- desc 'Generate migration'
35
+ desc "Generate migration"
36
36
  task :migration do
37
- name = ARGV[1] || raise('Specify name: rake g:migration name')
38
- timestamp = Time.now.strftime('%Y%m%d%H%M%S')
39
- path = File.expand_path("#{MIGRATION_DIR}/#{timestamp}_#{name}.rb", __FILE__)
37
+ name = ARGV[1] || raise("Specify name: rake g:migration name")
38
+ timestamp = Time.now.strftime("%Y%m%d%H%M%S")
39
+ path = File.expand_path("#{MIGRATION_DIR}/#{timestamp}_#{name}.rb", __FILE__)
40
40
 
41
- migration_class = name.split('_').map(&:capitalize).join
41
+ migration_class = name.split("_").map(&:capitalize).join
42
42
 
43
- File.open(path, 'w') do |file|
44
- file.write <<-EOF.strip_heredoc
45
- class #{migration_class} < ActiveRecord::Migration
46
- def change
47
- end
43
+ File.write(path, <<~EOF)
44
+ class #{migration_class} < ActiveRecord::Migration[6.0]
45
+ def change
48
46
  end
49
- EOF
50
- end
47
+ end
48
+ EOF
51
49
 
52
50
  puts "Migration #{path} created"
53
51
  abort # needed stop other tasks
metadata CHANGED
@@ -1,97 +1,137 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slayer_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0.beta
4
+ version: 0.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Wyatt Kirby
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2022-12-21 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: bigdecimal
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '0'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: '0'
26
+ - !ruby/object:Gem::Dependency
27
+ name: ostruct
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
13
40
  - !ruby/object:Gem::Dependency
14
41
  name: rails
15
42
  requirement: !ruby/object:Gem::Requirement
16
43
  requirements:
17
44
  - - ">="
18
45
  - !ruby/object:Gem::Version
19
- version: 4.2.0
46
+ version: 7.1.0
20
47
  type: :runtime
21
48
  prerelease: false
22
49
  version_requirements: !ruby/object:Gem::Requirement
23
50
  requirements:
24
51
  - - ">="
25
52
  - !ruby/object:Gem::Version
26
- version: 4.2.0
53
+ version: 7.1.0
27
54
  - !ruby/object:Gem::Dependency
28
55
  name: slayer
29
56
  requirement: !ruby/object:Gem::Requirement
30
57
  requirements:
31
58
  - - ">="
32
59
  - !ruby/object:Gem::Version
33
- version: 0.5.0.beta
60
+ version: '0.5'
34
61
  type: :runtime
35
62
  prerelease: false
36
63
  version_requirements: !ruby/object:Gem::Requirement
37
64
  requirements:
38
65
  - - ">="
39
66
  - !ruby/object:Gem::Version
40
- version: 0.5.0.beta
67
+ version: '0.5'
68
+ - !ruby/object:Gem::Dependency
69
+ name: bump
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ type: :development
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
41
82
  - !ruby/object:Gem::Dependency
42
83
  name: bundler
43
84
  requirement: !ruby/object:Gem::Requirement
44
85
  requirements:
45
- - - "~>"
86
+ - - ">="
46
87
  - !ruby/object:Gem::Version
47
- version: '2.0'
88
+ version: 2.4.0
48
89
  type: :development
49
90
  prerelease: false
50
91
  version_requirements: !ruby/object:Gem::Requirement
51
92
  requirements:
52
- - - "~>"
93
+ - - ">="
53
94
  - !ruby/object:Gem::Version
54
- version: '2.0'
95
+ version: 2.4.0
55
96
  - !ruby/object:Gem::Dependency
56
97
  name: rake
57
98
  requirement: !ruby/object:Gem::Requirement
58
99
  requirements:
59
100
  - - "~>"
60
101
  - !ruby/object:Gem::Version
61
- version: '12.0'
102
+ version: '13.0'
62
103
  type: :development
63
104
  prerelease: false
64
105
  version_requirements: !ruby/object:Gem::Requirement
65
106
  requirements:
66
107
  - - "~>"
67
108
  - !ruby/object:Gem::Version
68
- version: '12.0'
109
+ version: '13.0'
69
110
  - !ruby/object:Gem::Dependency
70
- name: rubocop
111
+ name: standard
71
112
  requirement: !ruby/object:Gem::Requirement
72
113
  requirements:
73
- - - '='
114
+ - - "~>"
74
115
  - !ruby/object:Gem::Version
75
- version: 1.38.0
116
+ version: '1.39'
76
117
  type: :development
77
118
  prerelease: false
78
119
  version_requirements: !ruby/object:Gem::Requirement
79
120
  requirements:
80
- - - '='
121
+ - - "~>"
81
122
  - !ruby/object:Gem::Version
82
- version: 1.38.0
83
- description:
123
+ version: '1.39'
84
124
  email:
85
125
  - wyatt@apsis.io
86
126
  executables: []
87
127
  extensions: []
88
128
  extra_rdoc_files: []
89
129
  files:
90
- - ".github/workflows/release.yml"
130
+ - ".github/workflows/publish.yml"
91
131
  - ".github/workflows/test.yml"
92
132
  - ".gitignore"
93
- - ".rubocop.yml"
94
- - ".travis.yml"
133
+ - ".ruby-version"
134
+ - ".standard.yml"
95
135
  - Appraisals
96
136
  - Dockerfile
97
137
  - Gemfile
@@ -101,15 +141,18 @@ files:
101
141
  - app/assets/config/manifest.js
102
142
  - bin/console
103
143
  - bin/helpers/docker
144
+ - bin/release
104
145
  - bin/setup
146
+ - bin/ssh_to_container
105
147
  - config.ru
106
148
  - config/locales/en.yml
107
149
  - db/migrate/20170214100255_create_person.rb
108
150
  - db/schema.rb
109
151
  - docker-compose.yml
110
152
  - docker/start.sh
111
- - gemfiles/rails_6.1.gemfile
112
- - gemfiles/rails_7.0.gemfile
153
+ - gemfiles/rails_7.1.gemfile
154
+ - gemfiles/rails_8.0.gemfile
155
+ - gemfiles/rails_8.1.gemfile
113
156
  - lib/generators/command/command_generator.rb
114
157
  - lib/generators/command/templates/command.rb
115
158
  - lib/generators/form/form_generator.rb
@@ -126,8 +169,8 @@ files:
126
169
  homepage: http://www.apsis.io
127
170
  licenses:
128
171
  - MIT
129
- metadata: {}
130
- post_install_message:
172
+ metadata:
173
+ rubygems_mfa_required: 'true'
131
174
  rdoc_options: []
132
175
  require_paths:
133
176
  - lib
@@ -135,15 +178,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
135
178
  requirements:
136
179
  - - ">="
137
180
  - !ruby/object:Gem::Version
138
- version: '0'
181
+ version: 3.3.0
139
182
  required_rubygems_version: !ruby/object:Gem::Requirement
140
183
  requirements:
141
- - - ">"
184
+ - - ">="
142
185
  - !ruby/object:Gem::Version
143
- version: 1.3.1
186
+ version: '0'
144
187
  requirements: []
145
- rubygems_version: 3.2.3
146
- signing_key:
188
+ rubygems_version: 3.6.9
147
189
  specification_version: 4
148
190
  summary: Rails extensions for Slayer.
149
191
  test_files: []
@@ -1,28 +0,0 @@
1
- # .github/workflows/release.yml
2
-
3
- name: Release
4
-
5
- on:
6
- workflow_dispatch:
7
- pull_request:
8
-
9
- jobs:
10
- release:
11
- runs-on: ubuntu-latest
12
- steps:
13
- - uses: actions/checkout@v2
14
- - uses: ruby/setup-ruby@v1
15
- with:
16
- ruby-version: 3.0.0
17
- - run: bundle install
18
- - name: publish gem
19
- run: |
20
- mkdir -p $HOME/.gem
21
- touch $HOME/.gem/credentials
22
- chmod 0600 $HOME/.gem/credentials
23
- printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
24
- gem build *.gemspec
25
- gem push *.gem
26
- env:
27
- GEM_HOST_API_KEY: "${{secrets.RUBYGEMS_AUTH_TOKEN}}"
28
-
data/.rubocop.yml DELETED
@@ -1,66 +0,0 @@
1
- AllCops:
2
- NewCops: enable
3
- SuggestExtensions: false
4
- TargetRubyVersion: 3.1
5
- Include:
6
- - 'lib/**/*.rb'
7
- - 'test/**/*.rb'
8
- - 'spec/**/*.rb'
9
- - '**/Gemfile'
10
- - '**/Rakefile'
11
- Exclude:
12
- - 'bin/**/*'
13
- - 'spec/fixtures/**/*.rb'
14
- - 'spec/dummy/**/*.rb'
15
- - 'lib/generators/**/templates/**'
16
-
17
- Style/HashSyntax:
18
- EnforcedShorthandSyntax: never
19
-
20
- Style/Documentation:
21
- Enabled: false
22
-
23
- Naming/BlockForwarding:
24
- Enabled: false
25
-
26
- Style/RedundantSelf:
27
- Enabled: false
28
-
29
- Style/RedundantReturn:
30
- Enabled: false
31
-
32
- Style/GuardClause:
33
- Enabled: false
34
-
35
- Style/ClassAndModuleChildren:
36
- Enabled: false
37
-
38
- Layout/EmptyLinesAroundClassBody:
39
- Enabled: false
40
-
41
- Style/FrozenStringLiteralComment:
42
- Enabled: false
43
-
44
- Layout/CommentIndentation:
45
- Enabled: false
46
-
47
- Layout/LineLength:
48
- Max: 120
49
-
50
- Metrics/ClassLength:
51
- Max: 120
52
-
53
- Layout/EmptyLineBetweenDefs:
54
- AllowAdjacentOneLineDefs: true
55
-
56
- Naming/MethodParameterName:
57
- AllowedNames:
58
- - _
59
-
60
- Style/ClassVars:
61
- Exclude:
62
- - 'lib/slayer/service.rb'
63
-
64
- Style/MutableConstant:
65
- Exclude:
66
- - 'lib/slayer/version.rb'
data/.travis.yml DELETED
@@ -1,15 +0,0 @@
1
- sudo: false
2
- language: ruby
3
- cache: bundler
4
- before_install:
5
- - gem update --system
6
- - gem update bundler
7
- - gem cleanup bundler
8
- matrix:
9
- include:
10
- - rvm: 2.4.0
11
- gemfile: gemfiles/rails_5.0.gemfile
12
- - rvm: 2.3.0
13
- gemfile: gemfiles/rails_4.2.gemfile
14
- - rvm: 2.3.0
15
- gemfile: gemfiles/rails_5.0.gemfile
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # This file was generated by Appraisal
4
-
5
- source 'https://rubygems.org'
6
-
7
- gem 'appraisal'
8
- gem 'byebug'
9
- gem 'nokogiri'
10
- gem 'rails', '6.1'
11
- gem 'rspec-rails'
12
- gem 'sqlite3'
13
- gem 'tzinfo-data'
14
-
15
- gemspec path: '../'
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # This file was generated by Appraisal
4
-
5
- source 'https://rubygems.org'
6
-
7
- gem 'appraisal'
8
- gem 'byebug'
9
- gem 'nokogiri'
10
- gem 'rails', '7.0'
11
- gem 'rspec-rails'
12
- gem 'sqlite3'
13
- gem 'tzinfo-data'
14
-
15
- gemspec path: '../'