railjet 3.1.0 → 3.4.0

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: 7fd0eeccd892fe25d1d16c29b32005c450cc2fb8a4117eedb3285841a0b17fc9
4
- data.tar.gz: d49747d24cb15b3a18a4cec177e8d5bef8356fbbd29031586359552368d3178c
3
+ metadata.gz: 765fb64e05825428ee6eae457f5fadb92fe642aa227ddc6e7c9cef9920495412
4
+ data.tar.gz: 0e77a9cac10518105531ab72ce642b9c1273d5664188c127a572534f22966be3
5
5
  SHA512:
6
- metadata.gz: 3c5edeaee7236db8b358f02b8c8e5173913b3fef0abcc01f4d8c1bb54d7c0d808cdc0d06c202fb778b8d65c2f52f3f1bc7db7c67d75ec069db5c599ec433c257
7
- data.tar.gz: 6d989eeb3f1d36564a6ad5f9253224729c3f013fdd41857a6c4a5f860b742408e9f6e4b60aa72b7a4184b36c13a60748b9964fc3f87e6d0381929c644b6abb0f
6
+ metadata.gz: 8c8c3d1cceb40cb969c774693176f466b8174a75ecd561b150f13ad97919604498b81df153a2a5c2adc3d69eb544c9f69d544ffb2e9a45fff651dff552a32555
7
+ data.tar.gz: 2d48c061c982a582864453414c9abe2b01b5ce7b51287b17f13e2d84fea6338f4073d40af925ad067334398551117b8d121e2f1f652e4e468086d21100dc1cb9
@@ -0,0 +1,19 @@
1
+ name: Test
2
+
3
+ on: [push]
4
+
5
+ jobs:
6
+ test:
7
+ runs-on: ubuntu-latest
8
+
9
+ steps:
10
+ - name: Checkout
11
+ uses: actions/checkout@v2
12
+
13
+ - name: Setup Ruby
14
+ uses: ruby/setup-ruby@v1
15
+ with:
16
+ bundler-cache: true
17
+
18
+ - name: Run tests
19
+ run: bundle exec rspec spec
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
- # Railjet, architecture for high-speed railway [![Build Status](https://nedap-opensource.semaphoreci.com/badges/railjet/branches/master.svg?style=shields)](https://semaphoreci.com/nedap/railjet)
1
+ # Railjet, architecture for high-speed railway
2
2
 
3
+ [![Maintainability](https://api.codeclimate.com/v1/badges/457bb41a82546fd6e459/maintainability)](https://codeclimate.com/github/nedap/railjet/maintainability)
4
+ [![Test Coverage](https://api.codeclimate.com/v1/badges/457bb41a82546fd6e459/test_coverage)](https://codeclimate.com/github/nedap/railjet/test_coverage)
3
5
 
4
6
  ![Railjet](https://www.swisspasses.com/railpass/popup/railjet/slideshow/RailJet-Zuerich-St.-Anton-Transfer-Ticket-from-Swisspasses.com.jpg)
5
7
 
@@ -251,7 +253,7 @@ end
251
253
 
252
254
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
253
255
 
254
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, run rake task to bump the version `rake version:bump:<major,minor,patch>` and then run `rake release` to release it to gemfury
256
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, run rake task to bump the version `rake version:bump:<major,minor,patch>` and then run `rake release` to release it to https://rubygems.org/
255
257
 
256
258
  ## Contributing
257
259
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 3.1.0
1
+ 3.4.0
@@ -1,22 +1,6 @@
1
1
  ActiveModel::Errors.class_eval do
2
2
  def <<(other)
3
- copy_messages_from(other)
4
- copy_details_from(other) if respond_to?(:details)
5
-
3
+ self.merge!(other)
6
4
  self
7
5
  end
8
-
9
- private
10
-
11
- def copy_details_from(other)
12
- details.merge!(other.details) do |_, val_one, val_two|
13
- [*val_one] + [*val_two]
14
- end
15
- end
16
-
17
- def copy_messages_from(other)
18
- messages.merge!(other.messages) do |_, val_one, val_two|
19
- [*val_one] + [*val_two]
20
- end
21
- end
22
6
  end
@@ -0,0 +1,143 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Railjet
4
+ module Console
5
+ # Adds helper methods for auditing of console customer usage
6
+ module RailjetHelpers
7
+ def setup_railjet(context_class: nil)
8
+ @context_class = context_class
9
+
10
+ @context_class ||= RailjetContextHelper.determine_context_class
11
+
12
+ railjet_helper_after_init_message
13
+ end
14
+
15
+ def railjet_helper_after_init_message
16
+ puts 'Setup finished. railjet helpers are now available from console'
17
+ puts 'available commands:'
18
+ puts "\t- use_case(<Class>)"
19
+ puts "\t- form(<Class>, params)"
20
+ puts "\t- console_context"
21
+ end
22
+
23
+ def railjet_helper_after_load_message
24
+ puts '*' * 61
25
+ puts "\nCall 'setup_railjet' to setup and debug Railjet"
26
+ puts 'Argument are:'
27
+ method(:setup_railjet).parameters.each do |param|
28
+ case param[0]
29
+ when :key, :keyreq
30
+ puts "\t- #{param[1]}:"
31
+ else
32
+ puts "\t- #{param[1]}"
33
+ end
34
+ end
35
+ puts "\n"
36
+ puts '*' * 61
37
+ end
38
+
39
+ def console_context
40
+ @context_class.init(
41
+ *context_params
42
+ )
43
+ end
44
+
45
+ def use_case(klass)
46
+ klass.new(console_context)
47
+ end
48
+
49
+ def form(klass, clean_params)
50
+ klass.new(clean_params).tap(&:validate)
51
+ end
52
+
53
+ def context_params
54
+ parameters, missing_methods = find_context_params
55
+
56
+ RailjetContextHelper.print_context_param_errors(missing_methods)
57
+
58
+ parameters
59
+ end
60
+
61
+ def find_context_params
62
+ parameters = []
63
+ missing_methods = []
64
+
65
+ @context_class.method(:init).parameters.each do |param|
66
+ param_value, missing_method_error = find_context_param(
67
+ param[0], param[1]
68
+ )
69
+
70
+ parameters.push(param_value)
71
+
72
+ if missing_method_error.present?
73
+ missing_methods.push(missing_method_error)
74
+ end
75
+ end
76
+
77
+ [parameters, missing_methods]
78
+ end
79
+
80
+ def find_context_param(type, method_name)
81
+ send("find_#{type}_context_param", method_name)
82
+ end
83
+
84
+ def find_req_context_param(method_name)
85
+ [send(method_name), nil]
86
+ rescue StandardError => e
87
+ [nil, { method_name => e.message }]
88
+ end
89
+ alias find_opt_context_param find_req_context_param
90
+
91
+ def find_keyreq_context_param(method_name)
92
+ [{ method_name => send(method_name) }, nil]
93
+ rescue StandardError => e
94
+ [{ method_name => nil }, { method_name => e.message }]
95
+ end
96
+ alias find_key_context_param find_keyreq_context_param
97
+
98
+ def self.load
99
+ Object.include(self)
100
+ end
101
+
102
+ class RailjetContextHelper
103
+ def self.determine_context_class
104
+ contexts_classes = Railjet::Context.descendants
105
+ contexts_classes.each_with_index do |context_class, index|
106
+ puts "(#{index + 1}) #{context_class}"
107
+ end
108
+
109
+ puts "\nPlease enter the number of needed railjet context"
110
+ puts "(default: #{contexts_classes.first})"
111
+ puts '-' * 61
112
+
113
+ begin
114
+ input = $stdin.gets.strip
115
+ if input.present?
116
+ chosen_index = Float(input)
117
+ contexts_classes.fetch(chosen_index - 1)
118
+ else
119
+ contexts_classes[0]
120
+ end
121
+ rescue StandardError
122
+ puts 'Invalid choice. Please try again.'
123
+ retry
124
+ end
125
+ end
126
+
127
+ def self.print_context_param_errors(missing_methods)
128
+ return if missing_methods.empty?
129
+
130
+ puts '!' * 61
131
+ puts "\nError raised while finding context value(s) for methods below using `nil` instead"
132
+ puts "To assign value simply define function(s) in console and it will be used the next time\n\n"
133
+ missing_methods.each do |error|
134
+ puts "\t- Method `#{error.keys.first}` => error: `#{error.values.first}`"
135
+ end
136
+ puts "\n"
137
+ puts '!' * 61
138
+ end
139
+ end
140
+ end
141
+ end
142
+ end
143
+
@@ -1,3 +1,3 @@
1
1
  module Railjet
2
- VERSION = "3.1.0"
2
+ VERSION = "3.4.0"
3
3
  end
data/lib/railjet.rb CHANGED
@@ -50,3 +50,11 @@ require "railjet/repository/registry"
50
50
  require "railjet/repository"
51
51
  require "railjet/repository/active_record"
52
52
  require "railjet/repository/redis"
53
+
54
+ if defined?(Rails)
55
+ Rails::Application.console do
56
+ require "railjet/console/debug_helpers"
57
+
58
+ Railjet::Console::RailjetHelpers.load
59
+ end
60
+ end
data/railjet.gemspec CHANGED
@@ -23,11 +23,11 @@ Gem::Specification.new do |spec|
23
23
  spec.add_development_dependency "rake", "> 13"
24
24
  spec.add_development_dependency "rspec", "~> 3.0"
25
25
  spec.add_development_dependency "pry"
26
- spec.add_development_dependency "gemfury"
27
26
  spec.add_development_dependency "rake-version", "~> 1.0"
27
+ spec.add_development_dependency "simplecov", "~> 0.17.1"
28
28
 
29
- spec.add_dependency "activesupport", '> 4'
30
- spec.add_dependency "activemodel", '> 4'
29
+ spec.add_dependency "activesupport", '> 5.2'
30
+ spec.add_dependency "activemodel", '> 5.2'
31
31
  spec.add_dependency "virtus", "~> 1.0.2"
32
- spec.add_dependency "validates_timeliness", "~> 4.1"
32
+ spec.add_dependency "validates_timeliness", "6.0.0.beta2" # Update this to ~> 6.0 when an official release is made
33
33
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: railjet
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.0
4
+ version: 3.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Krzysztof Zalewski
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-05-07 00:00:00.000000000 Z
11
+ date: 2022-03-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -67,61 +67,61 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: gemfury
70
+ name: rake-version
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '0'
75
+ version: '1.0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ">="
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '0'
82
+ version: '1.0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: rake-version
84
+ name: simplecov
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '1.0'
89
+ version: 0.17.1
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '1.0'
96
+ version: 0.17.1
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: activesupport
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - ">"
102
102
  - !ruby/object:Gem::Version
103
- version: '4'
103
+ version: '5.2'
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - ">"
109
109
  - !ruby/object:Gem::Version
110
- version: '4'
110
+ version: '5.2'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: activemodel
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - ">"
116
116
  - !ruby/object:Gem::Version
117
- version: '4'
117
+ version: '5.2'
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - ">"
123
123
  - !ruby/object:Gem::Version
124
- version: '4'
124
+ version: '5.2'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: virtus
127
127
  requirement: !ruby/object:Gem::Requirement
@@ -140,16 +140,16 @@ dependencies:
140
140
  name: validates_timeliness
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
- - - "~>"
143
+ - - '='
144
144
  - !ruby/object:Gem::Version
145
- version: '4.1'
145
+ version: 6.0.0.beta2
146
146
  type: :runtime
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
- - - "~>"
150
+ - - '='
151
151
  - !ruby/object:Gem::Version
152
- version: '4.1'
152
+ version: 6.0.0.beta2
153
153
  description: Design patterns for Ruby on Rails
154
154
  email:
155
155
  - zlw.zalewski@gmail.com
@@ -157,11 +157,11 @@ executables: []
157
157
  extensions: []
158
158
  extra_rdoc_files: []
159
159
  files:
160
+ - ".github/workflows/test.yml"
160
161
  - ".gitignore"
161
162
  - ".rspec"
162
163
  - ".ruby-gemset"
163
164
  - ".ruby-version"
164
- - ".semaphore/semaphore.yml"
165
165
  - Gemfile
166
166
  - LICENSE.txt
167
167
  - README.md
@@ -181,6 +181,7 @@ files:
181
181
  - lib/railjet/auth/ability.rb
182
182
  - lib/railjet/auth/activity.rb
183
183
  - lib/railjet/composed_policy.rb
184
+ - lib/railjet/console/debug_helpers.rb
184
185
  - lib/railjet/context.rb
185
186
  - lib/railjet/form.rb
186
187
  - lib/railjet/policy.rb
@@ -202,7 +203,7 @@ homepage: https://github.com/nedap/railjet
202
203
  licenses:
203
204
  - MIT
204
205
  metadata: {}
205
- post_install_message:
206
+ post_install_message:
206
207
  rdoc_options: []
207
208
  require_paths:
208
209
  - lib
@@ -218,7 +219,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
218
219
  version: '0'
219
220
  requirements: []
220
221
  rubygems_version: 3.0.3
221
- signing_key:
222
+ signing_key:
222
223
  specification_version: 4
223
224
  summary: Better architecture for high-speed railway
224
225
  test_files: []
@@ -1,24 +0,0 @@
1
- version: v1.0
2
- name: Initial Pipeline
3
- agent:
4
- machine:
5
- type: e1-standard-2
6
- os_image: ubuntu1804
7
- auto_cancel:
8
- running:
9
- when: "branch != 'master'"
10
- blocks:
11
- - name: 'Block #1'
12
- task:
13
- jobs:
14
- - name: specs
15
- matrix:
16
- - env_var: RUBY_VERSION
17
- values: [ "2.4.10", "2.5.8", "2.6.6", "2.7.1" ]
18
- commands:
19
- - sem-version ruby $RUBY_VERSION
20
- - bundle install --path vendor/bundle
21
- - bundle exec rake spec
22
- prologue:
23
- commands:
24
- - checkout