activerecord-typedstore 1.0.1 → 1.1.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
  SHA1:
3
- metadata.gz: 48c928ae468d6b194e9e449f10a7cb7dc2e8462c
4
- data.tar.gz: 2bda0a0de2a3969e8d1b05129209bd4f79200381
3
+ metadata.gz: d9f474258f3d2248355c75bfaaed2439a6f17d01
4
+ data.tar.gz: a7f227175a6583d765931a9feda03e8ede33b4b0
5
5
  SHA512:
6
- metadata.gz: 6e66a694855109d5938364e16699d23139c0a0bcc5f463a88ee415a411a77dbc75c946801d69e044a1f7220c95ab40c7eceac8dcba7c0c0a13c83b3ff492f7a4
7
- data.tar.gz: 1decb6986f91b5f5628387316b11701e0f8ba742add1679fc556cd2e4d53f72dab3b068104d071d4b42533529732c413923d113502fae1a2418a68e5fb662b60
6
+ metadata.gz: f2f2191bb5cec0d4e138b3adeafdd6a779bd032f31c2d93f8862484676afd5683f6fdb7bf230ebe3f6f9a0e9843f6d0b58f1278917c5db5488f684ff6664a978
7
+ data.tar.gz: 4f74a8624f48916154ffa549d5e0320c3679db8534280c4593669bc4a2f000d32bdd3947dd2e673b75fae4d8708102b8c3c5492a9c76cece3ea6a9026c177cb6
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ['lib']
20
20
 
21
- spec.add_dependency 'activerecord', '>= 4.2', '< 5.1'
21
+ spec.add_dependency 'activerecord', '>= 4.2', '< 5.2'
22
22
 
23
23
  spec.add_development_dependency 'bundler', '~> 1.3'
24
24
  spec.add_development_dependency 'rake', '~> 10'
@@ -0,0 +1,11 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'activerecord', '~> 5.1.0'
4
+ gem 'bundler', '~> 1.3'
5
+ gem 'rake'
6
+ gem 'rspec'
7
+ gem 'sqlite3'
8
+ gem 'pg', '~> 0.11'
9
+ gem 'mysql2', ['>= 0.3.13', '< 0.5']
10
+ gem 'database_cleaner'
11
+ gem 'coveralls', require: false
@@ -4,16 +4,22 @@ module ActiveRecord::TypedStore
4
4
  class DSL
5
5
  attr_reader :fields, :coder
6
6
 
7
- def initialize(options)
8
- @coder = options.fetch(:coder) { default_coder }
7
+ def initialize(attribute_name, options)
8
+ @coder = options.fetch(:coder) { default_coder(attribute_name) }
9
9
  @accessors = options[:accessors]
10
10
  @accessors = [] if options[:accessors] == false
11
11
  @fields = {}
12
12
  yield self
13
13
  end
14
14
 
15
- def default_coder
16
- ActiveRecord::Coders::YAMLColumn.new
15
+ if ActiveRecord.gem_version < Gem::Version.new('5.1.0')
16
+ def default_coder(attribute_name)
17
+ ActiveRecord::Coders::YAMLColumn.new
18
+ end
19
+ else
20
+ def default_coder(attribute_name)
21
+ ActiveRecord::Coders::YAMLColumn.new(attribute_name)
22
+ end
17
23
  end
18
24
 
19
25
  def accessors
@@ -17,7 +17,7 @@ module ActiveRecord::TypedStore
17
17
  end
18
18
 
19
19
  def typed_store(store_attribute, options={}, &block)
20
- dsl = DSL.new(options, &block)
20
+ dsl = DSL.new(store_attribute, options, &block)
21
21
  self.typed_stores ||= {}
22
22
  self.typed_stores[store_attribute] = dsl
23
23
 
@@ -61,6 +61,13 @@ module ActiveRecord::TypedStore
61
61
  super
62
62
  end
63
63
 
64
+ def read_attribute(attr_name)
65
+ if self.class.store_accessors.include?(attr_name.to_sym)
66
+ return public_send(attr_name)
67
+ end
68
+ super
69
+ end
70
+
64
71
  def write_store_attribute(store_attribute, key, value)
65
72
  if typed_stores && typed_stores[store_attribute]
66
73
  prev_value = read_store_attribute(store_attribute, key)
@@ -1,5 +1,5 @@
1
1
  module ActiveRecord
2
2
  module TypedStore
3
- VERSION = '1.0.1'
3
+ VERSION = '1.1.0'
4
4
  end
5
5
  end
@@ -140,6 +140,11 @@ shared_examples 'any model' do
140
140
  it 'is initialized at nil if :default is not defined' do
141
141
  expect(model.no_default).to be_nil
142
142
  end
143
+
144
+ it 'is accessible throught #read_attribute' do
145
+ model.name = 'foo'
146
+ expect(model.read_attribute(:name)).to be == 'foo'
147
+ end
143
148
  end
144
149
 
145
150
  describe 'string attribute' do
@@ -6,12 +6,13 @@ AR_VERSION = Gem::Version.new(ActiveRecord::VERSION::STRING)
6
6
  AR_4_0 = Gem::Version.new('4.0')
7
7
  AR_4_1 = Gem::Version.new('4.1.0.beta')
8
8
  AR_4_2 = Gem::Version.new('4.2.0-rc1')
9
+ AR_5_0 = Gem::Version.new('5.0.0')
9
10
 
10
11
  ActiveRecord::Base.time_zone_aware_attributes = ENV['TIMEZONE_AWARE'] != '0'
11
12
  ActiveRecord::Base.configurations = {
12
- 'test_sqlite3' => {adapter: 'sqlite3', database: "/tmp/typed_store.db"},
13
- 'test_postgresql' => {adapter: 'postgresql', database: 'typed_store_test', username: 'postgres'},
14
- 'test_mysql' => {adapter: 'mysql2', database: 'typed_store_test', username: 'travis'},
13
+ 'test_sqlite3' => { 'adapter' => 'sqlite3', 'database' => '/tmp/typed_store.db' },
14
+ 'test_postgresql' => { 'adapter' => 'postgresql', 'database' => 'typed_store_test', 'username' => 'postgres' },
15
+ 'test_mysql' => { 'adapter' => 'mysql2', 'database' => 'typed_store_test', 'username' => 'travis' },
15
16
  }
16
17
 
17
18
  def define_columns(t)
@@ -76,7 +77,8 @@ def define_store_with_attributes(**options)
76
77
  end
77
78
  end
78
79
 
79
- class CreateAllTables < ActiveRecord::Migration
80
+ MigrationClass = AR_VERSION >= AR_5_0 ? ActiveRecord::Migration["5.0"] : ActiveRecord::Migration
81
+ class CreateAllTables < MigrationClass
80
82
 
81
83
  def self.recreate_table(name, *args, &block)
82
84
  execute "drop table if exists #{name}"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-typedstore
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jean Boussier
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-12-09 00:00:00.000000000 Z
11
+ date: 2017-05-18 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.2'
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '5.1'
22
+ version: '5.2'
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.2'
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '5.1'
32
+ version: '5.2'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: bundler
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -162,6 +162,7 @@ files:
162
162
  - gemfiles/Gemfile.ar-4.1
163
163
  - gemfiles/Gemfile.ar-4.2
164
164
  - gemfiles/Gemfile.ar-5.0
165
+ - gemfiles/Gemfile.ar-5.1
165
166
  - lib/active_record/typed_store.rb
166
167
  - lib/active_record/typed_store/dsl.rb
167
168
  - lib/active_record/typed_store/extension.rb