better_record 0.17.4 → 0.17.8

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: f4b76163a9ada3cdad8b91898d38f938ba23973212e0282067febd4c23123d3d
4
- data.tar.gz: bc858e27f638903225ad6a123be332ddbbbe56f02142abfcd42e2ad84ca0eb3b
3
+ metadata.gz: bd1965f82f78e6e818577e38880aeffce5d5574c714e822acc24532b1b5f467d
4
+ data.tar.gz: 4ca5cf224a383b9e2fd544c9cda5a597d9d59dcb13ace7f79b1e9799d64f8a05
5
5
  SHA512:
6
- metadata.gz: 57f009e6493ed09db13d5577ea3065365364ace9613efeec56526798ca3aab5794b6e57998ae759d1647090848c8966f38b3631d0298ae8c4a88b1aa35dacab9
7
- data.tar.gz: de1b727ae7428a0457014cc849c2627dbcf50485cbdddca01d4ac712885c9037cb8dcecf2951c13ec37f9faf7479e5a125f49e6bec0251cb7cc3aa6fbe796c4e
6
+ metadata.gz: 8fa73e1d6281562de69eb2b9b6a2de429d12140d560aaa0df90a9efc0d1ffe844da8a6b64a3865b5ed41587c6779635c4c44430dabdd7cb59a05745b2751ef65
7
+ data.tar.gz: 4af01878cc35b56dfb09c196e90ece155f913feb41353f7d6833c260a6bde3e3762a71ee85a8568a5fd417eb2da78dd0819feb14485d8199299b82360102dec0
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ ActiveRecord::Type.register(:exchange_rate_integer, BetterRecord::ExchangeRateInteger::Type)
@@ -0,0 +1,17 @@
1
+ class AddExchangeRateIntegerType < ActiveRecord::Migration[5.2]
2
+ def up
3
+ execute <<-SQL
4
+ DO $$
5
+ BEGIN
6
+ IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'exchange_rate_integer') THEN
7
+ CREATE DOMAIN exchange_rate_integer AS BIGINT NOT NULL DEFAULT 0;
8
+ END IF;
9
+ END
10
+ $$;
11
+ SQL
12
+ end
13
+
14
+ def down
15
+ execute "DROP DOMAIN IF EXISTS exchange_rate_integer;"
16
+ end
17
+ end
data/lib/better_record.rb CHANGED
@@ -88,6 +88,7 @@ ActiveSupport.on_load(:active_record) do
88
88
  end
89
89
  module ConnectionAdapters
90
90
  class TableDefinition
91
+ include BetterRecord::ExchangeRateInteger::TableDefinition
91
92
  include BetterRecord::Gender::TableDefinition
92
93
  include BetterRecord::MoneyInteger::TableDefinition
93
94
  end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+ require 'store_as_int'
3
+
4
+ module BetterRecord
5
+ module ExchangeRateInteger
6
+ module TableDefinition
7
+ def exchange_rate_integer(*args, **opts)
8
+ args.each do |name|
9
+ column name, :exchange_rate_integer, **opts
10
+ end
11
+ end
12
+ end
13
+
14
+ class Type < ActiveRecord::Type::Value
15
+ def cast(value)
16
+ convert_to_exchange_rate(value)
17
+ end
18
+
19
+ def deserialize(value)
20
+ super(convert_to_exchange_rate(value))
21
+ end
22
+
23
+ def serialize(value)
24
+ super(convert_to_exchange_rate(value).value)
25
+ end
26
+
27
+ private
28
+ def convert_to_exchange_rate(value)
29
+ return StoreAsInt::ExchangeRate.new(0) unless value
30
+ if (!value.kind_of?(Numeric))
31
+ begin
32
+ exchange_rate_to_i = (value.gsub(/\%/, '').presence || 0).to_d * StoreAsInt::ExchangeRate.base
33
+ StoreAsInt::ExchangeRate.new(exchange_rate_to_i.to_i)
34
+ rescue
35
+ StoreAsInt::ExchangeRate.new
36
+ end
37
+ else
38
+ StoreAsInt::ExchangeRate.new(value)
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -29,13 +29,13 @@ module BetterRecord
29
29
  return StoreAsInt::Money.new(0) unless value
30
30
  if (!value.kind_of?(Numeric))
31
31
  begin
32
- dollars_to_cents = (value.gsub(/\$/, '').presence || 0).to_d * 100
33
- StoreAsInt.money(dollars_to_cents.to_i)
32
+ dollars_to_cents = (value.gsub(/\$/, '').presence || 0).to_d * StoreAsInt::Money.base
33
+ StoreAsInt::Money.new(dollars_to_cents.to_i)
34
34
  rescue
35
35
  StoreAsInt::Money.new
36
36
  end
37
37
  else
38
- StoreAsInt.money(value)
38
+ StoreAsInt::Money.new(value)
39
39
  end
40
40
  end
41
41
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module BetterRecord
4
- VERSION = '0.17.4'
4
+ VERSION = '0.17.8'
5
5
  end
metadata CHANGED
@@ -1,35 +1,35 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: better_record
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.17.4
4
+ version: 0.17.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sampson Crowley
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-01-15 00:00:00.000000000 Z
11
+ date: 2019-01-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '5.2'
20
17
  - - ">="
21
18
  - !ruby/object:Gem::Version
22
19
  version: 5.2.0
20
+ - - "~>"
21
+ - !ruby/object:Gem::Version
22
+ version: '5.2'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
- - - "~>"
28
- - !ruby/object:Gem::Version
29
- version: '5.2'
30
27
  - - ">="
31
28
  - !ruby/object:Gem::Version
32
29
  version: 5.2.0
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '5.2'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: pg
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -59,7 +59,7 @@ dependencies:
59
59
  version: '0.0'
60
60
  - - ">="
61
61
  - !ruby/object:Gem::Version
62
- version: 0.0.15
62
+ version: 0.0.17
63
63
  type: :runtime
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
@@ -69,7 +69,7 @@ dependencies:
69
69
  version: '0.0'
70
70
  - - ">="
71
71
  - !ruby/object:Gem::Version
72
- version: 0.0.15
72
+ version: 0.0.17
73
73
  - !ruby/object:Gem::Dependency
74
74
  name: pry-rails
75
75
  requirement: !ruby/object:Gem::Requirement
@@ -114,22 +114,22 @@ dependencies:
114
114
  name: jwt
115
115
  requirement: !ruby/object:Gem::Requirement
116
116
  requirements:
117
- - - "~>"
118
- - !ruby/object:Gem::Version
119
- version: '2.1'
120
117
  - - ">="
121
118
  - !ruby/object:Gem::Version
122
119
  version: 2.1.0
120
+ - - "~>"
121
+ - !ruby/object:Gem::Version
122
+ version: '2.1'
123
123
  type: :runtime
124
124
  prerelease: false
125
125
  version_requirements: !ruby/object:Gem::Requirement
126
126
  requirements:
127
- - - "~>"
128
- - !ruby/object:Gem::Version
129
- version: '2.1'
130
127
  - - ">="
131
128
  - !ruby/object:Gem::Version
132
129
  version: 2.1.0
130
+ - - "~>"
131
+ - !ruby/object:Gem::Version
132
+ version: '2.1'
133
133
  - !ruby/object:Gem::Dependency
134
134
  name: jwe
135
135
  requirement: !ruby/object:Gem::Requirement
@@ -154,22 +154,22 @@ dependencies:
154
154
  name: csv
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
- - - "~>"
158
- - !ruby/object:Gem::Version
159
- version: '3.0'
160
157
  - - ">="
161
158
  - !ruby/object:Gem::Version
162
159
  version: 3.0.0
160
+ - - "~>"
161
+ - !ruby/object:Gem::Version
162
+ version: '3.0'
163
163
  type: :runtime
164
164
  prerelease: false
165
165
  version_requirements: !ruby/object:Gem::Requirement
166
166
  requirements:
167
- - - "~>"
168
- - !ruby/object:Gem::Version
169
- version: '3.0'
170
167
  - - ">="
171
168
  - !ruby/object:Gem::Version
172
169
  version: 3.0.0
170
+ - - "~>"
171
+ - !ruby/object:Gem::Version
172
+ version: '3.0'
173
173
  - !ruby/object:Gem::Dependency
174
174
  name: rspec-rails
175
175
  requirement: !ruby/object:Gem::Requirement
@@ -194,22 +194,22 @@ dependencies:
194
194
  name: factory_bot_rails
195
195
  requirement: !ruby/object:Gem::Requirement
196
196
  requirements:
197
- - - "~>"
198
- - !ruby/object:Gem::Version
199
- version: '4.10'
200
197
  - - ">="
201
198
  - !ruby/object:Gem::Version
202
199
  version: 4.10.0
200
+ - - "~>"
201
+ - !ruby/object:Gem::Version
202
+ version: '4.10'
203
203
  type: :development
204
204
  prerelease: false
205
205
  version_requirements: !ruby/object:Gem::Requirement
206
206
  requirements:
207
- - - "~>"
208
- - !ruby/object:Gem::Version
209
- version: '4.10'
210
207
  - - ">="
211
208
  - !ruby/object:Gem::Version
212
209
  version: 4.10.0
210
+ - - "~>"
211
+ - !ruby/object:Gem::Version
212
+ version: '4.10'
213
213
  description: |2
214
214
  This app extends active record to allow you to change the polymorphic type value in relationships.
215
215
  It also extends active record batching functions to be able to order records while batching.
@@ -248,6 +248,7 @@ files:
248
248
  - app/views/better_record/table_sizes/index.html.erb
249
249
  - app/views/better_record/table_sizes/show.html.erb
250
250
  - app/views/layouts/better_record/application.html.erb
251
+ - config/initializers/active_record/exchange_rate_integer_type.rb
251
252
  - config/initializers/active_record/gender_type.rb
252
253
  - config/initializers/active_record/money_integer_type.rb
253
254
  - config/initializers/active_support/time_with_zone.rb
@@ -268,6 +269,7 @@ files:
268
269
  - db/migrate/20180518042070_create_better_record_table_sizes.rb
269
270
  - db/migrate/20181228204403_create_better_record_attachment_validations.rb
270
271
  - db/migrate/20190107202602_add_updated_at_to_better_record_table_sizes.rb
272
+ - db/migrate/20190123225641_add_exchange_rate_integer_type.rb
271
273
  - db/postgres-audit-trigger.psql
272
274
  - lib/better_record.rb
273
275
  - lib/better_record/batches.rb
@@ -284,6 +286,7 @@ files:
284
286
  - lib/better_record/concerns/controllers/uploadable.rb
285
287
  - lib/better_record/encoder.rb
286
288
  - lib/better_record/engine.rb
289
+ - lib/better_record/exchange_rate_integer.rb
287
290
  - lib/better_record/fake_redis.rb
288
291
  - lib/better_record/gender.rb
289
292
  - lib/better_record/inject_methods.rb
@@ -342,8 +345,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
342
345
  - !ruby/object:Gem::Version
343
346
  version: '0'
344
347
  requirements: []
345
- rubyforge_project:
346
- rubygems_version: 2.7.7
348
+ rubygems_version: 3.0.2
347
349
  signing_key:
348
350
  specification_version: 4
349
351
  summary: Fix functions that are lacking in Active record to be compatible with multi-app