slayer_rails 0.5.4 → 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: 9eb2cad10c8868fa239994378d096827c2b4ec5ad6022d92ec7d9aea3d96f4ee
4
- data.tar.gz: cead0ce11dfd1f663082de832d8271d8e82d70a7b1f73ba0bcf510fe1e8a0eef
3
+ metadata.gz: 4f7b7bf9f3e80dbeca7190c30a0e7d371e3292c83d1a0709708ef4e32c1b4600
4
+ data.tar.gz: 3138904fe5297ea1a1e9fa494380c7a83548468de9e365dfd7a9880a8b6d82ec
5
5
  SHA512:
6
- metadata.gz: 3b181e25eb01f7ebd9ab7dd35fd0da3ae44912dd868d9e7e8d8eec0342eed07702df082fc811d8f4bb81cdee8b7d141a7a119dfe662cf17e6abe32be9e9c4893
7
- data.tar.gz: 77e9c84240882bb7897b592312b860ce3178e3b35ab5aa14c5c610cb8510e5f51f2d7be64b9355b2293640fc4b622db376589d311b6573355ee8700d19e783e4
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
@@ -12,10 +12,10 @@ jobs:
12
12
 
13
13
  strategy:
14
14
  matrix:
15
- ruby-version: ['3.3', '3.2', '3.1', '3.0', '2.7']
15
+ ruby-version: ['4.0', '3.4', '3.3']
16
16
 
17
17
  steps:
18
- - uses: actions/checkout@v4
18
+ - uses: actions/checkout@v6
19
19
  - name: Set up Ruby
20
20
  uses: ruby/setup-ruby@v1
21
21
  with:
@@ -25,9 +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
28
+ - name: Lint and test
31
29
  run: |
32
30
  RAILS_ENV=test bundle exec rake dummy:db:schema:load
33
- bundle exec appraisal rspec
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,16 +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"
11
17
  end
12
18
 
13
- appraise 'rails_7.1' do
14
- gem 'rails', '~> 7.1'
15
- gem 'tzinfo-data'
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"
16
25
  end
data/Dockerfile CHANGED
@@ -1,4 +1,4 @@
1
- FROM ruby:3.2-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"
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
@@ -5,9 +5,11 @@ source "https://rubygems.org"
5
5
  gem "appraisal"
6
6
  gem "byebug"
7
7
  gem "nokogiri"
8
- gem "rspec-rails"
9
- gem "sqlite3"
8
+ gem "rspec-rails", "~> 6.1"
9
+ gem "sqlite3", "~> 1.4"
10
10
  gem "tzinfo-data"
11
11
  gem "rails", "~> 7.1"
12
+ gem "rspec", "~> 3.12"
13
+ gem "rails-controller-testing"
12
14
 
13
15
  gemspec path: "../"
@@ -5,9 +5,11 @@ source "https://rubygems.org"
5
5
  gem "appraisal"
6
6
  gem "byebug"
7
7
  gem "nokogiri"
8
- gem "rspec-rails"
9
- gem "sqlite3"
8
+ gem "rspec-rails", "~> 8.0"
9
+ gem "sqlite3", "~> 2.1"
10
10
  gem "tzinfo-data"
11
- gem "rails", "~> 7.0"
11
+ gem "rails", "~> 8.0.0"
12
+ gem "rspec", "~> 3.13"
13
+ gem "rails-controller-testing"
12
14
 
13
15
  gemspec path: "../"
@@ -5,9 +5,11 @@ source "https://rubygems.org"
5
5
  gem "appraisal"
6
6
  gem "byebug"
7
7
  gem "nokogiri"
8
- gem "rspec-rails"
9
- gem "sqlite3"
8
+ gem "rspec-rails", "~> 8.0"
9
+ gem "sqlite3", "~> 2.1"
10
10
  gem "tzinfo-data"
11
- gem "rails", "~> 6.1"
11
+ gem "rails", "~> 8.1.0"
12
+ gem "rspec", "~> 3.13"
13
+ gem "rails-controller-testing"
12
14
 
13
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
@@ -19,7 +19,7 @@ module SlayerRails
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.4'
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'
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,29 +1,56 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slayer_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.4
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: 2024-02-13 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
@@ -38,60 +65,73 @@ dependencies:
38
65
  - - ">="
39
66
  - !ruby/object:Gem::Version
40
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,6 +141,7 @@ files:
101
141
  - app/assets/config/manifest.js
102
142
  - bin/console
103
143
  - bin/helpers/docker
144
+ - bin/release
104
145
  - bin/setup
105
146
  - bin/ssh_to_container
106
147
  - config.ru
@@ -109,9 +150,9 @@ files:
109
150
  - db/schema.rb
110
151
  - docker-compose.yml
111
152
  - docker/start.sh
112
- - gemfiles/rails_6.1.gemfile
113
- - gemfiles/rails_7.0.gemfile
114
153
  - gemfiles/rails_7.1.gemfile
154
+ - gemfiles/rails_8.0.gemfile
155
+ - gemfiles/rails_8.1.gemfile
115
156
  - lib/generators/command/command_generator.rb
116
157
  - lib/generators/command/templates/command.rb
117
158
  - lib/generators/form/form_generator.rb
@@ -128,8 +169,8 @@ files:
128
169
  homepage: http://www.apsis.io
129
170
  licenses:
130
171
  - MIT
131
- metadata: {}
132
- post_install_message:
172
+ metadata:
173
+ rubygems_mfa_required: 'true'
133
174
  rdoc_options: []
134
175
  require_paths:
135
176
  - lib
@@ -137,15 +178,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
137
178
  requirements:
138
179
  - - ">="
139
180
  - !ruby/object:Gem::Version
140
- version: '0'
181
+ version: 3.3.0
141
182
  required_rubygems_version: !ruby/object:Gem::Requirement
142
183
  requirements:
143
184
  - - ">="
144
185
  - !ruby/object:Gem::Version
145
186
  version: '0'
146
187
  requirements: []
147
- rubygems_version: 3.4.19
148
- signing_key:
188
+ rubygems_version: 3.6.9
149
189
  specification_version: 4
150
190
  summary: Rails extensions for Slayer.
151
191
  test_files: []
@@ -1,27 +0,0 @@
1
- # .github/workflows/release.yml
2
-
3
- name: Release
4
-
5
- on:
6
- workflow_dispatch:
7
-
8
- jobs:
9
- release:
10
- runs-on: ubuntu-latest
11
- steps:
12
- - uses: actions/checkout@v4
13
- - uses: ruby/setup-ruby@v1
14
- with:
15
- ruby-version: 3.2
16
- - run: bundle install
17
- - name: publish gem
18
- run: |
19
- mkdir -p $HOME/.gem
20
- touch $HOME/.gem/credentials
21
- chmod 0600 $HOME/.gem/credentials
22
- printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
23
- gem build *.gemspec
24
- gem push *.gem
25
- env:
26
- GEM_HOST_API_KEY: "${{secrets.RUBYGEMS_AUTH_TOKEN}}"
27
-
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