slayer_rails 0.4.0.beta4 → 0.5.4
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 +5 -5
- data/.github/workflows/release.yml +27 -0
- data/.github/workflows/test.yml +33 -0
- data/.gitignore +1 -1
- data/.rubocop.yml +66 -0
- data/Appraisals +13 -6
- data/Dockerfile +8 -6
- data/Gemfile +9 -0
- data/Rakefile +10 -10
- data/app/assets/config/manifest.js +3 -0
- data/bin/console +4 -3
- data/bin/setup +2 -0
- data/bin/ssh_to_container +1 -1
- data/config/locales/en.yml +14 -0
- data/config.ru +6 -0
- data/db/migrate/20170214100255_create_person.rb +12 -0
- data/db/schema.rb +22 -0
- data/gemfiles/{rails_4.2.gemfile → rails_6.1.gemfile} +6 -1
- data/gemfiles/{rails_5.0.gemfile → rails_7.0.gemfile} +6 -1
- data/gemfiles/rails_7.1.gemfile +13 -0
- data/lib/generators/command/command_generator.rb +6 -4
- data/lib/generators/command/templates/command.rb +5 -5
- data/lib/generators/form/form_generator.rb +10 -7
- data/lib/generators/scaffold/scaffold_generator.rb +10 -7
- data/lib/generators/slayer_base.rb +2 -0
- data/lib/slayer_rails/extensions/form.rb +13 -8
- data/lib/slayer_rails/extensions/transaction.rb +2 -0
- data/lib/slayer_rails/extensions/translation.rb +17 -23
- data/lib/slayer_rails/version.rb +3 -1
- data/lib/slayer_rails.rb +2 -6
- data/slayer_rails.gemspec +14 -20
- data/tasks/db.rb +16 -15
- metadata +27 -120
- data/bin/run_tests +0 -10
- data/lib/generators/service/service_generator.rb +0 -14
- data/lib/generators/service/templates/service.rb +0 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 9eb2cad10c8868fa239994378d096827c2b4ec5ad6022d92ec7d9aea3d96f4ee
|
|
4
|
+
data.tar.gz: cead0ce11dfd1f663082de832d8271d8e82d70a7b1f73ba0bcf510fe1e8a0eef
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3b181e25eb01f7ebd9ab7dd35fd0da3ae44912dd868d9e7e8d8eec0342eed07702df082fc811d8f4bb81cdee8b7d141a7a119dfe662cf17e6abe32be9e9c4893
|
|
7
|
+
data.tar.gz: 77e9c84240882bb7897b592312b860ce3178e3b35ab5aa14c5c610cb8510e5f51f2d7be64b9355b2293640fc4b622db376589d311b6573355ee8700d19e783e4
|
|
@@ -0,0 +1,27 @@
|
|
|
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
|
+
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
name: Test & Lint
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
test:
|
|
10
|
+
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
|
|
13
|
+
strategy:
|
|
14
|
+
matrix:
|
|
15
|
+
ruby-version: ['3.3', '3.2', '3.1', '3.0', '2.7']
|
|
16
|
+
|
|
17
|
+
steps:
|
|
18
|
+
- uses: actions/checkout@v4
|
|
19
|
+
- name: Set up Ruby
|
|
20
|
+
uses: ruby/setup-ruby@v1
|
|
21
|
+
with:
|
|
22
|
+
ruby-version: ${{ matrix.ruby-version }}
|
|
23
|
+
- name: Install dependencies
|
|
24
|
+
run: |
|
|
25
|
+
bundle install
|
|
26
|
+
bundle exec appraisal install
|
|
27
|
+
RAILS_ENV=test bundle exec rake dummy:db:reset
|
|
28
|
+
- name: Rubocop
|
|
29
|
+
run: rubocop
|
|
30
|
+
- name: Run tests
|
|
31
|
+
run: |
|
|
32
|
+
RAILS_ENV=test bundle exec rake dummy:db:schema:load
|
|
33
|
+
bundle exec appraisal rspec
|
data/.gitignore
CHANGED
data/.rubocop.yml
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
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/Appraisals
CHANGED
|
@@ -1,9 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
appraise 'rails_6.1' do
|
|
4
|
+
gem 'rails', '~> 6.1'
|
|
5
|
+
gem 'tzinfo-data'
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
appraise 'rails_7.0' do
|
|
9
|
+
gem 'rails', '~> 7.0'
|
|
10
|
+
gem 'tzinfo-data'
|
|
4
11
|
end
|
|
5
12
|
|
|
6
|
-
appraise
|
|
7
|
-
gem
|
|
8
|
-
gem
|
|
13
|
+
appraise 'rails_7.1' do
|
|
14
|
+
gem 'rails', '~> 7.1'
|
|
15
|
+
gem 'tzinfo-data'
|
|
9
16
|
end
|
data/Dockerfile
CHANGED
|
@@ -1,16 +1,18 @@
|
|
|
1
|
-
FROM ruby:2
|
|
2
|
-
MAINTAINER wyatt@apsis.io
|
|
1
|
+
FROM ruby:3.2-buster
|
|
3
2
|
|
|
4
|
-
RUN
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
RUN apt-get update -qq && apt-get install -y --no-install-recommends \
|
|
4
|
+
build-essential \
|
|
5
|
+
git \
|
|
6
|
+
bash \
|
|
7
|
+
sqlite3
|
|
8
8
|
|
|
9
9
|
ENV APP_HOME /app
|
|
10
10
|
WORKDIR $APP_HOME
|
|
11
11
|
|
|
12
12
|
COPY . $APP_HOME/
|
|
13
13
|
|
|
14
|
+
RUN bundle config set force_ruby_platform true
|
|
15
|
+
|
|
14
16
|
EXPOSE 3000
|
|
15
17
|
|
|
16
18
|
CMD ["bash"]
|
data/Gemfile
CHANGED
data/Rakefile
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
require "bundler/setup"
|
|
1
|
+
# frozen_string_literal: true
|
|
3
2
|
|
|
4
|
-
require
|
|
5
|
-
require
|
|
3
|
+
require 'rubygems'
|
|
4
|
+
require 'bundler/setup'
|
|
5
|
+
require 'bundler/gem_tasks'
|
|
6
6
|
|
|
7
|
-
require
|
|
7
|
+
require 'rake'
|
|
8
|
+
require 'rspec/core/rake_task'
|
|
8
9
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
t.test_files = FileList['test/**/*_test.rb']
|
|
10
|
+
namespace :dummy do
|
|
11
|
+
require_relative 'spec/dummy/application'
|
|
12
|
+
Dummy::Application.load_tasks
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
-
task :
|
|
15
|
+
task default: :spec
|
data/bin/console
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env ruby
|
|
2
|
+
# frozen_string_literal: true
|
|
2
3
|
|
|
3
|
-
require
|
|
4
|
-
require
|
|
4
|
+
require 'bundler/setup'
|
|
5
|
+
require 'slayer_rails'
|
|
5
6
|
|
|
6
7
|
# You can add fixtures and/or initialization code here to make experimenting
|
|
7
8
|
# with your gem easier. You can also use a different console, if you like.
|
|
@@ -10,5 +11,5 @@ require "slayer_rails"
|
|
|
10
11
|
# require "pry"
|
|
11
12
|
# Pry.start
|
|
12
13
|
|
|
13
|
-
require
|
|
14
|
+
require 'irb'
|
|
14
15
|
IRB.start(__FILE__)
|
data/bin/setup
CHANGED
data/bin/ssh_to_container
CHANGED
data/config.ru
ADDED
data/db/schema.rb
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# This file is auto-generated from the current state of the database. Instead
|
|
4
|
+
# of editing this file, please use the migrations feature of Active Record to
|
|
5
|
+
# incrementally modify your database, and then regenerate this schema definition.
|
|
6
|
+
#
|
|
7
|
+
# This file is the source Rails uses to define your schema when running `bin/rails
|
|
8
|
+
# db:schema:load`. When creating a new database, `bin/rails db:schema:load` tends to
|
|
9
|
+
# be faster and is potentially less error prone than running all of your
|
|
10
|
+
# migrations from scratch. Old migrations may fail to apply correctly if those
|
|
11
|
+
# migrations use external dependencies or application code.
|
|
12
|
+
#
|
|
13
|
+
# It's strongly recommended that you check this file into your version control system.
|
|
14
|
+
|
|
15
|
+
ActiveRecord::Schema.define(version: 20_170_214_100_255) do
|
|
16
|
+
create_table 'people', force: :cascade do |t|
|
|
17
|
+
t.string 'name'
|
|
18
|
+
t.integer 'age'
|
|
19
|
+
t.datetime 'created_at', precision: 6, null: false
|
|
20
|
+
t.datetime 'updated_at', precision: 6, null: false
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -1,13 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Slayer
|
|
2
4
|
module Generators
|
|
3
5
|
class CommandGenerator < NamedBase
|
|
4
|
-
desc
|
|
6
|
+
desc 'This generator creates new Slayer::Commands'
|
|
5
7
|
|
|
6
|
-
source_root File.expand_path(
|
|
7
|
-
check_class_collision suffix:
|
|
8
|
+
source_root File.expand_path('templates', __dir__)
|
|
9
|
+
check_class_collision suffix: 'Command'
|
|
8
10
|
|
|
9
11
|
def create_command_files
|
|
10
|
-
template
|
|
12
|
+
template 'command.rb', File.join('app', 'commands', class_path, "#{file_name}_command.rb")
|
|
11
13
|
end
|
|
12
14
|
end
|
|
13
15
|
end
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
<% module_namespacing do -%>
|
|
2
2
|
class <%= class_name %>Command < Slayer::Command
|
|
3
|
-
def call(
|
|
4
|
-
|
|
3
|
+
def call(args:)
|
|
4
|
+
return err unless args_valid?(args)
|
|
5
5
|
|
|
6
6
|
transaction do
|
|
7
7
|
# Do your database interaction here!
|
|
8
8
|
end
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
ok
|
|
11
11
|
end
|
|
12
12
|
|
|
13
|
-
def
|
|
14
|
-
|
|
13
|
+
def args_valid?(args)
|
|
14
|
+
true
|
|
15
15
|
end
|
|
16
16
|
end
|
|
17
17
|
<% end -%>
|
|
@@ -1,22 +1,25 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Slayer
|
|
2
4
|
module Generators
|
|
3
5
|
class FormGenerator < NamedBase
|
|
4
|
-
desc
|
|
6
|
+
desc 'This generator creates new Slayer::Forms'
|
|
5
7
|
|
|
6
|
-
source_root File.expand_path(
|
|
7
|
-
check_class_collision suffix:
|
|
8
|
+
source_root File.expand_path('templates', __dir__)
|
|
9
|
+
check_class_collision suffix: 'Form'
|
|
8
10
|
|
|
9
11
|
argument :name, type: :string
|
|
10
|
-
argument :fields, :
|
|
12
|
+
argument :fields, type: :array, required: false,
|
|
13
|
+
desc: 'The attributes of the generated form. name:String completed:Boolean'
|
|
11
14
|
|
|
12
|
-
def initialize(args, *options)
|
|
15
|
+
def initialize(args, *options) # :nodoc:
|
|
13
16
|
super
|
|
14
17
|
args.shift
|
|
15
|
-
@fields = args.map{|a| a.split(
|
|
18
|
+
@fields = args.map { |a| a.split(':') }
|
|
16
19
|
end
|
|
17
20
|
|
|
18
21
|
def create_form_files
|
|
19
|
-
template
|
|
22
|
+
template 'form.rb', File.join('app', 'forms', class_path, "#{file_name}_form.rb")
|
|
20
23
|
end
|
|
21
24
|
end
|
|
22
25
|
end
|
|
@@ -1,25 +1,28 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Slayer
|
|
2
4
|
module Generators
|
|
3
5
|
class ScaffoldGenerator < NamedBase
|
|
4
|
-
desc
|
|
6
|
+
desc 'This generator creates a new Slayer::Commands and a corresponding Slayer::Form'
|
|
5
7
|
|
|
6
|
-
source_root File.expand_path(
|
|
7
|
-
check_class_collision suffix:
|
|
8
|
+
source_root File.expand_path('templates', __dir__)
|
|
9
|
+
check_class_collision suffix: 'Command'
|
|
8
10
|
|
|
9
11
|
argument :name, type: :string
|
|
10
|
-
argument :fields, :
|
|
12
|
+
argument :fields, type: :array, required: false,
|
|
13
|
+
desc: 'The attributes of the generated form. name:String completed:Boolean'
|
|
11
14
|
|
|
12
|
-
def initialize(args, *options)
|
|
15
|
+
def initialize(args, *options) # :nodoc:
|
|
13
16
|
super
|
|
14
17
|
@args = args
|
|
15
18
|
end
|
|
16
19
|
|
|
17
20
|
def create_command_files
|
|
18
|
-
generate
|
|
21
|
+
generate 'slayer:command', file_name.to_s
|
|
19
22
|
end
|
|
20
23
|
|
|
21
24
|
def create_form_files
|
|
22
|
-
generate
|
|
25
|
+
generate 'slayer:form', @args.join(' ').to_s
|
|
23
26
|
end
|
|
24
27
|
end
|
|
25
28
|
end
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'json'
|
|
2
4
|
|
|
3
5
|
module SlayerRails
|
|
@@ -5,11 +7,13 @@ module SlayerRails
|
|
|
5
7
|
module Form
|
|
6
8
|
extend ActiveSupport::Concern
|
|
7
9
|
|
|
10
|
+
# rubocop:disable Metrics/BlockLength
|
|
8
11
|
included do
|
|
9
12
|
include ActiveModel::Validations
|
|
10
13
|
|
|
11
14
|
def validate!
|
|
12
15
|
return if valid?
|
|
16
|
+
|
|
13
17
|
message = errors.full_messages.join(', ')
|
|
14
18
|
raise Slayer::FormValidationError, message unless valid?
|
|
15
19
|
end
|
|
@@ -17,9 +21,9 @@ module SlayerRails
|
|
|
17
21
|
def as_model(klass, attr_map = nil)
|
|
18
22
|
all_attrs = klass.new.attributes.keys.map(&:to_sym)
|
|
19
23
|
return klass.new(attributes.slice(*all_attrs)) if attr_map.nil?
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
24
|
+
|
|
25
|
+
attrs = attr_map.transform_values do |val|
|
|
26
|
+
send(val)
|
|
23
27
|
end
|
|
24
28
|
klass.new(attrs)
|
|
25
29
|
end
|
|
@@ -41,8 +45,8 @@ module SlayerRails
|
|
|
41
45
|
|
|
42
46
|
def from_model(model)
|
|
43
47
|
attr_hash = attribute_set.map(&:name)
|
|
44
|
-
|
|
45
|
-
|
|
48
|
+
.select { |attr_name| model.respond_to?(attr_name) }
|
|
49
|
+
.map { |attr_name| [attr_name, model.public_send(attr_name)] }
|
|
46
50
|
|
|
47
51
|
new(attr_hash.to_h)
|
|
48
52
|
end
|
|
@@ -52,16 +56,17 @@ module SlayerRails
|
|
|
52
56
|
end
|
|
53
57
|
|
|
54
58
|
def validates_associated(*keys)
|
|
55
|
-
|
|
59
|
+
validates_each(*keys) do |record, attr, value|
|
|
56
60
|
unless value.valid?
|
|
57
|
-
value.errors.each do |
|
|
58
|
-
record.errors.add(attr, "#{
|
|
61
|
+
value.errors.each do |err|
|
|
62
|
+
record.errors.add(attr, "#{err.attribute} #{err.message}")
|
|
59
63
|
end
|
|
60
64
|
end
|
|
61
65
|
end
|
|
62
66
|
end
|
|
63
67
|
end
|
|
64
68
|
end
|
|
69
|
+
# rubocop:enable Metrics/BlockLength
|
|
65
70
|
end
|
|
66
71
|
end
|
|
67
72
|
end
|
|
@@ -1,42 +1,39 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module SlayerRails
|
|
2
4
|
module Extensions
|
|
3
5
|
module Translation
|
|
4
6
|
extend ActiveSupport::Concern
|
|
5
7
|
|
|
8
|
+
# rubocop:disable Metrics/BlockLength
|
|
6
9
|
included do
|
|
7
|
-
def translate(key, options
|
|
8
|
-
I18n.translate(self.class.full_key(key), options
|
|
10
|
+
def translate(key, **options)
|
|
11
|
+
I18n.translate(self.class.full_key(key), **options)
|
|
9
12
|
end
|
|
10
|
-
|
|
11
|
-
|
|
13
|
+
alias_method :t, :translate
|
|
12
14
|
|
|
13
|
-
def localize(*args)
|
|
14
|
-
I18n.localize(*args)
|
|
15
|
+
def localize(*args, **kwargs)
|
|
16
|
+
I18n.localize(*args, **kwargs)
|
|
15
17
|
end
|
|
16
|
-
|
|
17
|
-
|
|
18
|
+
alias_method :l, :localize
|
|
18
19
|
|
|
19
20
|
class << self
|
|
20
21
|
def full_key(key)
|
|
21
22
|
return key unless key.start_with? '.'
|
|
22
23
|
|
|
23
|
-
|
|
24
|
+
"#{implied_path}#{key}"
|
|
24
25
|
end
|
|
25
26
|
|
|
26
|
-
|
|
27
27
|
def implied_path
|
|
28
28
|
@implied_path ||= build_implied_path
|
|
29
29
|
end
|
|
30
30
|
|
|
31
|
-
|
|
32
31
|
def build_implied_path
|
|
33
|
-
module_path =
|
|
32
|
+
module_path = name.underscore.split('/')
|
|
34
33
|
|
|
35
34
|
class_name_parts = module_path.pop.split('_')
|
|
36
35
|
|
|
37
|
-
if [
|
|
38
|
-
class_name_parts.pop
|
|
39
|
-
end
|
|
36
|
+
class_name_parts.pop if %w[command service form].include? class_name_parts.last
|
|
40
37
|
|
|
41
38
|
module_path.unshift(slayer_type)
|
|
42
39
|
module_path.push(class_name_parts.join('_'))
|
|
@@ -49,17 +46,14 @@ module SlayerRails
|
|
|
49
46
|
end
|
|
50
47
|
|
|
51
48
|
def detect_slayer_type
|
|
52
|
-
if self <= Slayer::Command
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
elsif self <= Slayer::Form
|
|
57
|
-
return 'forms'
|
|
58
|
-
end
|
|
59
|
-
raise NotImplementedException, "Unknown Slayer Class: #{self.name}"
|
|
49
|
+
return 'commands' if self <= Slayer::Command
|
|
50
|
+
return 'forms' if self <= Slayer::Form
|
|
51
|
+
|
|
52
|
+
raise NotImplementedException, "Unknown Slayer Class: #{name}"
|
|
60
53
|
end
|
|
61
54
|
end
|
|
62
55
|
end
|
|
56
|
+
# rubocop:enable Metrics/BlockLength
|
|
63
57
|
end
|
|
64
58
|
end
|
|
65
59
|
end
|
data/lib/slayer_rails/version.rb
CHANGED
data/lib/slayer_rails.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'active_support'
|
|
2
4
|
require 'active_model'
|
|
3
5
|
require 'active_record'
|
|
@@ -10,7 +12,6 @@ require 'slayer_rails/extensions/translation'
|
|
|
10
12
|
|
|
11
13
|
require 'generators/slayer_base'
|
|
12
14
|
require 'generators/command/command_generator'
|
|
13
|
-
require 'generators/service/service_generator'
|
|
14
15
|
require 'generators/form/form_generator'
|
|
15
16
|
require 'generators/scaffold/scaffold_generator'
|
|
16
17
|
|
|
@@ -24,9 +25,4 @@ module Slayer
|
|
|
24
25
|
include SlayerRails::Extensions::Transaction
|
|
25
26
|
include SlayerRails::Extensions::Translation
|
|
26
27
|
end
|
|
27
|
-
|
|
28
|
-
class Service
|
|
29
|
-
include SlayerRails::Extensions::Transaction
|
|
30
|
-
include SlayerRails::Extensions::Translation
|
|
31
|
-
end
|
|
32
28
|
end
|
data/slayer_rails.gemspec
CHANGED
|
@@ -1,37 +1,31 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
lib = File.expand_path('lib', __dir__)
|
|
3
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
5
|
require 'slayer_rails/version'
|
|
5
6
|
|
|
6
7
|
Gem::Specification.new do |spec|
|
|
7
|
-
spec.name =
|
|
8
|
+
spec.name = 'slayer_rails'
|
|
8
9
|
spec.version = SlayerRails::VERSION
|
|
9
|
-
spec.authors = [
|
|
10
|
-
spec.email = [
|
|
10
|
+
spec.authors = ['Wyatt Kirby']
|
|
11
|
+
spec.email = ['wyatt@apsis.io']
|
|
11
12
|
|
|
12
|
-
spec.summary =
|
|
13
|
-
spec.homepage =
|
|
14
|
-
spec.license =
|
|
13
|
+
spec.summary = 'Rails extensions for Slayer.'
|
|
14
|
+
spec.homepage = 'http://www.apsis.io'
|
|
15
|
+
spec.license = 'MIT'
|
|
15
16
|
|
|
16
17
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
|
17
18
|
f.match(%r{^(test|spec|features)/})
|
|
18
19
|
end
|
|
19
20
|
|
|
20
|
-
spec.bindir =
|
|
21
|
+
spec.bindir = 'exe'
|
|
21
22
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
22
|
-
spec.require_paths = [
|
|
23
|
+
spec.require_paths = ['lib']
|
|
23
24
|
|
|
24
|
-
spec.add_runtime_dependency 'slayer', '> 0.3.0'
|
|
25
25
|
spec.add_runtime_dependency 'rails', '>= 4.2.0'
|
|
26
|
+
spec.add_runtime_dependency 'slayer', '>= 0.5'
|
|
26
27
|
|
|
27
|
-
spec.add_development_dependency 'coveralls'
|
|
28
28
|
spec.add_development_dependency 'bundler', '~> 2.0'
|
|
29
|
-
spec.add_development_dependency 'rake', '~>
|
|
30
|
-
spec.add_development_dependency '
|
|
31
|
-
spec.add_development_dependency 'minitest', '~> 5.0'
|
|
32
|
-
spec.add_development_dependency 'minitest-reporters', '~> 1.1'
|
|
33
|
-
spec.add_development_dependency 'mocha', '~> 1.2'
|
|
34
|
-
spec.add_development_dependency 'byebug', '~> 9.0'
|
|
35
|
-
spec.add_development_dependency 'sqlite3', '~> 1.3'
|
|
36
|
-
spec.add_development_dependency 'combustion', '~> 0.5.5'
|
|
29
|
+
spec.add_development_dependency 'rake', '~> 12.0'
|
|
30
|
+
spec.add_development_dependency 'rubocop', '= 1.38.0'
|
|
37
31
|
end
|
data/tasks/db.rb
CHANGED
|
@@ -1,45 +1,46 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
# source: https://gist.github.com/schickling/6762581
|
|
2
4
|
|
|
3
5
|
require 'slayer_rails'
|
|
4
6
|
require 'active_record'
|
|
5
7
|
require 'yaml'
|
|
6
8
|
|
|
7
|
-
GEM_ROOT = File.dirname(
|
|
8
|
-
DB_CONFIG = YAML.
|
|
9
|
-
SCHEMA_FILE = "#{GEM_ROOT}/
|
|
10
|
-
MIGRATION_DIR = "#{GEM_ROOT}/
|
|
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
|
+
MIGRATION_DIR = "#{GEM_ROOT}/spec/dummy/db/migrate"
|
|
11
13
|
|
|
12
14
|
namespace :db do
|
|
13
|
-
desc
|
|
15
|
+
desc 'Migrate the database'
|
|
14
16
|
task :migrate do
|
|
15
17
|
ActiveRecord::Base.establish_connection(DB_CONFIG)
|
|
16
18
|
ActiveRecord::Migrator.migrate(MIGRATION_DIR)
|
|
17
|
-
Rake::Task[
|
|
18
|
-
puts
|
|
19
|
+
Rake::Task['db:schema'].invoke
|
|
20
|
+
puts 'Database migrated.'
|
|
19
21
|
end
|
|
20
22
|
|
|
21
|
-
desc
|
|
23
|
+
desc 'Create a db/schema.rb file that is portable against any supported DB'
|
|
22
24
|
task :schema do
|
|
23
25
|
ActiveRecord::Base.establish_connection(DB_CONFIG)
|
|
24
26
|
require 'active_record/schema_dumper'
|
|
25
27
|
|
|
26
|
-
File.open(SCHEMA_FILE,
|
|
28
|
+
File.open(SCHEMA_FILE, 'w:utf-8') do |file|
|
|
27
29
|
ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, file)
|
|
28
30
|
end
|
|
29
31
|
end
|
|
30
32
|
end
|
|
31
33
|
|
|
32
|
-
|
|
33
34
|
namespace :g do
|
|
34
|
-
desc
|
|
35
|
+
desc 'Generate migration'
|
|
35
36
|
task :migration do
|
|
36
|
-
name = ARGV[1] || raise(
|
|
37
|
-
timestamp = Time.now.strftime(
|
|
37
|
+
name = ARGV[1] || raise('Specify name: rake g:migration name')
|
|
38
|
+
timestamp = Time.now.strftime('%Y%m%d%H%M%S')
|
|
38
39
|
path = File.expand_path("#{MIGRATION_DIR}/#{timestamp}_#{name}.rb", __FILE__)
|
|
39
40
|
|
|
40
|
-
migration_class = name.split(
|
|
41
|
+
migration_class = name.split('_').map(&:capitalize).join
|
|
41
42
|
|
|
42
|
-
File.open(path,
|
|
43
|
+
File.open(path, 'w') do |file|
|
|
43
44
|
file.write <<-EOF.strip_heredoc
|
|
44
45
|
class #{migration_class} < ActiveRecord::Migration
|
|
45
46
|
def change
|
metadata
CHANGED
|
@@ -1,29 +1,15 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: slayer_rails
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.4
|
|
4
|
+
version: 0.5.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Wyatt Kirby
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2024-02-13 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
|
-
- !ruby/object:Gem::Dependency
|
|
14
|
-
name: slayer
|
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
|
16
|
-
requirements:
|
|
17
|
-
- - ">"
|
|
18
|
-
- !ruby/object:Gem::Version
|
|
19
|
-
version: 0.3.0
|
|
20
|
-
type: :runtime
|
|
21
|
-
prerelease: false
|
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
-
requirements:
|
|
24
|
-
- - ">"
|
|
25
|
-
- !ruby/object:Gem::Version
|
|
26
|
-
version: 0.3.0
|
|
27
13
|
- !ruby/object:Gem::Dependency
|
|
28
14
|
name: rails
|
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -39,19 +25,19 @@ dependencies:
|
|
|
39
25
|
- !ruby/object:Gem::Version
|
|
40
26
|
version: 4.2.0
|
|
41
27
|
- !ruby/object:Gem::Dependency
|
|
42
|
-
name:
|
|
28
|
+
name: slayer
|
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
|
44
30
|
requirements:
|
|
45
31
|
- - ">="
|
|
46
32
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: '0'
|
|
48
|
-
type: :
|
|
33
|
+
version: '0.5'
|
|
34
|
+
type: :runtime
|
|
49
35
|
prerelease: false
|
|
50
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
37
|
requirements:
|
|
52
38
|
- - ">="
|
|
53
39
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: '0'
|
|
40
|
+
version: '0.5'
|
|
55
41
|
- !ruby/object:Gem::Dependency
|
|
56
42
|
name: bundler
|
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -72,112 +58,28 @@ dependencies:
|
|
|
72
58
|
requirements:
|
|
73
59
|
- - "~>"
|
|
74
60
|
- !ruby/object:Gem::Version
|
|
75
|
-
version: '
|
|
76
|
-
type: :development
|
|
77
|
-
prerelease: false
|
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
-
requirements:
|
|
80
|
-
- - "~>"
|
|
81
|
-
- !ruby/object:Gem::Version
|
|
82
|
-
version: '10.0'
|
|
83
|
-
- !ruby/object:Gem::Dependency
|
|
84
|
-
name: appraisal
|
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
|
86
|
-
requirements:
|
|
87
|
-
- - "~>"
|
|
88
|
-
- !ruby/object:Gem::Version
|
|
89
|
-
version: '2.1'
|
|
61
|
+
version: '12.0'
|
|
90
62
|
type: :development
|
|
91
63
|
prerelease: false
|
|
92
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
93
65
|
requirements:
|
|
94
66
|
- - "~>"
|
|
95
67
|
- !ruby/object:Gem::Version
|
|
96
|
-
version: '
|
|
68
|
+
version: '12.0'
|
|
97
69
|
- !ruby/object:Gem::Dependency
|
|
98
|
-
name:
|
|
70
|
+
name: rubocop
|
|
99
71
|
requirement: !ruby/object:Gem::Requirement
|
|
100
72
|
requirements:
|
|
101
|
-
- -
|
|
73
|
+
- - '='
|
|
102
74
|
- !ruby/object:Gem::Version
|
|
103
|
-
version:
|
|
75
|
+
version: 1.38.0
|
|
104
76
|
type: :development
|
|
105
77
|
prerelease: false
|
|
106
78
|
version_requirements: !ruby/object:Gem::Requirement
|
|
107
79
|
requirements:
|
|
108
|
-
- -
|
|
109
|
-
- !ruby/object:Gem::Version
|
|
110
|
-
version: '5.0'
|
|
111
|
-
- !ruby/object:Gem::Dependency
|
|
112
|
-
name: minitest-reporters
|
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
|
114
|
-
requirements:
|
|
115
|
-
- - "~>"
|
|
116
|
-
- !ruby/object:Gem::Version
|
|
117
|
-
version: '1.1'
|
|
118
|
-
type: :development
|
|
119
|
-
prerelease: false
|
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
121
|
-
requirements:
|
|
122
|
-
- - "~>"
|
|
123
|
-
- !ruby/object:Gem::Version
|
|
124
|
-
version: '1.1'
|
|
125
|
-
- !ruby/object:Gem::Dependency
|
|
126
|
-
name: mocha
|
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
|
128
|
-
requirements:
|
|
129
|
-
- - "~>"
|
|
80
|
+
- - '='
|
|
130
81
|
- !ruby/object:Gem::Version
|
|
131
|
-
version:
|
|
132
|
-
type: :development
|
|
133
|
-
prerelease: false
|
|
134
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
135
|
-
requirements:
|
|
136
|
-
- - "~>"
|
|
137
|
-
- !ruby/object:Gem::Version
|
|
138
|
-
version: '1.2'
|
|
139
|
-
- !ruby/object:Gem::Dependency
|
|
140
|
-
name: byebug
|
|
141
|
-
requirement: !ruby/object:Gem::Requirement
|
|
142
|
-
requirements:
|
|
143
|
-
- - "~>"
|
|
144
|
-
- !ruby/object:Gem::Version
|
|
145
|
-
version: '9.0'
|
|
146
|
-
type: :development
|
|
147
|
-
prerelease: false
|
|
148
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
149
|
-
requirements:
|
|
150
|
-
- - "~>"
|
|
151
|
-
- !ruby/object:Gem::Version
|
|
152
|
-
version: '9.0'
|
|
153
|
-
- !ruby/object:Gem::Dependency
|
|
154
|
-
name: sqlite3
|
|
155
|
-
requirement: !ruby/object:Gem::Requirement
|
|
156
|
-
requirements:
|
|
157
|
-
- - "~>"
|
|
158
|
-
- !ruby/object:Gem::Version
|
|
159
|
-
version: '1.3'
|
|
160
|
-
type: :development
|
|
161
|
-
prerelease: false
|
|
162
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
163
|
-
requirements:
|
|
164
|
-
- - "~>"
|
|
165
|
-
- !ruby/object:Gem::Version
|
|
166
|
-
version: '1.3'
|
|
167
|
-
- !ruby/object:Gem::Dependency
|
|
168
|
-
name: combustion
|
|
169
|
-
requirement: !ruby/object:Gem::Requirement
|
|
170
|
-
requirements:
|
|
171
|
-
- - "~>"
|
|
172
|
-
- !ruby/object:Gem::Version
|
|
173
|
-
version: 0.5.5
|
|
174
|
-
type: :development
|
|
175
|
-
prerelease: false
|
|
176
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
177
|
-
requirements:
|
|
178
|
-
- - "~>"
|
|
179
|
-
- !ruby/object:Gem::Version
|
|
180
|
-
version: 0.5.5
|
|
82
|
+
version: 1.38.0
|
|
181
83
|
description:
|
|
182
84
|
email:
|
|
183
85
|
- wyatt@apsis.io
|
|
@@ -185,7 +87,10 @@ executables: []
|
|
|
185
87
|
extensions: []
|
|
186
88
|
extra_rdoc_files: []
|
|
187
89
|
files:
|
|
90
|
+
- ".github/workflows/release.yml"
|
|
91
|
+
- ".github/workflows/test.yml"
|
|
188
92
|
- ".gitignore"
|
|
93
|
+
- ".rubocop.yml"
|
|
189
94
|
- ".travis.yml"
|
|
190
95
|
- Appraisals
|
|
191
96
|
- Dockerfile
|
|
@@ -193,22 +98,25 @@ files:
|
|
|
193
98
|
- LICENSE.txt
|
|
194
99
|
- README.md
|
|
195
100
|
- Rakefile
|
|
101
|
+
- app/assets/config/manifest.js
|
|
196
102
|
- bin/console
|
|
197
103
|
- bin/helpers/docker
|
|
198
|
-
- bin/run_tests
|
|
199
104
|
- bin/setup
|
|
200
105
|
- bin/ssh_to_container
|
|
106
|
+
- config.ru
|
|
107
|
+
- config/locales/en.yml
|
|
108
|
+
- db/migrate/20170214100255_create_person.rb
|
|
109
|
+
- db/schema.rb
|
|
201
110
|
- docker-compose.yml
|
|
202
111
|
- docker/start.sh
|
|
203
|
-
- gemfiles/
|
|
204
|
-
- gemfiles/
|
|
112
|
+
- gemfiles/rails_6.1.gemfile
|
|
113
|
+
- gemfiles/rails_7.0.gemfile
|
|
114
|
+
- gemfiles/rails_7.1.gemfile
|
|
205
115
|
- lib/generators/command/command_generator.rb
|
|
206
116
|
- lib/generators/command/templates/command.rb
|
|
207
117
|
- lib/generators/form/form_generator.rb
|
|
208
118
|
- lib/generators/form/templates/form.rb
|
|
209
119
|
- lib/generators/scaffold/scaffold_generator.rb
|
|
210
|
-
- lib/generators/service/service_generator.rb
|
|
211
|
-
- lib/generators/service/templates/service.rb
|
|
212
120
|
- lib/generators/slayer_base.rb
|
|
213
121
|
- lib/slayer_rails.rb
|
|
214
122
|
- lib/slayer_rails/extensions/form.rb
|
|
@@ -232,12 +140,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
232
140
|
version: '0'
|
|
233
141
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
234
142
|
requirements:
|
|
235
|
-
- - "
|
|
143
|
+
- - ">="
|
|
236
144
|
- !ruby/object:Gem::Version
|
|
237
|
-
version:
|
|
145
|
+
version: '0'
|
|
238
146
|
requirements: []
|
|
239
|
-
|
|
240
|
-
rubygems_version: 2.6.13
|
|
147
|
+
rubygems_version: 3.4.19
|
|
241
148
|
signing_key:
|
|
242
149
|
specification_version: 4
|
|
243
150
|
summary: Rails extensions for Slayer.
|
data/bin/run_tests
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
module Slayer
|
|
2
|
-
module Generators
|
|
3
|
-
class ServiceGenerator < NamedBase
|
|
4
|
-
desc "This generator creates new Slayer::Services"
|
|
5
|
-
|
|
6
|
-
source_root File.expand_path("../templates", __FILE__)
|
|
7
|
-
check_class_collision suffix: "Service"
|
|
8
|
-
|
|
9
|
-
def create_service_files
|
|
10
|
-
template "service.rb", File.join("app", "services", class_path, "#{file_name}_service.rb")
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
end
|