simple_hstore_accessor 0.2.0 → 0.3.1
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 +4 -4
- data/.drone.yml +21 -0
- data/CHANGELOG.md +36 -15
- data/dip.yml +38 -0
- data/docker-compose.development.yml +12 -0
- data/docker-compose.drone.yml +7 -0
- data/docker-compose.yml +18 -0
- data/lib/simple_hstore_accessor.rb +4 -2
- data/lib/simple_hstore_accessor/version.rb +1 -1
- data/simple_hstore_accessor.gemspec +1 -1
- data/spec/app/models/dummy_json_spec.rb +23 -0
- data/spec/app/models/dummy_spec.rb +2 -108
- data/spec/internal/app/models/dummy_json.rb +6 -0
- data/spec/internal/app/models/dummy_json_association.rb +2 -0
- data/spec/internal/config/database.yml +5 -0
- data/spec/internal/db/schema.rb +8 -0
- data/spec/spec_helper.rb +3 -0
- data/spec/support/shared_examples/general_behavior.rb +109 -0
- metadata +70 -57
- data/spec/internal/config/.gitignore +0 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d7654264229aa923b1eaf16bb8a2cbdb6d2a524f
|
|
4
|
+
data.tar.gz: 7e289f8b6eace32d3acad43d5a7380159a5a2d80
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e41061f46c676379a61ed14e7bdb24ef848df69314b98a6fbd4a11b56d8a4dbf9ef54e7cdce574899b58789c58e21668e89bad688d3522ea4ff13417c7c38152
|
|
7
|
+
data.tar.gz: 19bb40fefdc4c0979d1382fc378fa748fc35b3a422a4307dfe87002d9cb457cad7c94e98ba26c58d96394caca831f5142b3c7ac4d56790803a706b0eeea03aad
|
data/.drone.yml
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
build:
|
|
2
|
+
test:
|
|
3
|
+
image: abakpress/dind-testing
|
|
4
|
+
pull: true
|
|
5
|
+
privileged: true
|
|
6
|
+
volumes:
|
|
7
|
+
- /home/data/drone/images:/images
|
|
8
|
+
- /home/data/drone/gems:/bundle
|
|
9
|
+
environment:
|
|
10
|
+
- COMPOSE_FILE_EXT=drone
|
|
11
|
+
- POSTGRES_IMAGE_TAG=9.3-latest
|
|
12
|
+
- RUBY_IMAGE_TAG=2.2-latest
|
|
13
|
+
commands:
|
|
14
|
+
- wrapdocker docker -v
|
|
15
|
+
|
|
16
|
+
- fetch-images
|
|
17
|
+
--image abakpress/ruby-app:$RUBY_IMAGE_TAG
|
|
18
|
+
--image abakpress/postgres-db:$POSTGRES_IMAGE_TAG
|
|
19
|
+
|
|
20
|
+
- dip provision
|
|
21
|
+
- dip rspec
|
data/CHANGELOG.md
CHANGED
|
@@ -1,19 +1,40 @@
|
|
|
1
|
+
# v0.3.1
|
|
1
2
|
|
|
2
|
-
|
|
3
|
-
* 2016-02-04 [2ff69e5](../../commit/2ff69e5) - __(evseevleo)__ fix(hstore_accsessor): nil accessor_keys in subclasses
|
|
4
|
-
* 2016-01-29 [670a23c](../../commit/670a23c) - __(evseevleo)__ fix(simple_hstore_accessor): flatten keys in store_accessor
|
|
5
|
-
* 2016-01-15 [f2f6acc](../../commit/f2f6acc) - __(Konstantin Lazarev)__ feature: add read/write_attribute methods
|
|
6
|
-
* 2015-10-07 [8134d71](../../commit/8134d71) - __(Andrew N. Shalaev)__ fix: clean dependencies
|
|
7
|
-
* 2015-10-06 [4acfbd1](../../commit/4acfbd1) - __(Andrew N. Shalaev)__ fix: using last version for activerecord-postgres-hstore
|
|
3
|
+
Из-за того что под версией 0.3.0 запушил неверную версию кода.
|
|
8
4
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
* 2015-06-03 [29cad8f](../../commit/29cad8f) - __(Sergey D)__ feature(hstore-serialize): adds hstore coder
|
|
12
|
-
* 2015-09-02 [35f83fe](../../commit/35f83fe) - __(Stanislav Gordanov)__ fix(offer): исправление нормализации внешней ссылки на акцию
|
|
5
|
+
* 2017-11-13 [983b327](../../commit/983b327) - __(Konstantin Lazarev)__ Release 0.3.0
|
|
6
|
+
* 2017-11-10 [52bbf78](../../commit/52bbf78) - __(Eugene Zhukov)__ fix: don't serialize the attribute if it's already serialized
|
|
13
7
|
|
|
14
|
-
|
|
15
|
-
* 2015-06-02 [20959e8](../../commit/20959e8) - __(Sergey D)__ chore(version): change due to yanked gem release
|
|
8
|
+
# v0.3.0
|
|
16
9
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
10
|
+
* 2017-04-05 [a2d076c](../../commit/a2d076c) - __(Salahutdinov Dmitry)__ chore: add drone ci
|
|
11
|
+
|
|
12
|
+
# v0.2.0
|
|
13
|
+
|
|
14
|
+
* 2016-02-04 [2ff69e5](../../commit/2ff69e5) - __(evseevleo)__ fix(hstore_accsessor): nil accessor_keys in subclasses
|
|
15
|
+
Take parent class and his child class. if we define store_accessor in parent, but not in child, we'll have nil in accessor_keys. This is fix
|
|
16
|
+
closes BPC-7578
|
|
17
|
+
|
|
18
|
+
* 2016-01-29 [670a23c](../../commit/670a23c) - __(evseevleo)__ fix(simple_hstore_accessor): flatten keys in store_accessor
|
|
19
|
+
closes BPC-7578
|
|
20
|
+
|
|
21
|
+
* 2016-01-15 [f2f6acc](../../commit/f2f6acc) - __(Konstantin Lazarev)__ feature: add read/write_attribute methods
|
|
22
|
+
https://jira.railsc.ru/browse/CK-59
|
|
23
|
+
|
|
24
|
+
* 2015-10-07 [8134d71](../../commit/8134d71) - __(Andrew N. Shalaev)__ fix: clean dependencies
|
|
25
|
+
* 2015-10-06 [4acfbd1](../../commit/4acfbd1) - __(Andrew N. Shalaev)__ fix: using last version for activerecord-postgres-hstore
|
|
26
|
+
|
|
27
|
+
# v0.1.0
|
|
28
|
+
|
|
29
|
+
* 2015-06-03 [29cad8f](../../commit/29cad8f) - __(Sergey D)__ feature(hstore-serialize): adds hstore coder
|
|
30
|
+
* 2015-09-02 [35f83fe](../../commit/35f83fe) - __(Stanislav Gordanov)__ fix(offer): исправление нормализации внешней ссылки на акцию
|
|
31
|
+
https://jira.railsc.ru/browse/SG-3748
|
|
32
|
+
|
|
33
|
+
# v0.0.2
|
|
34
|
+
|
|
35
|
+
* 2015-06-02 [20959e8](../../commit/20959e8) - __(Sergey D)__ chore(version): change due to yanked gem release
|
|
36
|
+
|
|
37
|
+
# v0.0.1
|
|
38
|
+
|
|
39
|
+
* 2015-06-02 [cce0634](../../commit/cce0634) - __(Sergey D)__ Initial commit #2
|
|
40
|
+
* 2015-06-02 [a880e53](../../commit/a880e53) - __(Sergey D)__ first commit
|
data/dip.yml
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
version: '1'
|
|
2
|
+
|
|
3
|
+
environment:
|
|
4
|
+
DOCKER_RUBY_VERSION: 2.2
|
|
5
|
+
RUBY_IMAGE_TAG: 2.2-latest
|
|
6
|
+
POSTGRES_IMAGE_TAG: 9.3-latest
|
|
7
|
+
COMPOSE_FILE_EXT: development
|
|
8
|
+
RAILS_ENV: test
|
|
9
|
+
|
|
10
|
+
compose:
|
|
11
|
+
files:
|
|
12
|
+
- docker-compose.yml
|
|
13
|
+
- docker-compose.${COMPOSE_FILE_EXT}.yml
|
|
14
|
+
|
|
15
|
+
interaction:
|
|
16
|
+
sh:
|
|
17
|
+
service: app
|
|
18
|
+
|
|
19
|
+
bundle:
|
|
20
|
+
service: app
|
|
21
|
+
command: bundle
|
|
22
|
+
|
|
23
|
+
appraisal:
|
|
24
|
+
service: app
|
|
25
|
+
command: bundle exec appraisal
|
|
26
|
+
|
|
27
|
+
rspec:
|
|
28
|
+
service: app
|
|
29
|
+
command: bundle exec appraisal bundle exec rspec
|
|
30
|
+
|
|
31
|
+
clean:
|
|
32
|
+
service: app
|
|
33
|
+
command: rm -f Gemfile.lock gemfiles/*.gemfile.*
|
|
34
|
+
|
|
35
|
+
provision:
|
|
36
|
+
- docker volume create --name bundler_data
|
|
37
|
+
- dip bundle install
|
|
38
|
+
- dip appraisal install
|
data/docker-compose.yml
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
version: '2'
|
|
2
|
+
|
|
3
|
+
services:
|
|
4
|
+
app:
|
|
5
|
+
image: abakpress/ruby-app:$RUBY_IMAGE_TAG
|
|
6
|
+
environment:
|
|
7
|
+
- BUNDLE_PATH=/bundle/$DOCKER_RUBY_VERSION
|
|
8
|
+
- TEST_DB_HOST=db
|
|
9
|
+
- TEST_DB_NAME=docker
|
|
10
|
+
- TEST_DB_USERNAME=postgres
|
|
11
|
+
command: bash
|
|
12
|
+
depends_on:
|
|
13
|
+
- db
|
|
14
|
+
|
|
15
|
+
db:
|
|
16
|
+
image: abakpress/postgres-db:$POSTGRES_IMAGE_TAG
|
|
17
|
+
environment:
|
|
18
|
+
- POSTGRES_DB=docker
|
|
@@ -17,8 +17,10 @@ module SimpleHstoreAccessor
|
|
|
17
17
|
#
|
|
18
18
|
# Returns nothing
|
|
19
19
|
def store_accessor(hstore_attribute, *keys)
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
unless serialized_attributes.key?(hstore_attribute.to_s)
|
|
21
|
+
if defined?(ActiveRecord::Coders::Hstore)
|
|
22
|
+
serialize hstore_attribute, ActiveRecord::Coders::Hstore
|
|
23
|
+
end
|
|
22
24
|
end
|
|
23
25
|
|
|
24
26
|
accessor_keys = Array(keys).flatten.map(&:to_sym)
|
|
@@ -20,7 +20,6 @@ Gem::Specification.new do |spec|
|
|
|
20
20
|
|
|
21
21
|
spec.add_runtime_dependency 'activerecord', '>= 3.1', '< 5.0'
|
|
22
22
|
spec.add_runtime_dependency 'activesupport'
|
|
23
|
-
spec.add_runtime_dependency 'activerecord-postgres-hstore'
|
|
24
23
|
|
|
25
24
|
spec.add_development_dependency 'bundler', '~> 1.7'
|
|
26
25
|
spec.add_development_dependency 'rake'
|
|
@@ -29,4 +28,5 @@ Gem::Specification.new do |spec|
|
|
|
29
28
|
spec.add_development_dependency 'rspec', '>= 2.14.0'
|
|
30
29
|
spec.add_development_dependency 'appraisal', '>= 1.0.2'
|
|
31
30
|
spec.add_development_dependency 'combustion'
|
|
31
|
+
spec.add_development_dependency 'pry-byebug'
|
|
32
32
|
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe DummyJson do
|
|
4
|
+
it_behaves_like 'general behavior of model attributes', described_class
|
|
5
|
+
|
|
6
|
+
context 'when store attribute is used as an association key' do
|
|
7
|
+
let(:dummy_association) { DummyJsonAssociation.create }
|
|
8
|
+
let(:dummy) { described_class.create }
|
|
9
|
+
|
|
10
|
+
before do
|
|
11
|
+
dummy.dummy_json_association = dummy_association
|
|
12
|
+
dummy.save
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
describe '#dummy_json_association_id' do
|
|
16
|
+
it { expect(dummy.dummy_json_association_id.to_i).to eq(dummy_association.id) }
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
describe '#dummy_json_association' do
|
|
20
|
+
it { expect(described_class.find(dummy.id).dummy_json_association).to eq(dummy_association) }
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -2,115 +2,9 @@
|
|
|
2
2
|
require 'spec_helper'
|
|
3
3
|
|
|
4
4
|
describe Dummy do
|
|
5
|
-
|
|
5
|
+
it_behaves_like 'general behavior of model attributes', described_class
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
it { expect(dummy).to respond_to(:latitude) }
|
|
10
|
-
it { expect(dummy).to respond_to(:latitude=) }
|
|
11
|
-
it { expect(dummy).to respond_to(:latitude_will_change!) }
|
|
12
|
-
it { expect(dummy).to respond_to(:latitude_changed?) }
|
|
13
|
-
|
|
14
|
-
it { expect(dummy).to respond_to(:longitude) }
|
|
15
|
-
it { expect(dummy).to respond_to(:longitude=) }
|
|
16
|
-
it { expect(dummy).to respond_to(:longitude_will_change!) }
|
|
17
|
-
it { expect(dummy).to respond_to(:longitude_changed?) }
|
|
18
|
-
|
|
19
|
-
describe '#latitude' do
|
|
20
|
-
it { expect(dummy.latitude).to eq 7 }
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
describe '#longitude' do
|
|
24
|
-
it { expect(dummy.longitude).to eq 11 }
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
describe '#latitude=' do
|
|
28
|
-
it { expect { dummy.latitude = 14 }.to change { dummy.latitude }.from(7).to(14) }
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
describe '#longitude=' do
|
|
32
|
-
it { expect { dummy.longitude = 22 }.to change { dummy.longitude }.from(11).to(22) }
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
describe '#latitude_will_change!' do
|
|
36
|
-
before { dummy.latitude_will_change! }
|
|
37
|
-
|
|
38
|
-
it { expect(dummy).to be_latitude_changed }
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
describe '#longitude_will_change!' do
|
|
42
|
-
before { dummy.longitude_will_change! }
|
|
43
|
-
|
|
44
|
-
it { expect(dummy).to be_longitude_changed }
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
context 'when is new record' do
|
|
48
|
-
describe 'latitude_changed?' do
|
|
49
|
-
it { expect(dummy).to be_latitude_changed }
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
describe 'longitude_changed?' do
|
|
53
|
-
it { expect(dummy).to be_longitude_changed }
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
context 'when record is persisted' do
|
|
58
|
-
let(:dummy) { described_class.create(latitude: 7, longitude: 11) }
|
|
59
|
-
|
|
60
|
-
describe 'latitude_changed?' do
|
|
61
|
-
context 'when latitude is changed' do
|
|
62
|
-
before { dummy.latitude = 7 }
|
|
63
|
-
|
|
64
|
-
it { expect(dummy).not_to be_latitude_changed }
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
context 'when latitude is changed' do
|
|
68
|
-
before { dummy.latitude = 14 }
|
|
69
|
-
|
|
70
|
-
it { expect(dummy).to be_latitude_changed }
|
|
71
|
-
end
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
describe 'longitude_changed?' do
|
|
75
|
-
context 'when longitude is changed' do
|
|
76
|
-
before { dummy.longitude = 11 }
|
|
77
|
-
|
|
78
|
-
it { expect(dummy).not_to be_longitude_changed }
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
context 'when longitude is changed' do
|
|
82
|
-
before { dummy.longitude = 22 }
|
|
83
|
-
|
|
84
|
-
it { expect(dummy).to be_longitude_changed }
|
|
85
|
-
end
|
|
86
|
-
end
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
describe '#write_attribute' do
|
|
90
|
-
context 'when called with hstore attribute' do
|
|
91
|
-
before { dummy.write_attribute(:longitude, 5) }
|
|
92
|
-
|
|
93
|
-
it { expect(dummy.longitude).to eq(5) }
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
context 'when called with regular attribute' do
|
|
97
|
-
before { dummy.write_attribute(:regular_attribute, 'changed') }
|
|
98
|
-
|
|
99
|
-
it { expect(dummy.regular_attribute).to eq('changed') }
|
|
100
|
-
end
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
describe '#read_attribute' do
|
|
104
|
-
context 'when called with hstore attribute' do
|
|
105
|
-
it { expect(dummy.read_attribute(:longitude)).to eq(dummy.longitude) }
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
context 'when called with regular attribute' do
|
|
109
|
-
it { expect(dummy.read_attribute(:regular_attribute)).to eq(dummy.regular_attribute) }
|
|
110
|
-
end
|
|
111
|
-
end
|
|
112
|
-
|
|
113
|
-
context 'when hstore attribute is used as an association key' do
|
|
7
|
+
context 'when store attribute is used as an association key' do
|
|
114
8
|
let(:dummy_association) { DummyAssociation.create }
|
|
115
9
|
let(:dummy) { described_class.create }
|
|
116
10
|
|
data/spec/internal/db/schema.rb
CHANGED
|
@@ -4,6 +4,14 @@ ActiveRecord::Schema.define do
|
|
|
4
4
|
t.string :regular_attribute
|
|
5
5
|
end
|
|
6
6
|
|
|
7
|
+
create_table(:dummy_jsons, :force => true) do |t|
|
|
8
|
+
t.column :properties, :json
|
|
9
|
+
t.string :regular_attribute
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
create_table(:dummy_json_associations, :force => true) do |t|
|
|
13
|
+
end
|
|
14
|
+
|
|
7
15
|
create_table(:dummy_arguments, :force => true) do |t|
|
|
8
16
|
t.column :properties, :hstore
|
|
9
17
|
end
|
data/spec/spec_helper.rb
CHANGED
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
shared_examples 'general behavior of model attributes' do |described_class|
|
|
2
|
+
let(:dummy) { described_class.new(latitude: 7, longitude: 11) }
|
|
3
|
+
|
|
4
|
+
it { expect(dummy).to respond_to(:properties) }
|
|
5
|
+
|
|
6
|
+
it { expect(dummy).to respond_to(:latitude) }
|
|
7
|
+
it { expect(dummy).to respond_to(:latitude=) }
|
|
8
|
+
it { expect(dummy).to respond_to(:latitude_will_change!) }
|
|
9
|
+
it { expect(dummy).to respond_to(:latitude_changed?) }
|
|
10
|
+
|
|
11
|
+
it { expect(dummy).to respond_to(:longitude) }
|
|
12
|
+
it { expect(dummy).to respond_to(:longitude=) }
|
|
13
|
+
it { expect(dummy).to respond_to(:longitude_will_change!) }
|
|
14
|
+
it { expect(dummy).to respond_to(:longitude_changed?) }
|
|
15
|
+
|
|
16
|
+
describe '#latitude' do
|
|
17
|
+
it { expect(dummy.latitude).to eq 7 }
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
describe '#longitude' do
|
|
21
|
+
it { expect(dummy.longitude).to eq 11 }
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
describe '#latitude=' do
|
|
25
|
+
it { expect { dummy.latitude = 14 }.to change { dummy.latitude }.from(7).to(14) }
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
describe '#longitude=' do
|
|
29
|
+
it { expect { dummy.longitude = 22 }.to change { dummy.longitude }.from(11).to(22) }
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
describe '#latitude_will_change!' do
|
|
33
|
+
before { dummy.latitude_will_change! }
|
|
34
|
+
|
|
35
|
+
it { expect(dummy).to be_latitude_changed }
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
describe '#longitude_will_change!' do
|
|
39
|
+
before { dummy.longitude_will_change! }
|
|
40
|
+
|
|
41
|
+
it { expect(dummy).to be_longitude_changed }
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
context 'when is new record' do
|
|
45
|
+
describe 'latitude_changed?' do
|
|
46
|
+
it { expect(dummy).to be_latitude_changed }
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
describe 'longitude_changed?' do
|
|
50
|
+
it { expect(dummy).to be_longitude_changed }
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
context 'when record is persisted' do
|
|
55
|
+
let(:dummy) { described_class.create(latitude: 7, longitude: 11) }
|
|
56
|
+
|
|
57
|
+
describe 'latitude_changed?' do
|
|
58
|
+
context 'when latitude is not changed' do
|
|
59
|
+
before { dummy.latitude = 7 }
|
|
60
|
+
|
|
61
|
+
it { expect(dummy).not_to be_latitude_changed }
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
context 'when latitude is changed' do
|
|
65
|
+
before { dummy.latitude = 14 }
|
|
66
|
+
|
|
67
|
+
it { expect(dummy).to be_latitude_changed }
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
describe 'longitude_changed?' do
|
|
72
|
+
context 'when longitude is not changed' do
|
|
73
|
+
before { dummy.longitude = 11 }
|
|
74
|
+
|
|
75
|
+
it { expect(dummy).not_to be_longitude_changed }
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
context 'when longitude is changed' do
|
|
79
|
+
before { dummy.longitude = 22 }
|
|
80
|
+
|
|
81
|
+
it { expect(dummy).to be_longitude_changed }
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
describe '#write_attribute' do
|
|
87
|
+
context 'when called with store attribute' do
|
|
88
|
+
before { dummy.write_attribute(:longitude, 5) }
|
|
89
|
+
|
|
90
|
+
it { expect(dummy.longitude).to eq(5) }
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
context 'when called with regular attribute' do
|
|
94
|
+
before { dummy.write_attribute(:regular_attribute, 'changed') }
|
|
95
|
+
|
|
96
|
+
it { expect(dummy.regular_attribute).to eq('changed') }
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
describe '#read_attribute' do
|
|
101
|
+
context 'when called with store attribute' do
|
|
102
|
+
it { expect(dummy.read_attribute(:longitude)).to eq(dummy.longitude) }
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
context 'when called with regular attribute' do
|
|
106
|
+
it { expect(dummy.read_attribute(:regular_attribute)).to eq(dummy.regular_attribute) }
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
end
|
metadata
CHANGED
|
@@ -1,147 +1,147 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: simple_hstore_accessor
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.3.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Sergey D.
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2017-11-13 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
15
|
-
requirements:
|
|
16
|
-
- - '>='
|
|
17
|
-
- !ruby/object:Gem::Version
|
|
18
|
-
version: '3.1'
|
|
19
|
-
- - <
|
|
20
|
-
- !ruby/object:Gem::Version
|
|
21
|
-
version: '5.0'
|
|
22
14
|
name: activerecord
|
|
23
15
|
requirement: !ruby/object:Gem::Requirement
|
|
24
16
|
requirements:
|
|
25
|
-
- -
|
|
17
|
+
- - ">="
|
|
26
18
|
- !ruby/object:Gem::Version
|
|
27
19
|
version: '3.1'
|
|
28
|
-
- - <
|
|
20
|
+
- - "<"
|
|
29
21
|
- !ruby/object:Gem::Version
|
|
30
22
|
version: '5.0'
|
|
31
23
|
type: :runtime
|
|
32
24
|
prerelease: false
|
|
33
|
-
- !ruby/object:Gem::Dependency
|
|
34
25
|
version_requirements: !ruby/object:Gem::Requirement
|
|
35
26
|
requirements:
|
|
36
|
-
- -
|
|
27
|
+
- - ">="
|
|
37
28
|
- !ruby/object:Gem::Version
|
|
38
|
-
version: '
|
|
29
|
+
version: '3.1'
|
|
30
|
+
- - "<"
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: '5.0'
|
|
33
|
+
- !ruby/object:Gem::Dependency
|
|
39
34
|
name: activesupport
|
|
40
35
|
requirement: !ruby/object:Gem::Requirement
|
|
41
36
|
requirements:
|
|
42
|
-
- -
|
|
37
|
+
- - ">="
|
|
43
38
|
- !ruby/object:Gem::Version
|
|
44
39
|
version: '0'
|
|
45
40
|
type: :runtime
|
|
46
41
|
prerelease: false
|
|
47
|
-
- !ruby/object:Gem::Dependency
|
|
48
42
|
version_requirements: !ruby/object:Gem::Requirement
|
|
49
43
|
requirements:
|
|
50
|
-
- -
|
|
44
|
+
- - ">="
|
|
51
45
|
- !ruby/object:Gem::Version
|
|
52
46
|
version: '0'
|
|
53
|
-
name: activerecord-postgres-hstore
|
|
54
|
-
requirement: !ruby/object:Gem::Requirement
|
|
55
|
-
requirements:
|
|
56
|
-
- - '>='
|
|
57
|
-
- !ruby/object:Gem::Version
|
|
58
|
-
version: '0'
|
|
59
|
-
type: :runtime
|
|
60
|
-
prerelease: false
|
|
61
47
|
- !ruby/object:Gem::Dependency
|
|
62
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
63
|
-
requirements:
|
|
64
|
-
- - ~>
|
|
65
|
-
- !ruby/object:Gem::Version
|
|
66
|
-
version: '1.7'
|
|
67
48
|
name: bundler
|
|
68
49
|
requirement: !ruby/object:Gem::Requirement
|
|
69
50
|
requirements:
|
|
70
|
-
- - ~>
|
|
51
|
+
- - "~>"
|
|
71
52
|
- !ruby/object:Gem::Version
|
|
72
53
|
version: '1.7'
|
|
73
54
|
type: :development
|
|
74
55
|
prerelease: false
|
|
75
|
-
- !ruby/object:Gem::Dependency
|
|
76
56
|
version_requirements: !ruby/object:Gem::Requirement
|
|
77
57
|
requirements:
|
|
78
|
-
- -
|
|
58
|
+
- - "~>"
|
|
79
59
|
- !ruby/object:Gem::Version
|
|
80
|
-
version: '
|
|
60
|
+
version: '1.7'
|
|
61
|
+
- !ruby/object:Gem::Dependency
|
|
81
62
|
name: rake
|
|
82
63
|
requirement: !ruby/object:Gem::Requirement
|
|
83
64
|
requirements:
|
|
84
|
-
- -
|
|
65
|
+
- - ">="
|
|
85
66
|
- !ruby/object:Gem::Version
|
|
86
67
|
version: '0'
|
|
87
68
|
type: :development
|
|
88
69
|
prerelease: false
|
|
89
|
-
- !ruby/object:Gem::Dependency
|
|
90
70
|
version_requirements: !ruby/object:Gem::Requirement
|
|
91
71
|
requirements:
|
|
92
|
-
- -
|
|
72
|
+
- - ">="
|
|
93
73
|
- !ruby/object:Gem::Version
|
|
94
74
|
version: '0'
|
|
75
|
+
- !ruby/object:Gem::Dependency
|
|
95
76
|
name: pg
|
|
96
77
|
requirement: !ruby/object:Gem::Requirement
|
|
97
78
|
requirements:
|
|
98
|
-
- -
|
|
79
|
+
- - ">="
|
|
99
80
|
- !ruby/object:Gem::Version
|
|
100
81
|
version: '0'
|
|
101
82
|
type: :development
|
|
102
83
|
prerelease: false
|
|
103
|
-
- !ruby/object:Gem::Dependency
|
|
104
84
|
version_requirements: !ruby/object:Gem::Requirement
|
|
105
85
|
requirements:
|
|
106
|
-
- -
|
|
86
|
+
- - ">="
|
|
107
87
|
- !ruby/object:Gem::Version
|
|
108
|
-
version:
|
|
88
|
+
version: '0'
|
|
89
|
+
- !ruby/object:Gem::Dependency
|
|
109
90
|
name: rspec
|
|
110
91
|
requirement: !ruby/object:Gem::Requirement
|
|
111
92
|
requirements:
|
|
112
|
-
- -
|
|
93
|
+
- - ">="
|
|
113
94
|
- !ruby/object:Gem::Version
|
|
114
95
|
version: 2.14.0
|
|
115
96
|
type: :development
|
|
116
97
|
prerelease: false
|
|
117
|
-
- !ruby/object:Gem::Dependency
|
|
118
98
|
version_requirements: !ruby/object:Gem::Requirement
|
|
119
99
|
requirements:
|
|
120
|
-
- -
|
|
100
|
+
- - ">="
|
|
121
101
|
- !ruby/object:Gem::Version
|
|
122
|
-
version:
|
|
102
|
+
version: 2.14.0
|
|
103
|
+
- !ruby/object:Gem::Dependency
|
|
123
104
|
name: appraisal
|
|
124
105
|
requirement: !ruby/object:Gem::Requirement
|
|
125
106
|
requirements:
|
|
126
|
-
- -
|
|
107
|
+
- - ">="
|
|
127
108
|
- !ruby/object:Gem::Version
|
|
128
109
|
version: 1.0.2
|
|
129
110
|
type: :development
|
|
130
111
|
prerelease: false
|
|
112
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
113
|
+
requirements:
|
|
114
|
+
- - ">="
|
|
115
|
+
- !ruby/object:Gem::Version
|
|
116
|
+
version: 1.0.2
|
|
131
117
|
- !ruby/object:Gem::Dependency
|
|
118
|
+
name: combustion
|
|
119
|
+
requirement: !ruby/object:Gem::Requirement
|
|
120
|
+
requirements:
|
|
121
|
+
- - ">="
|
|
122
|
+
- !ruby/object:Gem::Version
|
|
123
|
+
version: '0'
|
|
124
|
+
type: :development
|
|
125
|
+
prerelease: false
|
|
132
126
|
version_requirements: !ruby/object:Gem::Requirement
|
|
133
127
|
requirements:
|
|
134
|
-
- -
|
|
128
|
+
- - ">="
|
|
135
129
|
- !ruby/object:Gem::Version
|
|
136
130
|
version: '0'
|
|
137
|
-
|
|
131
|
+
- !ruby/object:Gem::Dependency
|
|
132
|
+
name: pry-byebug
|
|
138
133
|
requirement: !ruby/object:Gem::Requirement
|
|
139
134
|
requirements:
|
|
140
|
-
- -
|
|
135
|
+
- - ">="
|
|
141
136
|
- !ruby/object:Gem::Version
|
|
142
137
|
version: '0'
|
|
143
138
|
type: :development
|
|
144
139
|
prerelease: false
|
|
140
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
141
|
+
requirements:
|
|
142
|
+
- - ">="
|
|
143
|
+
- !ruby/object:Gem::Version
|
|
144
|
+
version: '0'
|
|
145
145
|
description: Simple Hstore Accessor extension for Rails 3
|
|
146
146
|
email:
|
|
147
147
|
- sclinede@gmail.com
|
|
@@ -149,8 +149,9 @@ executables: []
|
|
|
149
149
|
extensions: []
|
|
150
150
|
extra_rdoc_files: []
|
|
151
151
|
files:
|
|
152
|
-
- .
|
|
153
|
-
- .
|
|
152
|
+
- ".drone.yml"
|
|
153
|
+
- ".gitignore"
|
|
154
|
+
- ".rspec"
|
|
154
155
|
- Appraisals
|
|
155
156
|
- CHANGELOG.md
|
|
156
157
|
- Gemfile
|
|
@@ -158,23 +159,31 @@ files:
|
|
|
158
159
|
- Makefile
|
|
159
160
|
- README.md
|
|
160
161
|
- Rakefile
|
|
162
|
+
- dip.yml
|
|
163
|
+
- docker-compose.development.yml
|
|
164
|
+
- docker-compose.drone.yml
|
|
165
|
+
- docker-compose.yml
|
|
161
166
|
- lib/simple_hstore_accessor.rb
|
|
162
167
|
- lib/simple_hstore_accessor/version.rb
|
|
163
168
|
- simple_hstore_accessor.gemspec
|
|
164
169
|
- spec/app/models/dummy_argument_spec.rb
|
|
170
|
+
- spec/app/models/dummy_json_spec.rb
|
|
165
171
|
- spec/app/models/dummy_spec.rb
|
|
166
172
|
- spec/app/models/dummy_subclass_spec.rb
|
|
167
173
|
- spec/internal/app/models/dummies/dummy_subclass.rb
|
|
168
174
|
- spec/internal/app/models/dummy.rb
|
|
169
175
|
- spec/internal/app/models/dummy_argument.rb
|
|
170
176
|
- spec/internal/app/models/dummy_association.rb
|
|
171
|
-
- spec/internal/
|
|
177
|
+
- spec/internal/app/models/dummy_json.rb
|
|
178
|
+
- spec/internal/app/models/dummy_json_association.rb
|
|
179
|
+
- spec/internal/config/database.yml
|
|
172
180
|
- spec/internal/config/environments/test.rb
|
|
173
181
|
- spec/internal/db/schema.rb
|
|
174
182
|
- spec/internal/log/.gitignore
|
|
175
183
|
- spec/internal/public/.gitignore
|
|
176
184
|
- spec/internal/public/favicon.ico
|
|
177
185
|
- spec/spec_helper.rb
|
|
186
|
+
- spec/support/shared_examples/general_behavior.rb
|
|
178
187
|
homepage: https://github.com/abak-press/simple_hstore_accessor
|
|
179
188
|
licenses:
|
|
180
189
|
- MIT
|
|
@@ -185,32 +194,36 @@ require_paths:
|
|
|
185
194
|
- lib
|
|
186
195
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
187
196
|
requirements:
|
|
188
|
-
- -
|
|
197
|
+
- - ">="
|
|
189
198
|
- !ruby/object:Gem::Version
|
|
190
199
|
version: '0'
|
|
191
200
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
192
201
|
requirements:
|
|
193
|
-
- -
|
|
202
|
+
- - ">="
|
|
194
203
|
- !ruby/object:Gem::Version
|
|
195
204
|
version: '0'
|
|
196
205
|
requirements: []
|
|
197
206
|
rubyforge_project:
|
|
198
|
-
rubygems_version: 2.
|
|
207
|
+
rubygems_version: 2.6.13
|
|
199
208
|
signing_key:
|
|
200
209
|
specification_version: 4
|
|
201
210
|
summary: Simple Hstore Accessor extension for Rails 3
|
|
202
211
|
test_files:
|
|
203
212
|
- spec/app/models/dummy_argument_spec.rb
|
|
213
|
+
- spec/app/models/dummy_json_spec.rb
|
|
204
214
|
- spec/app/models/dummy_spec.rb
|
|
205
215
|
- spec/app/models/dummy_subclass_spec.rb
|
|
206
216
|
- spec/internal/app/models/dummies/dummy_subclass.rb
|
|
207
217
|
- spec/internal/app/models/dummy.rb
|
|
208
218
|
- spec/internal/app/models/dummy_argument.rb
|
|
209
219
|
- spec/internal/app/models/dummy_association.rb
|
|
210
|
-
- spec/internal/
|
|
220
|
+
- spec/internal/app/models/dummy_json.rb
|
|
221
|
+
- spec/internal/app/models/dummy_json_association.rb
|
|
222
|
+
- spec/internal/config/database.yml
|
|
211
223
|
- spec/internal/config/environments/test.rb
|
|
212
224
|
- spec/internal/db/schema.rb
|
|
213
225
|
- spec/internal/log/.gitignore
|
|
214
226
|
- spec/internal/public/.gitignore
|
|
215
227
|
- spec/internal/public/favicon.ico
|
|
216
228
|
- spec/spec_helper.rb
|
|
229
|
+
- spec/support/shared_examples/general_behavior.rb
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
database.yml
|