activerecord-typedstore 1.0.1 → 1.1.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
  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