roqua-support 0.3.5 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 32f750bb036e58d68411a3a96f126a551cb4766811fb7fa0daea753a6d7d3613
4
- data.tar.gz: 4895312bd0ab8055da376681c894d32a62dbb9885d923d6a452cf3688ee076fb
3
+ metadata.gz: ba331b8cd7288dd98818cc40f6bd94eb5a7b4de085536b2acaae63be5fa7bf68
4
+ data.tar.gz: d003572377199b362bb14c681620013f7db75edf7a02a6be2a3661b4dae17edb
5
5
  SHA512:
6
- metadata.gz: '0187621d35a2c8b8e379eb330f6b91a5a34856b6fe411fa2837850af5fb885ce97cb8f69cd2720ce5908b2e081b72f2445fee91a8216d3836be5f3571864ae19'
7
- data.tar.gz: 6148e080d64301dd0cb410ed4c5d0337018411cea03041b865e6c239936ed12f6a7032b451704dbecac984a1c66e5340d87fb69632b184f0fbdaa807f6292765
6
+ metadata.gz: 2f5ca88d5af226aca07fb1d8b212c15ece4b719d13dbbe0bd64fff263c50b8e50d4ed857058694b594d444f100c0e5bc01a59775579d382d3060b6f5b04950fa
7
+ data.tar.gz: 15a161ebb389456b0e3a91ac7f9545c43091596793c03d7167bb6b00532e54cac5a4d7c0f520b12dd89aab8905d2ab21d446cf6e40f09029e9a1c6d8bd84ab7a
data/.gitlab-ci.yml CHANGED
@@ -5,44 +5,28 @@ before_script:
5
5
  - if [ -x "$(command -v apk)" ]; then apk add sqlite-dev; fi
6
6
  - export BUNDLE_PATH=$CI_PROJECT_DIR/.gems
7
7
  - bundle --jobs 2 --retry 3
8
- - bundle exec appraisal
9
- - bundle --jobs 2 --retry 3
8
+ - bundle exec appraisal install
10
9
 
11
- .ruby_25: &ruby_25
12
- image: registry.roqua.nl/roqua/docker-base-images:ruby-2.5
13
- cache:
14
- key: ruby_25
15
- paths:
16
- - .gems
17
10
 
18
- .ruby_26: &ruby_26
19
- image: registry.roqua.nl/roqua/docker-base-images:ruby-2.6-builder
11
+ .ruby_27: &ruby_27
12
+ image: registry.roqua.nl/roqua/docker-base-images:ruby-2.7-builder
20
13
  cache:
21
- key: ruby_26
14
+ key: ruby_27
22
15
  paths:
23
16
  - .gems
24
17
 
25
- rails_51_ruby_25:
26
- <<: *ruby_25
27
- script:
28
- - bundle exec appraisal rails51 bundle exec rspec
29
18
 
30
- rails_52_ruby_25:
31
- <<: *ruby_25
19
+ rails_52_ruby_27:
20
+ <<: *ruby_27
32
21
  script:
33
22
  - bundle exec appraisal rails52 bundle exec rspec
34
23
 
35
- rails_52_ruby_26:
36
- <<: *ruby_26
37
- script:
38
- - bundle exec appraisal rails52 bundle exec rspec
39
-
40
- rails_60_ruby_25:
41
- <<: *ruby_25
24
+ rails_60_ruby_27:
25
+ <<: *ruby_27
42
26
  script:
43
27
  - bundle exec appraisal rails60 bundle exec rspec
44
28
 
45
- rails_60_ruby_26:
46
- <<: *ruby_26
29
+ rails_61_ruby_27:
30
+ <<: *ruby_27
47
31
  script:
48
- - bundle exec appraisal rails60 bundle exec rspec
32
+ - bundle exec appraisal rails61 bundle exec rspec
data/Appraisals CHANGED
@@ -1,16 +1,15 @@
1
- appraise "rails51" do
2
- gem "activesupport", "~> 5.1.0"
3
- gem 'sqlite3', '~> 1.3.6'
4
- end
5
-
6
1
  appraise "rails52" do
2
+ gem "active_interaction", "~> 3.0"
7
3
  gem "activesupport", "~> 5.2.0"
8
- gem 'sqlite3', '~> 1.4'
9
4
  gem 'appsignal', '~> 2.9.8' # test each minor versions we support
10
5
  end
11
6
 
12
7
  appraise "rails60" do
13
8
  gem "activesupport", "~> 6.0.0"
14
- gem 'sqlite3', '~> 1.4'
15
9
  gem 'appsignal', '~> 2.10.6'
16
10
  end
11
+
12
+ appraise "rails61" do
13
+ gem "activesupport", "~> 6.1.0"
14
+ gem 'appsignal', '~> 3.0.0'
15
+ end
data/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ ## 0.4.0
2
+
3
+ * Remove support for ruby 2.5 and 2.6
4
+ * Add stripped_string type (attributes api)
5
+ * Add support for appsignal v3
6
+ * Add support for active_interaction v4
7
+
1
8
  ## 0.3.5
2
9
 
3
10
  * Update AppSignal gauge for every minute the probe runs
data/Gemfile CHANGED
@@ -4,11 +4,12 @@ source 'https://rubygems.org'
4
4
  gemspec
5
5
 
6
6
  gem 'appraisal'
7
- gem 'roqua_styleguide', git: 'https://gitlab.roqua.nl/roqua/styleguide.git'
7
+ # fix so long as we support ruby 2.6 and ealier.
8
+ gem 'roqua_styleguide', git: 'https://gitlab.roqua.nl/roqua/styleguide.git', ref: '9662550'
8
9
 
9
10
  group :test do
11
+ gem 'sqlite3'
10
12
  gem 'actionpack', '>= 4.0'
11
- gem 'active_interaction', '~> 3.0'
12
13
  gem 'climate_control' # For ENV modification in specs
13
14
  gem 'combustion', '~> 1.1.1'
14
15
  gem 'fakefs', require: 'fakefs/safe'
@@ -17,4 +18,4 @@ group :test do
17
18
  gem 'rspec-instrumentation-matcher'
18
19
  gem 'rspec-rails'
19
20
  gem 'pry'
20
- end
21
+ end
data/Gemfile.lock CHANGED
@@ -1,18 +1,19 @@
1
1
  GIT
2
2
  remote: https://gitlab.roqua.nl/roqua/styleguide.git
3
- revision: 6d98107ef10d2dc5a4a785a4b0977f100475e007
3
+ revision: 9662550201987db20c03e300eddb34d8ad035613
4
+ ref: 9662550
4
5
  specs:
5
6
  roqua_styleguide (0.0.8)
6
- rubocop (~> 0.80.0)
7
+ rubocop (~> 0.90.0)
7
8
  rubocop-rails
8
9
 
9
10
  PATH
10
11
  remote: .
11
12
  specs:
12
- roqua-support (0.3.5)
13
- active_interaction (~> 3.0)
14
- activesupport (>= 5.1, < 6.1)
15
- appsignal (>= 2.9, < 2.11)
13
+ roqua-support (0.4.0)
14
+ active_interaction (>= 3.0, < 5.0)
15
+ activesupport (>= 5.2, < 6.2)
16
+ appsignal (>= 2.9, < 3.1)
16
17
  naught (~> 1.0)
17
18
  with_advisory_lock (~> 3.2)
18
19
 
@@ -32,8 +33,8 @@ GEM
32
33
  erubi (~> 1.4)
33
34
  rails-dom-testing (~> 2.0)
34
35
  rails-html-sanitizer (~> 1.1, >= 1.2.0)
35
- active_interaction (3.8.2)
36
- activemodel (>= 4, < 7)
36
+ active_interaction (4.0.0)
37
+ activemodel (>= 5, < 7)
37
38
  activemodel (6.0.2.2)
38
39
  activesupport (= 6.0.2.2)
39
40
  activerecord (6.0.2.2)
@@ -49,9 +50,9 @@ GEM
49
50
  bundler
50
51
  rake
51
52
  thor (>= 0.14.0)
52
- appsignal (2.10.12)
53
+ appsignal (3.0.2)
53
54
  rack
54
- ast (2.4.0)
55
+ ast (2.4.2)
55
56
  builder (3.2.4)
56
57
  climate_control (0.2.0)
57
58
  coderay (1.1.2)
@@ -59,7 +60,7 @@ GEM
59
60
  activesupport (>= 3.0.0)
60
61
  railties (>= 3.0.0)
61
62
  thor (>= 0.14.6)
62
- concurrent-ruby (1.1.6)
63
+ concurrent-ruby (1.1.8)
63
64
  crass (1.0.6)
64
65
  delayed_job (4.1.8)
65
66
  activesupport (>= 3.0, < 6.1)
@@ -83,9 +84,8 @@ GEM
83
84
  guard-rspec (4.2.10)
84
85
  guard (~> 2.1)
85
86
  rspec (>= 2.14, < 4.0)
86
- i18n (1.8.2)
87
+ i18n (1.8.10)
87
88
  concurrent-ruby (~> 1.0)
88
- jaro_winkler (1.5.4)
89
89
  listen (3.2.1)
90
90
  rb-fsevent (~> 0.10, >= 0.10.3)
91
91
  rb-inotify (~> 0.9, >= 0.9.10)
@@ -95,7 +95,7 @@ GEM
95
95
  lumberjack (1.2.4)
96
96
  method_source (1.0.0)
97
97
  mini_portile2 (2.4.0)
98
- minitest (5.14.0)
98
+ minitest (5.14.4)
99
99
  naught (1.1.0)
100
100
  nenv (0.3.0)
101
101
  nokogiri (1.10.9)
@@ -103,13 +103,13 @@ GEM
103
103
  notiffany (0.1.3)
104
104
  nenv (~> 0.1)
105
105
  shellany (~> 0.0)
106
- parallel (1.19.1)
107
- parser (2.7.1.2)
108
- ast (~> 2.4.0)
106
+ parallel (1.20.1)
107
+ parser (3.0.0.0)
108
+ ast (~> 2.4.1)
109
109
  pry (0.13.1)
110
110
  coderay (~> 1.1)
111
111
  method_source (~> 1.0)
112
- rack (2.2.2)
112
+ rack (2.2.3)
113
113
  rack-test (1.1.0)
114
114
  rack (>= 1.0, < 3)
115
115
  rails-dom-testing (2.0.3)
@@ -128,6 +128,7 @@ GEM
128
128
  rb-fsevent (0.10.4)
129
129
  rb-inotify (0.10.1)
130
130
  ffi (~> 1.0)
131
+ regexp_parser (2.1.1)
131
132
  responders (3.0.0)
132
133
  actionpack (>= 5.0)
133
134
  railties (>= 5.0)
@@ -156,36 +157,39 @@ GEM
156
157
  rspec-mocks (~> 3.9)
157
158
  rspec-support (~> 3.9)
158
159
  rspec-support (3.9.3)
159
- rubocop (0.80.1)
160
- jaro_winkler (~> 1.5.1)
160
+ rubocop (0.90.0)
161
161
  parallel (~> 1.10)
162
- parser (>= 2.7.0.1)
162
+ parser (>= 2.7.1.1)
163
163
  rainbow (>= 2.2.2, < 4.0)
164
+ regexp_parser (>= 1.7)
164
165
  rexml
166
+ rubocop-ast (>= 0.3.0, < 1.0)
165
167
  ruby-progressbar (~> 1.7)
166
- unicode-display_width (>= 1.4.0, < 1.7)
167
- rubocop-rails (2.5.2)
168
- activesupport
168
+ unicode-display_width (>= 1.4.0, < 2.0)
169
+ rubocop-ast (0.8.0)
170
+ parser (>= 2.7.1.5)
171
+ rubocop-rails (2.9.1)
172
+ activesupport (>= 4.2.0)
169
173
  rack (>= 1.1)
170
- rubocop (>= 0.72.0)
171
- ruby-progressbar (1.10.1)
174
+ rubocop (>= 0.90.0, < 2.0)
175
+ ruby-progressbar (1.11.0)
172
176
  shellany (0.0.1)
177
+ sqlite3 (1.4.2)
173
178
  thor (1.0.1)
174
179
  thread_safe (0.3.6)
175
180
  timecop (0.9.1)
176
- tzinfo (1.2.7)
181
+ tzinfo (1.2.9)
177
182
  thread_safe (~> 0.1)
178
- unicode-display_width (1.6.1)
183
+ unicode-display_width (1.7.0)
179
184
  with_advisory_lock (3.2.0)
180
185
  activerecord (>= 3.2)
181
- zeitwerk (2.3.0)
186
+ zeitwerk (2.4.2)
182
187
 
183
188
  PLATFORMS
184
189
  ruby
185
190
 
186
191
  DEPENDENCIES
187
192
  actionpack (>= 4.0)
188
- active_interaction (~> 3.0)
189
193
  appraisal
190
194
  bundler (~> 2.0)
191
195
  climate_control
@@ -201,6 +205,7 @@ DEPENDENCIES
201
205
  rspec (>= 2.12.0, < 4.0)
202
206
  rspec-instrumentation-matcher
203
207
  rspec-rails
208
+ sqlite3
204
209
  timecop
205
210
 
206
211
  BUNDLED WITH
data/README.md CHANGED
@@ -104,6 +104,29 @@ class ApiAreaController < ApplicationController
104
104
  ...
105
105
  ```
106
106
 
107
+ ### Types
108
+
109
+ In initializer:
110
+
111
+ ```ruby
112
+ require 'roqua/type'
113
+ ```
114
+
115
+ In models:
116
+
117
+ ```ruby
118
+ # strip whitespace and nil if blank.
119
+ attribute :firstname, :stripped_string
120
+ # strip, but don't nil if blank.
121
+ attribute :firstname, :stripped_string, allow_empty: true
122
+ ```
123
+
124
+ #### option 2
125
+
126
+ `require 'roqua/type/stripped_string'`
127
+
128
+ `attribute :firstname, Roqua::Type::StrippedString.new(allow_empty: true)`
129
+
107
130
  # Delayed Job activity monitoring
108
131
 
109
132
  To add monitoring of whether Delayed Job keeps picking up jobs or checking for new jobs, add the following line to an initializer:
@@ -3,14 +3,14 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "appraisal"
6
- gem "roqua_styleguide", git: "https://gitlab.roqua.nl/roqua/styleguide.git"
6
+ gem "roqua_styleguide", git: "https://gitlab.roqua.nl/roqua/styleguide.git", ref: "9662550"
7
+ gem "active_interaction", "~> 3.0"
7
8
  gem "activesupport", "~> 5.2.0"
8
- gem "sqlite3", "~> 1.4"
9
9
  gem "appsignal", "~> 2.9.8"
10
10
 
11
11
  group :test do
12
+ gem "sqlite3"
12
13
  gem "actionpack", ">= 4.0"
13
- gem "active_interaction", "~> 3.0"
14
14
  gem "climate_control"
15
15
  gem "combustion", "~> 1.1.1"
16
16
  gem "fakefs", require: "fakefs/safe"
@@ -3,14 +3,13 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "appraisal"
6
- gem "roqua_styleguide", git: "https://gitlab.roqua.nl/roqua/styleguide.git"
6
+ gem "roqua_styleguide", git: "https://gitlab.roqua.nl/roqua/styleguide.git", ref: "9662550"
7
7
  gem "activesupport", "~> 6.0.0"
8
- gem "sqlite3", "~> 1.4"
9
8
  gem "appsignal", "~> 2.10.6"
10
9
 
11
10
  group :test do
11
+ gem "sqlite3"
12
12
  gem "actionpack", ">= 4.0"
13
- gem "active_interaction", "~> 3.0"
14
13
  gem "climate_control"
15
14
  gem "combustion", "~> 1.1.1"
16
15
  gem "fakefs", require: "fakefs/safe"
@@ -3,13 +3,13 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "appraisal"
6
- gem "roqua_styleguide", git: "https://gitlab.roqua.nl/roqua/styleguide.git"
7
- gem "activesupport", "~> 5.1.0"
8
- gem "sqlite3", "~> 1.3.6"
6
+ gem "roqua_styleguide", git: "https://gitlab.roqua.nl/roqua/styleguide.git", ref: "9662550"
7
+ gem "activesupport", "~> 6.1.0"
8
+ gem "appsignal", "~> 3.0.0"
9
9
 
10
10
  group :test do
11
+ gem "sqlite3"
11
12
  gem "actionpack", ">= 4.0"
12
- gem "active_interaction", "~> 3.0"
13
13
  gem "climate_control"
14
14
  gem "combustion", "~> 1.1.1"
15
15
  gem "fakefs", require: "fakefs/safe"
@@ -1,5 +1,5 @@
1
1
  module Roqua
2
2
  module Support
3
- VERSION = '0.3.5'.freeze
3
+ VERSION = '0.4.0'.freeze
4
4
  end
5
5
  end
@@ -1,11 +1,11 @@
1
1
  # allow datetimes to be given as unix times for activeinteractions
2
2
  module RoquaDateTimeAsUnixFilterExtension
3
- def cast(value, interaction)
3
+ def cast(value, interaction, **options)
4
4
  case value
5
5
  when Numeric, /^[0-9]+$/
6
6
  Time.at(value.to_i).to_datetime
7
7
  when ''
8
- super(nil, interaction)
8
+ super(nil, interaction, **options)
9
9
  else
10
10
  super
11
11
  end
@@ -15,12 +15,12 @@ ActiveInteraction::DateTimeFilter.include RoquaDateTimeAsUnixFilterExtension
15
15
 
16
16
  # allow datetimes to be given as unix times as string
17
17
  module RoquaTimeAsUnixFilterExtension
18
- def cast(value, interaction)
18
+ def cast(value, interaction, **options)
19
19
  case value
20
20
  when /^[0-9]+$/
21
21
  Time.at(value.to_i)
22
22
  when ''
23
- super(nil, interaction)
23
+ super(nil, interaction, **options)
24
24
  else
25
25
  super
26
26
  end
@@ -29,7 +29,10 @@ class Roqua::Scheduling::Scheduler
29
29
  end
30
30
 
31
31
  def advisory_lock_name
32
- "#{ActiveRecord::Base.connection_config[:database]}_cron_lock"
32
+ db_name = ActiveRecord::Base.respond_to?(:connection_db_config) \
33
+ ? ActiveRecord::Base.connection_db_config.database
34
+ : ActiveRecord::Base.connection_config[:database]
35
+ "#{db_name}_cron_lock"
33
36
  end
34
37
 
35
38
  private
@@ -82,7 +82,10 @@ module Roqua
82
82
  current_transaction.set_tags(labels)
83
83
  current_transaction.add_exception(exception)
84
84
  else
85
- Appsignal.send_error exception, labels, namespace
85
+ Appsignal.send_error exception do |transaction|
86
+ transaction.set_tags labels
87
+ transaction.set_namespace namespace
88
+ end
86
89
  end
87
90
  end
88
91
  end
data/lib/roqua/type.rb ADDED
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "active_model/type"
4
+
5
+ require_relative "./type/stripped_string"
6
+
7
+ ActiveRecord::Type.register(:stripped_string, Roqua::Type::StrippedString)
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Strips whitespace and make nil when string becomes empty.
4
+ module Roqua
5
+ module Type
6
+ class StrippedString < ActiveModel::Type::ImmutableString
7
+ # taken from strip_attributes gem
8
+ # Unicode invisible and whitespace characters. The POSIX character class
9
+ # [:space:] corresponds to the Unicode class Z ("separator"). We also
10
+ # include the following characters from Unicode class C ("control"), which
11
+ # are spaces or invisible characters that make no sense at the start or end
12
+ # of a string:
13
+ # U+180E MONGOLIAN VOWEL SEPARATOR
14
+ # U+200B ZERO WIDTH SPACE
15
+ # U+200C ZERO WIDTH NON-JOINER
16
+ # U+200D ZERO WIDTH JOINER
17
+ # U+2060 WORD JOINER
18
+ # U+FEFF ZERO WIDTH NO-BREAK SPACE
19
+ MULTIBYTE_WHITE = "\u180E\u200B\u200C\u200D\u2060\uFEFF"
20
+ MULTIBYTE_SPACE = /[[:space:]#{MULTIBYTE_WHITE}]/.freeze
21
+
22
+ def initialize(allow_empty: false)
23
+ super()
24
+ @allow_empty = allow_empty
25
+ end
26
+
27
+ def cast(value)
28
+ return unless value
29
+ value = super(value).gsub(/\A#{MULTIBYTE_SPACE}+|#{MULTIBYTE_SPACE}+\z/, "").freeze
30
+ value.blank? && !@allow_empty ? nil : value
31
+ end
32
+ end
33
+ end
34
+ end
@@ -6,7 +6,7 @@ class SubsetValidator < ActiveModel::EachValidator
6
6
  def validate_each(record, attribute, value)
7
7
  return unless value
8
8
  unless value.all? { |element| options.fetch(:of).include? element }
9
- record.errors[attribute] << (options[:message] || I18n.t('errors.messages.subset'))
9
+ record.errors.add attribute, (options[:message] || I18n.t('errors.messages.subset'))
10
10
  end
11
11
  end
12
12
  end
@@ -18,12 +18,12 @@ Gem::Specification.new do |gem|
18
18
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
19
19
  gem.require_paths = ["lib"]
20
20
 
21
- gem.required_ruby_version = '>= 2.5'
22
- gem.add_dependency 'active_interaction', '~> 3.0'
23
- gem.add_dependency 'activesupport', '>= 5.1', '< 6.1'
21
+ gem.required_ruby_version = '>= 2.7'
22
+ gem.add_dependency 'active_interaction', '>= 3.0', '< 5.0'
23
+ gem.add_dependency 'activesupport', '>= 5.2', '< 6.2'
24
24
  gem.add_dependency 'naught', '~> 1.0'
25
25
  gem.add_dependency 'with_advisory_lock', '~> 3.2'
26
- gem.add_dependency 'appsignal', '>= 2.9', '< 2.11'
26
+ gem.add_dependency 'appsignal', '>= 2.9', '< 3.1'
27
27
 
28
28
  gem.add_development_dependency 'bundler', '~> 2.0'
29
29
  gem.add_development_dependency 'delayed_job_active_record'
@@ -51,7 +51,7 @@ describe Roqua::Scheduling::Scheduler do
51
51
  end
52
52
 
53
53
  it 'generates a database specific advisory lock name' do
54
- expect(ActiveRecord::Base.connection_config[:database]).to eql(':memory:')
54
+ # expect(ActiveRecord::Base.connection_config[:database]).to eql(':memory:')
55
55
  expect(subject.advisory_lock_name).to eql ':memory:_cron_lock'
56
56
  end
57
57
 
@@ -106,16 +106,21 @@ describe 'Error reporting' do
106
106
  end
107
107
 
108
108
  it 'defaults to a background job' do
109
- expect(Appsignal).to receive(:send_error).with(exception, {}, Appsignal::Transaction::BACKGROUND_JOB)
109
+ transaction = Appsignal::Transaction.new(SecureRandom.uuid, Appsignal::Transaction::FRONTEND, nil)
110
+ expect(Appsignal).to receive(:send_error).with(exception).and_yield(transaction)
110
111
  Roqua::Support::Errors.report exception
112
+ expect(transaction.namespace).to eq Appsignal::Transaction::BACKGROUND_JOB
111
113
  end
112
114
 
113
115
  it 'it will send an error under the provided category' do
116
+ transaction = Appsignal::Transaction.new(SecureRandom.uuid, Appsignal::Transaction::FRONTEND, nil)
114
117
  expect(Appsignal)
115
118
  .to receive(:send_error)
116
- .with(exception, {a: 'b'}, Appsignal::Transaction::HTTP_REQUEST)
119
+ .with(exception).and_yield(transaction)
117
120
 
118
121
  Roqua::Support::Errors.report exception, a: 'b', namespace: :web
122
+ expect(transaction.namespace).to eq Appsignal::Transaction::HTTP_REQUEST
123
+ expect(transaction.tags).to eq a: 'b'
119
124
  end
120
125
 
121
126
  describe 'when a current transaction is present' do
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+ require 'roqua/type/stripped_string'
5
+
6
+ RSpec.describe Roqua::Type::StrippedString do
7
+ let(:cls) do
8
+ Class.new(ActiveRecord::Base) do
9
+ self.table_name = 'delayed_jobs'
10
+
11
+ attribute :locked_by, Roqua::Type::StrippedString.new
12
+ attribute :queue, Roqua::Type::StrippedString.new(allow_empty: true)
13
+ end
14
+ end
15
+
16
+ it "strips whitespace from outside and not inside" do
17
+ expect(described_class.new.cast(" some name \n \t \u180E\u200B\u200C\u200D\u2060\uFEFF ")).to eq "some name"
18
+ end
19
+
20
+ it "nils empty values by default" do
21
+ expect(described_class.new.cast(" \n \t ")).to eq nil
22
+ end
23
+
24
+ it "keeps value empty if allow_empty is true" do
25
+ expect(described_class.new(allow_empty: true).cast(" \n \t ")).to eq ""
26
+ end
27
+
28
+ it "works on active_record" do
29
+ instance = cls.new(locked_by: " \n \t ", queue: " \n \t ", cron: " \n \t ")
30
+ expect(instance.locked_by).to be_nil
31
+ expect(instance.queue).to eq ""
32
+ expect(instance.cron).to eq " \n \t "
33
+ end
34
+ end
metadata CHANGED
@@ -1,49 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: roqua-support
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.5
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marten Veldthuis
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-11-24 00:00:00.000000000 Z
11
+ date: 2021-04-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: active_interaction
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '3.0'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '5.0'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - "~>"
27
+ - - ">="
25
28
  - !ruby/object:Gem::Version
26
29
  version: '3.0'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '5.0'
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: activesupport
29
35
  requirement: !ruby/object:Gem::Requirement
30
36
  requirements:
31
37
  - - ">="
32
38
  - !ruby/object:Gem::Version
33
- version: '5.1'
39
+ version: '5.2'
34
40
  - - "<"
35
41
  - !ruby/object:Gem::Version
36
- version: '6.1'
42
+ version: '6.2'
37
43
  type: :runtime
38
44
  prerelease: false
39
45
  version_requirements: !ruby/object:Gem::Requirement
40
46
  requirements:
41
47
  - - ">="
42
48
  - !ruby/object:Gem::Version
43
- version: '5.1'
49
+ version: '5.2'
44
50
  - - "<"
45
51
  - !ruby/object:Gem::Version
46
- version: '6.1'
52
+ version: '6.2'
47
53
  - !ruby/object:Gem::Dependency
48
54
  name: naught
49
55
  requirement: !ruby/object:Gem::Requirement
@@ -81,7 +87,7 @@ dependencies:
81
87
  version: '2.9'
82
88
  - - "<"
83
89
  - !ruby/object:Gem::Version
84
- version: '2.11'
90
+ version: '3.1'
85
91
  type: :runtime
86
92
  prerelease: false
87
93
  version_requirements: !ruby/object:Gem::Requirement
@@ -91,7 +97,7 @@ dependencies:
91
97
  version: '2.9'
92
98
  - - "<"
93
99
  - !ruby/object:Gem::Version
94
- version: '2.11'
100
+ version: '3.1'
95
101
  - !ruby/object:Gem::Dependency
96
102
  name: bundler
97
103
  requirement: !ruby/object:Gem::Requirement
@@ -188,9 +194,9 @@ files:
188
194
  - README.md
189
195
  - Rakefile
190
196
  - circle.yml
191
- - gemfiles/rails51.gemfile
192
197
  - gemfiles/rails52.gemfile
193
198
  - gemfiles/rails60.gemfile
199
+ - gemfiles/rails61.gemfile
194
200
  - lib/roqua-support.rb
195
201
  - lib/roqua-support/railtie.rb
196
202
  - lib/roqua-support/version.rb
@@ -224,6 +230,8 @@ files:
224
230
  - lib/roqua/support/request_logger.rb
225
231
  - lib/roqua/support/stats.rb
226
232
  - lib/roqua/support/stats/hosted_graphite_backend.rb
233
+ - lib/roqua/type.rb
234
+ - lib/roqua/type/stripped_string.rb
227
235
  - lib/roqua/validators/subset_validator.rb
228
236
  - roqua-support.gemspec
229
237
  - spec/internal/config/balancer_state
@@ -250,6 +258,7 @@ files:
250
258
  - spec/roqua/support/request_logger_spec.rb
251
259
  - spec/roqua/support/stats_spec.rb
252
260
  - spec/roqua/support_spec.rb
261
+ - spec/roqua/type/stripped_string_spec.rb
253
262
  - spec/roqua/validators/subset_validator_spec.rb
254
263
  - spec/spec_helper.rb
255
264
  - styleguide/ruby/rubocop.yml
@@ -265,7 +274,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
265
274
  requirements:
266
275
  - - ">="
267
276
  - !ruby/object:Gem::Version
268
- version: '2.5'
277
+ version: '2.7'
269
278
  required_rubygems_version: !ruby/object:Gem::Requirement
270
279
  requirements:
271
280
  - - ">="
@@ -301,5 +310,6 @@ test_files:
301
310
  - spec/roqua/support/request_logger_spec.rb
302
311
  - spec/roqua/support/stats_spec.rb
303
312
  - spec/roqua/support_spec.rb
313
+ - spec/roqua/type/stripped_string_spec.rb
304
314
  - spec/roqua/validators/subset_validator_spec.rb
305
315
  - spec/spec_helper.rb