store_schema 0.1.0 → 1.0.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: 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: "../"