amountable 0.2.6 → 0.3.2

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
- SHA1:
3
- metadata.gz: 6e145cd82c4b5847530ddd449de2ec1818ae60d5
4
- data.tar.gz: 84b68e8cf0f8cfa202179c75b7d7e75ac7d658b9
2
+ SHA256:
3
+ metadata.gz: aee387d2d2d88c2fc8086dd0cc4b09293e775bd3c9a4f5e6bc507d18ca06976b
4
+ data.tar.gz: 93b2fef942db13a396dae78c9fe533d74290f7ffd47b0df6d581fe8e5fdcbf72
5
5
  SHA512:
6
- metadata.gz: 1bc432398eaa8a091f1a80654efed493fef2fdf84ee9557ccb463194538ede8b64373eb22701f61f22b408100807c796f341232120925f772540d8f60d8bf941
7
- data.tar.gz: 218f5b307d72a04ef4022ed51193160f816abe0db742deebe086d267465b2296fcca29a3cb15837e6011a96ab08ba8508e659f1dd0a6d91d5f70ce947ba8c60d
6
+ metadata.gz: 2c090c0efc1c00740a594f805fa49c967adce57369b19d5d509be9c1d708e454a9ce778d7d262aee3ae387d050e6f5b70692fc9a4b4f06ad520732388e78bf5e
7
+ data.tar.gz: 4119055f5f5e0631abf38758e638e2fa5619b5136c09a740a799bbe1b9743d36a662b37f7a091a0129090b397cf800b91c15e5fd7d3429d1b56d91a9ec451666
@@ -0,0 +1,11 @@
1
+ # To get started with Dependabot version updates, you'll need to specify which
2
+ # package ecosystems to update and where the package manifests are located.
3
+ # Please see the documentation for all configuration options:
4
+ # https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
5
+
6
+ version: 2
7
+ updates:
8
+ - package-ecosystem: "bundler" # See documentation for possible values
9
+ directory: "/" # Location of package manifests
10
+ schedule:
11
+ interval: "daily"
@@ -0,0 +1,43 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ pull_request:
6
+
7
+ jobs:
8
+ build:
9
+ runs-on: ubuntu-latest
10
+ strategy:
11
+ matrix:
12
+ ruby:
13
+ - 2.6
14
+ - 2.7
15
+ services:
16
+ postgres:
17
+ image: postgres:12
18
+ ports:
19
+ - 5432:5432
20
+ env:
21
+ POSTGRES_HOST_AUTH_METHOD: trust
22
+ POSTGRES_DB: amountable_test
23
+ options: >-
24
+ --health-cmd pg_isready
25
+ --health-interval 10s
26
+ --health-timeout 5s
27
+ --health-retries 5
28
+
29
+ name: Ruby ${{ matrix.ruby }}
30
+ steps:
31
+ - uses: actions/checkout@v2
32
+ - run: |
33
+ sudo apt-get -yqq install libpq-dev
34
+ - uses: ruby/setup-ruby@v1
35
+ with:
36
+ ruby-version: ${{ matrix.ruby }}
37
+ bundler-cache: true
38
+ - run: |
39
+ bundle exec rake
40
+ env:
41
+ PGHOST: 127.0.0.1
42
+ PGUSER: postgres
43
+ RAILS_ENV: test
@@ -0,0 +1,34 @@
1
+ name: Ruby Gem
2
+
3
+ on:
4
+ release:
5
+ types:
6
+ - published
7
+
8
+ jobs:
9
+ build:
10
+ name: Build + Publish
11
+ runs-on: ubuntu-latest
12
+
13
+ steps:
14
+ - uses: actions/checkout@v2
15
+ - uses: actions/setup-ruby@v1
16
+ - name: Build
17
+ run: |
18
+ gem build *.gemspec
19
+ - name: Publish to Github
20
+ run: |
21
+ mkdir -p $HOME/.gem
22
+ touch $HOME/.gem/credentials
23
+ chmod 0600 $HOME/.gem/credentials
24
+ printf -- "---\n:github: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
25
+ gem push --verbose --key github --host https://rubygems.pkg.github.com/${OWNER} *.gem
26
+ env:
27
+ GEM_HOST_API_KEY: "Bearer ${{secrets.GITHUB_TOKEN}}"
28
+ OWNER: ${{ github.repository_owner }}
29
+ continue-on-error: true
30
+ - name: Publish to RubyGems
31
+ run: |
32
+ gem push --verbose *.gem
33
+ env:
34
+ GEM_HOST_API_KEY: ${{secrets.RUBYGEMS_TOKEN}}
@@ -17,10 +17,10 @@ Gem::Specification.new do |gem|
17
17
  gem.require_paths = ['lib']
18
18
  gem.required_ruby_version = '>= 2.1.1'
19
19
 
20
- gem.add_dependency 'activerecord', '>= 4.1', '< 5.1'
21
- gem.add_dependency 'activesupport', '>= 4.1', '< 5.1'
22
- gem.add_dependency 'activerecord-import', '~> 0.19.1'
23
- gem.add_dependency 'money-rails'
20
+ gem.add_dependency 'activerecord', '>= 4.1', '< 6.1'
21
+ gem.add_dependency 'activesupport', '>= 4.1'
22
+ gem.add_dependency 'activerecord-import', '>= 0.19.1'
23
+ gem.add_dependency 'money-rails', '>=1.7.0'
24
24
  gem.add_dependency 'monetize'
25
25
 
26
26
  gem.add_development_dependency 'sqlite3'
@@ -4,6 +4,7 @@ module Amountable
4
4
  extend ActiveSupport::Autoload
5
5
  autoload :Operations
6
6
  autoload :Amount
7
+ autoload :VirtualAmount
7
8
  autoload :NilAmount
8
9
  autoload :VERSION
9
10
  autoload :TableMethods
@@ -71,7 +72,6 @@ module Amountable
71
72
  include Amountable::TableMethods
72
73
  when :jsonb
73
74
  self.amounts_column_name = options[:column].to_s if options[:column]
74
- raise MissingColumn.new("You need an amounts jsonb field on the #{self.table_name} table.") unless column_names.include?(self.amounts_column_name)
75
75
  include Amountable::JsonbMethods
76
76
  else
77
77
  raise ArgumentError.new("Please specify a storage: #{ALLOWED_STORAGE}")
@@ -6,7 +6,7 @@ module Amountable
6
6
 
7
7
  def amounts
8
8
  @_amounts ||= attribute(amounts_column_name).to_h['amounts'].to_h.map do |name, amount|
9
- Amount.new(name: name, value_cents: amount['cents'], value_currency: amount['value_currency'], persistable: false, amountable: self)
9
+ Amountable::VirtualAmount.new(name: name, value_cents: amount['cents'], value_currency: amount['currency'], persistable: false, amountable: self)
10
10
  end.to_set
11
11
  end
12
12
 
@@ -1,5 +1,5 @@
1
1
  # Copyright 2015-2017, Instacart
2
2
 
3
3
  module Amountable
4
- VERSION = '0.2.6'
4
+ VERSION = '0.3.2'
5
5
  end
@@ -0,0 +1,35 @@
1
+ # Copyright 2015-2017, Instacart
2
+
3
+ module Amountable
4
+ class VirtualAmount
5
+ include ActiveModel::Model
6
+
7
+ attr_accessor :amountable, :value_cents, :value_currency, :name, :persistable
8
+
9
+ include Amountable::Operations
10
+
11
+ validates :name, presence: true
12
+
13
+ def value
14
+ Money.new(value_cents, value_currency)
15
+ end
16
+
17
+ def value=(val)
18
+ self.value_cents = value.fractional
19
+ self.value_currency = value.currency.iso_code
20
+ end
21
+
22
+ def new_record?
23
+ true
24
+ end
25
+
26
+ def persisted?
27
+ false
28
+ end
29
+
30
+ def save
31
+ raise StandardError.new("Can't persist amount to database") if persistable == false
32
+ super
33
+ end
34
+ end
35
+ end
@@ -30,13 +30,7 @@ rescue
30
30
  end
31
31
 
32
32
  def jsonb_available?
33
- return @@jsonb_available if defined?(@@jsonb_available)
34
- @@jsonb_available = if ActiveRecord::Base.connection.class.ancestors.include?(ActiveRecord::Import::PostgreSQLAdapter)
35
- version = /PostgreSQL\s(\d+.\d+.\d+)\s/.match(ActiveRecord::Base.connection.execute("select version();")[0]['version'])[1].split('.').map(&:to_i)
36
- version[0] >= 9 && version[1] >= 3
37
- else
38
- false
39
- end
33
+ true
40
34
  end
41
35
 
42
36
  require_relative '../internal/db/schema'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: amountable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.6
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Emmanuel Turlay
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-11 00:00:00.000000000 Z
11
+ date: 2021-01-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -19,7 +19,7 @@ dependencies:
19
19
  version: '4.1'
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '5.1'
22
+ version: '6.1'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,7 +29,7 @@ dependencies:
29
29
  version: '4.1'
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '5.1'
32
+ version: '6.1'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: activesupport
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -37,9 +37,6 @@ dependencies:
37
37
  - - ">="
38
38
  - !ruby/object:Gem::Version
39
39
  version: '4.1'
40
- - - "<"
41
- - !ruby/object:Gem::Version
42
- version: '5.1'
43
40
  type: :runtime
44
41
  prerelease: false
45
42
  version_requirements: !ruby/object:Gem::Requirement
@@ -47,21 +44,18 @@ dependencies:
47
44
  - - ">="
48
45
  - !ruby/object:Gem::Version
49
46
  version: '4.1'
50
- - - "<"
51
- - !ruby/object:Gem::Version
52
- version: '5.1'
53
47
  - !ruby/object:Gem::Dependency
54
48
  name: activerecord-import
55
49
  requirement: !ruby/object:Gem::Requirement
56
50
  requirements:
57
- - - "~>"
51
+ - - ">="
58
52
  - !ruby/object:Gem::Version
59
53
  version: 0.19.1
60
54
  type: :runtime
61
55
  prerelease: false
62
56
  version_requirements: !ruby/object:Gem::Requirement
63
57
  requirements:
64
- - - "~>"
58
+ - - ">="
65
59
  - !ruby/object:Gem::Version
66
60
  version: 0.19.1
67
61
  - !ruby/object:Gem::Dependency
@@ -70,14 +64,14 @@ dependencies:
70
64
  requirements:
71
65
  - - ">="
72
66
  - !ruby/object:Gem::Version
73
- version: '0'
67
+ version: 1.7.0
74
68
  type: :runtime
75
69
  prerelease: false
76
70
  version_requirements: !ruby/object:Gem::Requirement
77
71
  requirements:
78
72
  - - ">="
79
73
  - !ruby/object:Gem::Version
80
- version: '0'
74
+ version: 1.7.0
81
75
  - !ruby/object:Gem::Dependency
82
76
  name: monetize
83
77
  requirement: !ruby/object:Gem::Requirement
@@ -198,6 +192,9 @@ executables: []
198
192
  extensions: []
199
193
  extra_rdoc_files: []
200
194
  files:
195
+ - ".github/dependabot.yml"
196
+ - ".github/workflows/CI.yml"
197
+ - ".github/workflows/gem-push.yml"
201
198
  - ".gitignore"
202
199
  - ".rspec"
203
200
  - ".travis.yml"
@@ -214,6 +211,7 @@ files:
214
211
  - lib/amountable/operations.rb
215
212
  - lib/amountable/table_methods.rb
216
213
  - lib/amountable/version.rb
214
+ - lib/amountable/virtual_amount.rb
217
215
  - spec/amountable/amount_spec.rb
218
216
  - spec/amountable/amountable_spec.rb
219
217
  - spec/amountable/nil_amount_spec.rb
@@ -243,8 +241,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
243
241
  - !ruby/object:Gem::Version
244
242
  version: '0'
245
243
  requirements: []
246
- rubyforge_project:
247
- rubygems_version: 2.5.2
244
+ rubygems_version: 3.1.4
248
245
  signing_key:
249
246
  specification_version: 4
250
247
  summary: Easy Money fields for your Rails models.