store_schema 0.1.0 → 1.0.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: 5a05dab9a51e83ac7afde53a40dc65dddd2d388d
4
- data.tar.gz: 9036c033e270aebcd9f08fd56da0b7553db09b67
3
+ metadata.gz: e03d59d9f1597b0d33ac37f1f4023b7627163816
4
+ data.tar.gz: aff94d3ea629c869496c3428c2c720dd7ce38cc0
5
5
  SHA512:
6
- metadata.gz: 1c0a5cf4d0bf2a57a75c788aa619317fed9a7d5accedd181d027f6b9011b726d38a8c49389ab1e1a252668defa1c8f08b8a34ee281f21ce92962c5ba3610520c
7
- data.tar.gz: c764b979e4d63d8ce23898e309200a0671102eba64a8a56255c8e434c6866a87f7dd11ed2d635bef9ae94eb806b323d85898680eed88fc79563292f094122e54
6
+ metadata.gz: 3966267cfc6d928223d54e72bd9b51d47b3a553f785d24aacd2c24ee8e4f1d942b90956154f0f26be05f82f55b44654c8713ac983ec52731e0d360faa18bdab9
7
+ data.tar.gz: bffe743f0985c51232607254bb65dd618cebe53e2c9cfd979970afa204d0ebdf4ab189dcca69b1a54aba8e2d7e553d80268440ba4d6078f93b54e8e73fd2e483
@@ -1,3 +1,3 @@
1
1
  source "https://rubygems.org"
2
- gem "activerecord", "~> 4.0.0"
2
+ gem "activerecord", "~> 5.1.0"
3
3
  gemspec path: "../"
data/.travis.yml CHANGED
@@ -1,10 +1,7 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.0.0
4
- - 2.1.0
5
- - 2.2.0
6
- - rbx-2.2
3
+ - 2.4.0
7
4
  gemfile:
8
- - .gemfiles/4.0.gemfile
9
- - .gemfiles/4.1.gemfile
10
- - .gemfiles/4.2.gemfile
5
+ - .gemfiles/5.1.gemfile
6
+ before_install:
7
+ - gem install bundler
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2015 Michael van Rooijen
1
+ Copyright (c) Michael van Rooijen
2
2
 
3
3
  MIT License
4
4
 
data/README.md CHANGED
@@ -1,10 +1,10 @@
1
1
  # Store Schema
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/store_schema.svg)](http://badge.fury.io/rb/store_schema)
4
- [![Code Climate](https://codeclimate.com/github/meskyanichi/store_schema.png)](https://codeclimate.com/github/meskyanichi/store_schema)
5
- [![Build Status](https://travis-ci.org/meskyanichi/store_schema.svg)](https://travis-ci.org/meskyanichi/store_schema)
4
+ [![Code Climate](https://codeclimate.com/github/mrrooijen/store_schema.png)](https://codeclimate.com/github/mrrooijen/store_schema)
5
+ [![Build Status](https://travis-ci.org/mrrooijen/store_schema.svg)](https://travis-ci.org/mrrooijen/store_schema)
6
6
 
7
- StoreSchema, for Rails/ActiveRecord 4.0.0+, enhances `ActiveRecord::Base.store_accessor` with data conversion capabilities.
7
+ StoreSchema, for Rails/ActiveRecord 5.1.0+, enhances `ActiveRecord::Base.store_accessor` with data conversion capabilities.
8
8
 
9
9
  This library was developed for- and extracted from [HireFire].
10
10
 
@@ -13,9 +13,8 @@ The documentation can be found on [RubyDoc].
13
13
 
14
14
  ### Compatibility
15
15
 
16
- - Rails/ActiveRecord 4.0.0+
17
- - Ruby (MRI) 2.0+
18
- - Ruby (RBX) 2.2+
16
+ - Rails/ActiveRecord 5.1.0+
17
+ - Ruby (MRI) 2.4.0+
19
18
 
20
19
 
21
20
  ### Installation
@@ -114,9 +113,8 @@ with any SQL database.
114
113
 
115
114
  Contributions are welcome, but please conform to these requirements:
116
115
 
117
- - Ruby (MRI) 2.0+
118
- - Ruby (RBX) 2.2+
119
- - ActiveRecord 4.0.0+
116
+ - Ruby (MRI) 2.4.0+
117
+ - ActiveRecord 5.1.0+
120
118
  - 100% Spec Coverage
121
119
  - Generated by when running the test suite
122
120
  - 100% [Passing Specs]
@@ -158,14 +156,13 @@ Submit a pull request.
158
156
 
159
157
  ### Author / License
160
158
 
161
- Copyright (c) 2015 Michael van Rooijen ( [@meskyanichi] )<br />
162
- Released under the MIT [License].
159
+ Released under the [MIT License] by [Michael van Rooijen].
163
160
 
164
- [@meskyanichi]: https://twitter.com/meskyanichi
161
+ [Michael van Rooijen]: https://twitter.com/mrrooijen
165
162
  [HireFire]: http://hirefire.io
166
- [Passing Specs]: https://travis-ci.org/meskyanichi/store_schema
167
- [Code Climate Score]: https://codeclimate.com/github/meskyanichi/store_schema
168
- [RubyDoc]: http://rubydoc.info/github/meskyanichi/store_schema/master/frames
169
- [License]: https://github.com/meskyanichi/store_schema/blob/master/LICENSE
163
+ [Passing Specs]: https://travis-ci.org/mrrooijen/store_schema
164
+ [Code Climate Score]: https://codeclimate.com/github/mrrooijen/store_schema
165
+ [RubyDoc]: http://rubydoc.info/github/mrrooijen/store_schema/master/frames
166
+ [MIT License]: https://github.com/mrrooijen/store_schema/blob/master/LICENSE
170
167
  [RubyGems.org]: https://rubygems.org/gems/store_schema
171
168
  [PostgreSQL's HStore Extension]: http://www.postgresql.org/docs/9.3/static/hstore.html
@@ -32,6 +32,7 @@ class StoreSchema::AccessorDefiner
32
32
  #
33
33
  def define
34
34
  define_store_accessor
35
+ define_attribute
35
36
  define_getter
36
37
  define_setter
37
38
  end
@@ -44,6 +45,12 @@ class StoreSchema::AccessorDefiner
44
45
  klass.store_accessor(column, attribute)
45
46
  end
46
47
 
48
+ # Defines the attribute on the class using the {.attribute}.
49
+ #
50
+ def define_attribute
51
+ klass.attribute(attribute)
52
+ end
53
+
47
54
  # Enhances the store getter by adding data conversion capabilities.
48
55
  #
49
56
  def define_getter
@@ -6,6 +6,10 @@ class StoreSchema::Converter::Boolean < StoreSchema::Converter::Base
6
6
  #
7
7
  DB_TRUE_VALUE = "t"
8
8
 
9
+ # @return [String] the database representation of a false value.
10
+ #
11
+ DB_FALSE_VALUE = "f"
12
+
9
13
  # @return [Array] all the values that are considered to be truthy.
10
14
  #
11
15
  TRUE_VALUES = [true, 1, "1", "t", "T", "true", "TRUE", "on", "ON"]
@@ -30,9 +34,9 @@ class StoreSchema::Converter::Boolean < StoreSchema::Converter::Base
30
34
  #
31
35
  def to_db
32
36
  if TRUE_VALUES.include?(value)
33
- "t"
37
+ DB_TRUE_VALUE
34
38
  elsif FALSE_VALUES.include?(value)
35
- "f"
39
+ DB_FALSE_VALUE
36
40
  else
37
41
  false
38
42
  end
@@ -11,20 +11,18 @@ class StoreSchema::Converter::DateTime < StoreSchema::Converter::Base
11
11
  # @return [String, false] false if {#value} is an invalid date-type.
12
12
  #
13
13
  def to_db
14
- begin
15
- case value
16
- when ::DateTime, ::Date
17
- value.strftime(DATETIME_DB_FORMAT)
18
- when ::Time
19
- value.utc.strftime(DATETIME_DB_FORMAT)
20
- when ::String
21
- ::DateTime.parse(value).strftime(DATETIME_DB_FORMAT)
22
- else
23
- false
24
- end
25
- rescue
14
+ case value
15
+ when ::DateTime, ::Date
16
+ value.strftime(DATETIME_DB_FORMAT)
17
+ when ::Time
18
+ value.utc.strftime(DATETIME_DB_FORMAT)
19
+ when ::String
20
+ ::DateTime.parse(value).strftime(DATETIME_DB_FORMAT)
21
+ else
26
22
  false
27
23
  end
24
+ rescue
25
+ false
28
26
  end
29
27
 
30
28
  # Converts the {#value} to a Ruby-type value.
@@ -2,6 +2,10 @@ require_relative "base"
2
2
 
3
3
  class StoreSchema::Converter::Float < StoreSchema::Converter::Base
4
4
 
5
+ # @return [Regexp] an (int | float) value format.
6
+ #
7
+ INT_FLOAT_FORMAT = /^\d+|\d+\.\d+$/
8
+
5
9
  # Converts the {#value} to a database-storable value.
6
10
  #
7
11
  # @return [String, false] false if {#value} is an invalid date-type.
@@ -13,7 +17,7 @@ class StoreSchema::Converter::Float < StoreSchema::Converter::Base
13
17
  when ::Float
14
18
  value.to_s
15
19
  when ::String
16
- if value =~ /^\d+|\d+\.\d+$/
20
+ if value.match(INT_FLOAT_FORMAT)
17
21
  value.to_f.to_s
18
22
  else
19
23
  false
@@ -2,6 +2,10 @@ require_relative "base"
2
2
 
3
3
  class StoreSchema::Converter::Integer < StoreSchema::Converter::Base
4
4
 
5
+ # @return [Regexp] the int value format.
6
+ #
7
+ INT_FORMAT = /^\d+$/
8
+
5
9
  # Converts the {#value} to a database-storable value.
6
10
  #
7
11
  # @return [String, false] false if {#value} is an invalid date-type.
@@ -11,7 +15,7 @@ class StoreSchema::Converter::Integer < StoreSchema::Converter::Base
11
15
  when ::Integer
12
16
  value.to_s
13
17
  when ::String
14
- if value =~ /^\d+$/
18
+ if value.match(INT_FORMAT)
15
19
  value
16
20
  else
17
21
  false
@@ -1,3 +1,3 @@
1
1
  module StoreSchema
2
- VERSION = "0.1.0"
2
+ VERSION = "1.0.0"
3
3
  end
@@ -2,7 +2,7 @@ require "spec_helper"
2
2
 
3
3
  RSpec.describe "StoreSchema" do
4
4
 
5
- let(:website) { Website.new }
5
+ let(:website) { Website.create }
6
6
 
7
7
  describe "nil" do
8
8
 
data/spec/support/db.rb CHANGED
@@ -2,7 +2,7 @@ ActiveRecord::Base.establish_connection(
2
2
  adapter: "sqlite3", database: ":memory:"
3
3
  )
4
4
 
5
- class Schema < ActiveRecord::Migration
5
+ class Schema < ActiveRecord::Migration[4.2]
6
6
 
7
7
  def change
8
8
  create_table :websites do |t|
@@ -11,6 +11,4 @@ class Schema < ActiveRecord::Migration
11
11
  end
12
12
  end
13
13
 
14
- silence_stream(STDOUT) do
15
- Schema.new.change
16
- end
14
+ Schema.new.change
data/store_schema.gemspec CHANGED
@@ -8,7 +8,7 @@ Gem::Specification.new do |spec|
8
8
  spec.authors = ["Michael van Rooijen"]
9
9
  spec.email = ["michael@vanrooijen.io"]
10
10
  spec.summary = %q{Enhances ActiveRecord::Base.store_accessor with data conversion capabilities.}
11
- spec.homepage = "http://meskyanichi.github.io/store_schema/"
11
+ spec.homepage = "http://mrrooijen.github.io/store_schema/"
12
12
  spec.license = "MIT"
13
13
 
14
14
  spec.files = `git ls-files -z`.split("\x0")
@@ -16,11 +16,12 @@ Gem::Specification.new do |spec|
16
16
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
17
17
  spec.require_paths = ["lib"]
18
18
 
19
- spec.add_dependency "activerecord", ">= 4.0.0"
19
+ spec.add_dependency "activerecord", ">= 5.0.0"
20
20
  spec.add_development_dependency "bundler"
21
21
  spec.add_development_dependency "rake"
22
22
  spec.add_development_dependency "rspec"
23
23
  spec.add_development_dependency "sqlite3"
24
+ spec.add_development_dependency "json"
24
25
  spec.add_development_dependency "database_cleaner"
25
26
  spec.add_development_dependency "pry"
26
27
  spec.add_development_dependency "simplecov"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: store_schema
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael van Rooijen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-21 00:00:00.000000000 Z
11
+ date: 2017-07-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 4.0.0
19
+ version: 5.0.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 4.0.0
26
+ version: 5.0.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: json
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: database_cleaner
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -143,9 +157,7 @@ executables: []
143
157
  extensions: []
144
158
  extra_rdoc_files: []
145
159
  files:
146
- - ".gemfiles/4.0.gemfile"
147
- - ".gemfiles/4.1.gemfile"
148
- - ".gemfiles/4.2.gemfile"
160
+ - ".gemfiles/5.1.gemfile"
149
161
  - ".gitignore"
150
162
  - ".rspec"
151
163
  - ".travis.yml"
@@ -171,7 +183,7 @@ files:
171
183
  - spec/support/env.rb
172
184
  - spec/support/models.rb
173
185
  - store_schema.gemspec
174
- homepage: http://meskyanichi.github.io/store_schema/
186
+ homepage: http://mrrooijen.github.io/store_schema/
175
187
  licenses:
176
188
  - MIT
177
189
  metadata: {}
@@ -191,7 +203,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
191
203
  version: '0'
192
204
  requirements: []
193
205
  rubyforge_project:
194
- rubygems_version: 2.4.5
206
+ rubygems_version: 2.6.8
195
207
  signing_key:
196
208
  specification_version: 4
197
209
  summary: Enhances ActiveRecord::Base.store_accessor with data conversion capabilities.
@@ -201,4 +213,3 @@ test_files:
201
213
  - spec/support/db.rb
202
214
  - spec/support/env.rb
203
215
  - spec/support/models.rb
204
- has_rdoc:
@@ -1,3 +0,0 @@
1
- source "https://rubygems.org"
2
- gem "activerecord", "~> 4.1.0"
3
- gemspec path: "../"
@@ -1,3 +0,0 @@
1
- source "https://rubygems.org"
2
- gem "activerecord", "4.2.0.beta1"
3
- gemspec path: "../"