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 +4 -4
- data/.github/workflows/publish.yml +60 -0
- data/.github/workflows/test.yml +4 -6
- data/.ruby-version +1 -0
- data/.standard.yml +14 -0
- data/Appraisals +18 -9
- data/Dockerfile +1 -1
- data/Gemfile +7 -7
- data/README.md +16 -3
- data/Rakefile +17 -7
- data/bin/release +39 -0
- data/config.ru +2 -2
- data/gemfiles/rails_7.1.gemfile +4 -2
- data/gemfiles/{rails_7.0.gemfile → rails_8.0.gemfile} +5 -3
- data/gemfiles/{rails_6.1.gemfile → rails_8.1.gemfile} +5 -3
- data/lib/generators/command/command_generator.rb +4 -4
- data/lib/generators/form/form_generator.rb +6 -6
- data/lib/generators/scaffold/scaffold_generator.rb +6 -6
- data/lib/generators/slayer_base.rb +2 -2
- data/lib/slayer_rails/extensions/form.rb +8 -8
- data/lib/slayer_rails/extensions/translation.rb +7 -7
- data/lib/slayer_rails/version.rb +1 -1
- data/lib/slayer_rails.rb +12 -12
- data/slayer_rails.gemspec +24 -18
- data/tasks/db.rb +22 -24
- metadata +67 -27
- data/.github/workflows/release.yml +0 -27
- data/.rubocop.yml +0 -66
- data/.travis.yml +0 -15
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4f7b7bf9f3e80dbeca7190c30a0e7d371e3292c83d1a0709708ef4e32c1b4600
|
|
4
|
+
data.tar.gz: 3138904fe5297ea1a1e9fa494380c7a83548468de9e365dfd7a9880a8b6d82ec
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
|
data/.github/workflows/test.yml
CHANGED
|
@@ -12,10 +12,10 @@ jobs:
|
|
|
12
12
|
|
|
13
13
|
strategy:
|
|
14
14
|
matrix:
|
|
15
|
-
ruby-version: ['
|
|
15
|
+
ruby-version: ['4.0', '3.4', '3.3']
|
|
16
16
|
|
|
17
17
|
steps:
|
|
18
|
-
- uses: actions/checkout@
|
|
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:
|
|
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
|
|
31
|
+
bundle exec rake
|
data/.ruby-version
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.4
|
data/.standard.yml
ADDED
data/Appraisals
CHANGED
|
@@ -1,16 +1,25 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
appraise
|
|
4
|
-
gem
|
|
5
|
-
gem
|
|
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
|
|
9
|
-
gem
|
|
10
|
-
gem
|
|
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
|
|
14
|
-
gem
|
|
15
|
-
gem
|
|
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
data/Gemfile
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
source
|
|
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
|
|
9
|
-
gem
|
|
10
|
-
gem
|
|
11
|
-
gem
|
|
12
|
-
gem
|
|
13
|
-
gem
|
|
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
|
|
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 `
|
|
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
|
|
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
|
|
4
|
-
require
|
|
5
|
-
require
|
|
3
|
+
require "rubygems"
|
|
4
|
+
require "bundler/setup"
|
|
5
|
+
require "bundler/gem_tasks"
|
|
6
6
|
|
|
7
|
-
require
|
|
8
|
-
require
|
|
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
|
|
21
|
+
require_relative "spec/dummy/application"
|
|
12
22
|
Dummy::Application.load_tasks
|
|
13
23
|
end
|
|
14
24
|
|
|
15
|
-
task default: :
|
|
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
data/gemfiles/rails_7.1.gemfile
CHANGED
|
@@ -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", "~>
|
|
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", "~>
|
|
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
|
|
6
|
+
desc "This generator creates new Slayer::Commands"
|
|
7
7
|
|
|
8
|
-
source_root File.expand_path(
|
|
9
|
-
check_class_collision suffix:
|
|
8
|
+
source_root File.expand_path("templates", __dir__)
|
|
9
|
+
check_class_collision suffix: "Command"
|
|
10
10
|
|
|
11
11
|
def create_command_files
|
|
12
|
-
template
|
|
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
|
|
6
|
+
desc "This generator creates new Slayer::Forms"
|
|
7
7
|
|
|
8
|
-
source_root File.expand_path(
|
|
9
|
-
check_class_collision suffix:
|
|
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
|
-
|
|
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
|
|
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
|
|
6
|
+
desc "This generator creates a new Slayer::Commands and a corresponding Slayer::Form"
|
|
7
7
|
|
|
8
|
-
source_root File.expand_path(
|
|
9
|
-
check_class_collision suffix:
|
|
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
|
-
|
|
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
|
|
21
|
+
generate "slayer:command", file_name.to_s
|
|
22
22
|
end
|
|
23
23
|
|
|
24
24
|
def create_form_files
|
|
25
|
-
generate
|
|
25
|
+
generate "slayer:form", @args.join(" ").to_s
|
|
26
26
|
end
|
|
27
27
|
end
|
|
28
28
|
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require
|
|
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
|
|
34
|
-
params
|
|
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
|
-
|
|
41
|
-
|
|
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
|
-
|
|
49
|
-
|
|
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
|
|
50
|
-
return
|
|
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
|
data/lib/slayer_rails/version.rb
CHANGED
data/lib/slayer_rails.rb
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require
|
|
4
|
-
require
|
|
5
|
-
require
|
|
6
|
-
require
|
|
3
|
+
require "active_support"
|
|
4
|
+
require "active_model"
|
|
5
|
+
require "active_record"
|
|
6
|
+
require "slayer"
|
|
7
7
|
|
|
8
|
-
require
|
|
9
|
-
require
|
|
10
|
-
require
|
|
11
|
-
require
|
|
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
|
|
14
|
-
require
|
|
15
|
-
require
|
|
16
|
-
require
|
|
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(
|
|
3
|
+
lib = File.expand_path("lib", __dir__)
|
|
4
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
5
|
-
require
|
|
5
|
+
require "slayer_rails/version"
|
|
6
6
|
|
|
7
7
|
Gem::Specification.new do |spec|
|
|
8
|
-
spec.name
|
|
9
|
-
spec.version
|
|
10
|
-
spec.authors
|
|
11
|
-
spec.email
|
|
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
|
|
14
|
-
spec.homepage
|
|
15
|
-
spec.license
|
|
13
|
+
spec.summary = "Rails extensions for Slayer."
|
|
14
|
+
spec.homepage = "http://www.apsis.io"
|
|
15
|
+
spec.license = "MIT"
|
|
16
16
|
|
|
17
|
-
spec.files
|
|
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
|
|
22
|
-
spec.executables
|
|
23
|
-
spec.require_paths = [
|
|
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.
|
|
26
|
-
spec.add_runtime_dependency 'slayer', '>= 0.5'
|
|
25
|
+
spec.required_ruby_version = ">= 3.3.0"
|
|
27
26
|
|
|
28
|
-
spec.
|
|
29
|
-
spec.
|
|
30
|
-
spec.
|
|
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
|
|
6
|
-
require
|
|
7
|
-
require
|
|
5
|
+
require "slayer_rails"
|
|
6
|
+
require "active_record"
|
|
7
|
+
require "yaml"
|
|
8
8
|
|
|
9
|
-
GEM_ROOT
|
|
10
|
-
DB_CONFIG
|
|
11
|
-
SCHEMA_FILE
|
|
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
|
|
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[
|
|
20
|
-
puts
|
|
19
|
+
Rake::Task["db:schema"].invoke
|
|
20
|
+
puts "Database migrated."
|
|
21
21
|
end
|
|
22
22
|
|
|
23
|
-
desc
|
|
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
|
|
26
|
+
require "active_record/schema_dumper"
|
|
27
27
|
|
|
28
|
-
File.open(SCHEMA_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
|
|
35
|
+
desc "Generate migration"
|
|
36
36
|
task :migration do
|
|
37
|
-
name
|
|
38
|
-
timestamp = Time.now.strftime(
|
|
39
|
-
path
|
|
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(
|
|
41
|
+
migration_class = name.split("_").map(&:capitalize).join
|
|
42
42
|
|
|
43
|
-
File.
|
|
44
|
-
|
|
45
|
-
|
|
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
|
-
|
|
50
|
-
|
|
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.
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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: '
|
|
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: '
|
|
109
|
+
version: '13.0'
|
|
69
110
|
- !ruby/object:Gem::Dependency
|
|
70
|
-
name:
|
|
111
|
+
name: standard
|
|
71
112
|
requirement: !ruby/object:Gem::Requirement
|
|
72
113
|
requirements:
|
|
73
|
-
- -
|
|
114
|
+
- - "~>"
|
|
74
115
|
- !ruby/object:Gem::Version
|
|
75
|
-
version: 1.
|
|
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.
|
|
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/
|
|
130
|
+
- ".github/workflows/publish.yml"
|
|
91
131
|
- ".github/workflows/test.yml"
|
|
92
132
|
- ".gitignore"
|
|
93
|
-
- ".
|
|
94
|
-
- ".
|
|
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
|
-
|
|
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:
|
|
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.
|
|
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
|