steel_wheel 0.5.2 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +0 -0
  3. data/.github/workflows/ruby.yml +21 -26
  4. data/.gitignore +0 -0
  5. data/.rspec +0 -0
  6. data/.rubocop.yml +188 -0
  7. data/.ruby-version +1 -1
  8. data/.travis.yml +0 -0
  9. data/CODE_OF_CONDUCT.md +0 -0
  10. data/Gemfile +10 -0
  11. data/Gemfile.lock +103 -81
  12. data/LICENSE.txt +0 -0
  13. data/README.md +307 -4
  14. data/Rakefile +7 -1
  15. data/assets/action_diagram.png +0 -0
  16. data/bin/console +1 -0
  17. data/lib/generators/steel_wheel/application_handler/USAGE +0 -0
  18. data/lib/generators/steel_wheel/application_handler/application_handler_generator.rb +4 -2
  19. data/lib/generators/steel_wheel/application_handler/templates/handler_template.rb +2 -1
  20. data/lib/generators/steel_wheel/command/USAGE +0 -0
  21. data/lib/generators/steel_wheel/command/command_generator.rb +5 -3
  22. data/lib/generators/steel_wheel/command/templates/command_template.rb +3 -1
  23. data/lib/generators/steel_wheel/handler/USAGE +0 -0
  24. data/lib/generators/steel_wheel/handler/handler_generator.rb +3 -2
  25. data/lib/generators/steel_wheel/handler/templates/handler_template.rb +11 -9
  26. data/lib/generators/steel_wheel/params/USAGE +0 -0
  27. data/lib/generators/steel_wheel/params/params_generator.rb +5 -3
  28. data/lib/generators/steel_wheel/params/templates/params_template.rb +3 -1
  29. data/lib/generators/steel_wheel/query/USAGE +0 -0
  30. data/lib/generators/steel_wheel/query/query_generator.rb +5 -3
  31. data/lib/generators/steel_wheel/query/templates/query_template.rb +3 -1
  32. data/lib/steel_wheel/command.rb +8 -2
  33. data/lib/steel_wheel/handler.rb +86 -29
  34. data/lib/steel_wheel/params.rb +10 -1
  35. data/lib/steel_wheel/query.rb +7 -1
  36. data/lib/steel_wheel/response.rb +10 -5
  37. data/lib/steel_wheel/skip_active_model_errors_keys.rb +12 -1
  38. data/lib/steel_wheel/version.rb +3 -1
  39. data/lib/steel_wheel.rb +3 -1
  40. data/steel_wheel.gemspec +6 -11
  41. metadata +17 -100
@@ -1,3 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SteelWheel
2
- class Params < EasyParams::Base; end
4
+ # Base class for params
5
+ class Params < EasyParams::Base
6
+ def http_status
7
+ return :ok if errors.empty?
8
+
9
+ :bad_request
10
+ end
11
+ end
3
12
  end
@@ -1,4 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SteelWheel
4
+ # Base class for queries
2
5
  class Query
3
6
  include Memery
4
7
  include ActiveModel::Validations
@@ -8,7 +11,10 @@ module SteelWheel
8
11
  end
9
12
 
10
13
  def http_status
11
- errors.keys.first
14
+ return :ok if errors.empty?
15
+ return errors.keys.first unless defined?(ActiveModel::Error)
16
+
17
+ errors.map(&:type).first
12
18
  end
13
19
  end
14
20
  end
@@ -1,14 +1,19 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SteelWheel
4
+ # Base class for responses
2
5
  class Response
3
6
  attr_accessor :status
4
- attr_writer :errors
7
+
5
8
  include ActiveModel::Validations
6
9
 
7
- def self.generic_validation_keys(*keys)
8
- include SteelWheel::SkipActiveModelErrorsKeys[*keys]
9
- end
10
+ unless defined?(ActiveModel::Error)
11
+ def self.generic_validation_keys(*keys)
12
+ include SteelWheel::SkipActiveModelErrorsKeys[*keys]
13
+ end
10
14
 
11
- generic_validation_keys(:not_found, :forbidden, :unprocessable_entity)
15
+ generic_validation_keys(:not_found, :forbidden, :unprocessable_entity, :bad_request, :unauthorized)
16
+ end
12
17
 
13
18
  def self.name
14
19
  'SteelWheel::Response'
@@ -1,7 +1,15 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SteelWheel
4
+ # Allows to treat some error codes as :base
5
+ # EX:
6
+ # generic_validation_keys :not_found
7
+ # errors.add(:not_found, 'Can not find')
8
+ # errors.full_messages => ['Can not find']
9
+ # not ['Not found an not find']
2
10
  module SkipActiveModelErrorsKeys
3
11
  def self.build_module
4
- mod = Module.new do
12
+ Module.new do
5
13
  class << self
6
14
  attr_accessor :skip_keys
7
15
 
@@ -12,6 +20,7 @@ module SteelWheel
12
20
  end
13
21
  end
14
22
 
23
+ # rubocop:disable Metrics/MethodLength
15
24
  def self.patch_errors_method_on_instance(mod, klass)
16
25
  class << klass
17
26
  alias_method :__new__, :new
@@ -21,11 +30,13 @@ module SteelWheel
21
30
  instance = __new__(*args)
22
31
  instance.errors.define_singleton_method :full_message do |attribute, message|
23
32
  return message if mod.skip_keys.include?(attribute)
33
+
24
34
  super(attribute, message)
25
35
  end
26
36
  instance
27
37
  end
28
38
  end
39
+ # rubocop:enable Metrics/MethodLength
29
40
 
30
41
  def self.[](*skip_keys)
31
42
  mod = build_module
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SteelWheel
2
- VERSION = '0.5.2'.freeze
4
+ VERSION = '0.6.0'
3
5
  end
data/lib/steel_wheel.rb CHANGED
@@ -1,6 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'ostruct'
2
4
  require 'easy_params'
3
- require 'flow_object'
5
+ require 'nina'
4
6
  require 'json'
5
7
  require 'active_model'
6
8
  require 'memery'
data/steel_wheel.gemspec CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  lib = File.expand_path('lib', __dir__)
2
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
5
  require 'steel_wheel/version'
@@ -23,7 +25,7 @@ Gem::Specification.new do |spec|
23
25
  # spec.metadata['changelog_uri'] = 'TODO: Put your gem's CHANGELOG.md URL here.'
24
26
  else
25
27
  raise 'RubyGems 2.0 or newer is required to protect against ' \
26
- 'public gem pushes.'
28
+ 'public gem pushes.'
27
29
  end
28
30
 
29
31
  # Specify which files should be added to the gem when it is released.
@@ -34,20 +36,13 @@ Gem::Specification.new do |spec|
34
36
  spec.bindir = 'exe'
35
37
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
36
38
  spec.require_paths = ['lib']
37
- spec.required_ruby_version = '>= 2.4'
39
+ spec.required_ruby_version = '>= 2.6'
38
40
 
39
41
  version_string = ['>= 3.2', '< 8']
40
42
 
41
43
  spec.add_runtime_dependency 'railties', version_string
42
44
 
45
+ spec.add_dependency 'easy_params', '~> 0.3'
43
46
  spec.add_dependency 'memery', '~> 1'
44
- spec.add_dependency 'easy_params', '~> 0.1.2'
45
- spec.add_dependency 'flow_object', '~> 0.3.1'
46
-
47
- spec.add_development_dependency 'bundler', '~> 1.17'
48
- spec.add_development_dependency 'pry', '~> 0.10'
49
- spec.add_development_dependency 'rake', '>= 12.3.3'
50
- spec.add_development_dependency 'rspec', '~> 3.0'
51
- spec.add_development_dependency 'simplecov', '0.17'
52
- spec.add_development_dependency 'rspec_vars_helper', '~> 0.1'
47
+ spec.add_dependency 'nina', '~> 0.1.2'
53
48
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: steel_wheel
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.2
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrii Baran
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-08-20 00:00:00.000000000 Z
11
+ date: 2023-07-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties
@@ -30,132 +30,48 @@ dependencies:
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
32
  version: '8'
33
- - !ruby/object:Gem::Dependency
34
- name: memery
35
- requirement: !ruby/object:Gem::Requirement
36
- requirements:
37
- - - "~>"
38
- - !ruby/object:Gem::Version
39
- version: '1'
40
- type: :runtime
41
- prerelease: false
42
- version_requirements: !ruby/object:Gem::Requirement
43
- requirements:
44
- - - "~>"
45
- - !ruby/object:Gem::Version
46
- version: '1'
47
33
  - !ruby/object:Gem::Dependency
48
34
  name: easy_params
49
35
  requirement: !ruby/object:Gem::Requirement
50
36
  requirements:
51
37
  - - "~>"
52
38
  - !ruby/object:Gem::Version
53
- version: 0.1.2
39
+ version: '0.3'
54
40
  type: :runtime
55
41
  prerelease: false
56
42
  version_requirements: !ruby/object:Gem::Requirement
57
43
  requirements:
58
44
  - - "~>"
59
45
  - !ruby/object:Gem::Version
60
- version: 0.1.2
46
+ version: '0.3'
61
47
  - !ruby/object:Gem::Dependency
62
- name: flow_object
48
+ name: memery
63
49
  requirement: !ruby/object:Gem::Requirement
64
50
  requirements:
65
51
  - - "~>"
66
52
  - !ruby/object:Gem::Version
67
- version: 0.3.1
53
+ version: '1'
68
54
  type: :runtime
69
55
  prerelease: false
70
56
  version_requirements: !ruby/object:Gem::Requirement
71
57
  requirements:
72
58
  - - "~>"
73
59
  - !ruby/object:Gem::Version
74
- version: 0.3.1
75
- - !ruby/object:Gem::Dependency
76
- name: bundler
77
- requirement: !ruby/object:Gem::Requirement
78
- requirements:
79
- - - "~>"
80
- - !ruby/object:Gem::Version
81
- version: '1.17'
82
- type: :development
83
- prerelease: false
84
- version_requirements: !ruby/object:Gem::Requirement
85
- requirements:
86
- - - "~>"
87
- - !ruby/object:Gem::Version
88
- version: '1.17'
89
- - !ruby/object:Gem::Dependency
90
- name: pry
91
- requirement: !ruby/object:Gem::Requirement
92
- requirements:
93
- - - "~>"
94
- - !ruby/object:Gem::Version
95
- version: '0.10'
96
- type: :development
97
- prerelease: false
98
- version_requirements: !ruby/object:Gem::Requirement
99
- requirements:
100
- - - "~>"
101
- - !ruby/object:Gem::Version
102
- version: '0.10'
103
- - !ruby/object:Gem::Dependency
104
- name: rake
105
- requirement: !ruby/object:Gem::Requirement
106
- requirements:
107
- - - ">="
108
- - !ruby/object:Gem::Version
109
- version: 12.3.3
110
- type: :development
111
- prerelease: false
112
- version_requirements: !ruby/object:Gem::Requirement
113
- requirements:
114
- - - ">="
115
- - !ruby/object:Gem::Version
116
- version: 12.3.3
117
- - !ruby/object:Gem::Dependency
118
- name: rspec
119
- requirement: !ruby/object:Gem::Requirement
120
- requirements:
121
- - - "~>"
122
- - !ruby/object:Gem::Version
123
- version: '3.0'
124
- type: :development
125
- prerelease: false
126
- version_requirements: !ruby/object:Gem::Requirement
127
- requirements:
128
- - - "~>"
129
- - !ruby/object:Gem::Version
130
- version: '3.0'
131
- - !ruby/object:Gem::Dependency
132
- name: simplecov
133
- requirement: !ruby/object:Gem::Requirement
134
- requirements:
135
- - - '='
136
- - !ruby/object:Gem::Version
137
- version: '0.17'
138
- type: :development
139
- prerelease: false
140
- version_requirements: !ruby/object:Gem::Requirement
141
- requirements:
142
- - - '='
143
- - !ruby/object:Gem::Version
144
- version: '0.17'
60
+ version: '1'
145
61
  - !ruby/object:Gem::Dependency
146
- name: rspec_vars_helper
62
+ name: nina
147
63
  requirement: !ruby/object:Gem::Requirement
148
64
  requirements:
149
65
  - - "~>"
150
66
  - !ruby/object:Gem::Version
151
- version: '0.1'
152
- type: :development
67
+ version: 0.1.2
68
+ type: :runtime
153
69
  prerelease: false
154
70
  version_requirements: !ruby/object:Gem::Requirement
155
71
  requirements:
156
72
  - - "~>"
157
73
  - !ruby/object:Gem::Version
158
- version: '0.1'
74
+ version: 0.1.2
159
75
  description: Tiny DSL for code in controllers
160
76
  email:
161
77
  - andriy.baran.v@gmail.com
@@ -167,6 +83,7 @@ files:
167
83
  - ".github/workflows/ruby.yml"
168
84
  - ".gitignore"
169
85
  - ".rspec"
86
+ - ".rubocop.yml"
170
87
  - ".ruby-version"
171
88
  - ".travis.yml"
172
89
  - CODE_OF_CONDUCT.md
@@ -209,7 +126,7 @@ metadata:
209
126
  allowed_push_host: https://rubygems.org
210
127
  homepage_uri: https://github.com/andriy-baran/steel_wheel
211
128
  source_code_uri: https://github.com/andriy-baran/steel_wheel
212
- post_install_message:
129
+ post_install_message:
213
130
  rdoc_options: []
214
131
  require_paths:
215
132
  - lib
@@ -217,15 +134,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
217
134
  requirements:
218
135
  - - ">="
219
136
  - !ruby/object:Gem::Version
220
- version: '2.4'
137
+ version: '2.6'
221
138
  required_rubygems_version: !ruby/object:Gem::Requirement
222
139
  requirements:
223
140
  - - ">="
224
141
  - !ruby/object:Gem::Version
225
142
  version: '0'
226
143
  requirements: []
227
- rubygems_version: 3.2.3
228
- signing_key:
144
+ rubygems_version: 3.2.22
145
+ signing_key:
229
146
  specification_version: 4
230
147
  summary: Adds operations to your rails code
231
148
  test_files: []