hstore-document 0.1.0 → 0.2.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: a6b822aa3298952dc3444dc2c5198d92c7901aae
4
- data.tar.gz: 2e08a5d7627f638ffd4c68d9618075172832f312
3
+ metadata.gz: 89ad567e63bc104409c20552510d962c1613a408
4
+ data.tar.gz: b8508c43a63da84b333424149e7c583e644efecf
5
5
  SHA512:
6
- metadata.gz: eba7709d09faff0caf967936a1be26ed47c6e5a2e937d1d500b79144555f7f58926cb3f4711dbc33e476cbe399ea273e813c756c9c7aa1990f23554d8ed35290
7
- data.tar.gz: 3206bd0eaaa2fbc5d957191247fef144e4e5f8d5078e1c73d3256214ec21beb97130a28964b93eaedb4e10418c23927e2fa5168748aa695d8282a61290f2a712
6
+ metadata.gz: 16f62b9048333f3a2ee7ab44637f2cc288193ed39cb47237155cc81bc4f623200b01383cf928424f82e460a456efa66519e8eae7f3755f37824dffc744213620
7
+ data.tar.gz: a9f276b5469cb1dd00bdba0a4fec7b8945fadcf9a8bdb7c29f3579bb1f00abb0d9735907503418e6c2eff55c2f7b91610b6c1128ad8d73a1a47d4a0505566ddc
data/Gemfile CHANGED
@@ -6,16 +6,15 @@ source "http://rubygems.org"
6
6
  # Add dependencies to develop your gem here.
7
7
  # Include everything needed to run rake, tests, features, etc.
8
8
  group :development do
9
- gem "rspec", "~> 2.14"
10
- gem "rdoc", "~> 3.12"
11
- gem "bundler", "~> 1.0"
12
- gem "jeweler", "~> 1.8.7"
13
- gem "pry"
14
- gem "pry-debugger"
9
+ gem "rspec"
10
+ gem "rdoc"
11
+ gem "bundler"
12
+ gem "jeweler"
13
+ gem "pry-byebug"
15
14
  gem "guard"
16
15
  gem "guard-rspec"
17
16
  end
18
17
 
19
18
  gem 'pg'
20
19
  gem 'pg-hstore'
21
- gem 'activerecord', '>=3.2', '<4.1'
20
+ gem 'activerecord', '>=3.2', '<5'
@@ -1,137 +1,137 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
- activemodel (4.0.4)
5
- activesupport (= 4.0.4)
6
- builder (~> 3.1.0)
7
- activerecord (4.0.4)
8
- activemodel (= 4.0.4)
9
- activerecord-deprecated_finders (~> 1.0.2)
10
- activesupport (= 4.0.4)
11
- arel (~> 4.0.0)
12
- activerecord-deprecated_finders (1.0.3)
13
- activesupport (4.0.4)
4
+ activemodel (4.1.6)
5
+ activesupport (= 4.1.6)
6
+ builder (~> 3.1)
7
+ activerecord (4.1.6)
8
+ activemodel (= 4.1.6)
9
+ activesupport (= 4.1.6)
10
+ arel (~> 5.0.0)
11
+ activesupport (4.1.6)
14
12
  i18n (~> 0.6, >= 0.6.9)
15
- minitest (~> 4.2)
16
- multi_json (~> 1.3)
13
+ json (~> 1.7, >= 1.7.7)
14
+ minitest (~> 5.1)
17
15
  thread_safe (~> 0.1)
18
- tzinfo (~> 0.3.37)
16
+ tzinfo (~> 1.1)
19
17
  addressable (2.3.6)
20
- arel (4.0.2)
21
- atomic (1.1.16)
22
- builder (3.1.4)
23
- celluloid (0.15.2)
24
- timers (~> 1.1.0)
25
- celluloid-io (0.15.0)
26
- celluloid (>= 0.15.0)
27
- nio4r (>= 0.5.0)
18
+ arel (5.0.1.20140414130214)
19
+ builder (3.2.2)
20
+ byebug (3.4.1)
21
+ columnize (~> 0.8)
22
+ debugger-linecache (~> 1.2)
23
+ slop (~> 3.6)
24
+ celluloid (0.16.0)
25
+ timers (~> 4.0.0)
28
26
  coderay (1.1.0)
29
- columnize (0.3.6)
30
- debugger (1.6.6)
31
- columnize (>= 0.3.1)
32
- debugger-linecache (~> 1.2.0)
33
- debugger-ruby_core_source (~> 1.3.2)
27
+ columnize (0.8.9)
34
28
  debugger-linecache (1.2.0)
35
- debugger-ruby_core_source (1.3.2)
29
+ descendants_tracker (0.0.4)
30
+ thread_safe (~> 0.3, >= 0.3.1)
36
31
  diff-lcs (1.2.5)
37
- faraday (0.8.9)
38
- multipart-post (~> 1.2.0)
39
- ffi (1.9.3)
40
- formatador (0.2.4)
41
- git (1.2.6)
42
- github_api (0.10.1)
43
- addressable
44
- faraday (~> 0.8.1)
45
- hashie (>= 1.2)
46
- multi_json (~> 1.4)
47
- nokogiri (~> 1.5.2)
32
+ faraday (0.9.0)
33
+ multipart-post (>= 1.2, < 3)
34
+ ffi (1.9.5)
35
+ formatador (0.2.5)
36
+ git (1.2.8)
37
+ github_api (0.12.1)
38
+ addressable (~> 2.3)
39
+ descendants_tracker (~> 0.0.4)
40
+ faraday (~> 0.8, < 0.10)
41
+ hashie (>= 3.2)
42
+ multi_json (>= 1.7.5, < 2.0)
43
+ nokogiri (~> 1.6.3)
48
44
  oauth2
49
- guard (2.6.0)
45
+ guard (2.6.1)
50
46
  formatador (>= 0.2.4)
51
47
  listen (~> 2.7)
52
48
  lumberjack (~> 1.0)
53
49
  pry (>= 0.9.12)
54
50
  thor (>= 0.18.1)
55
- guard-rspec (4.2.8)
51
+ guard-rspec (4.3.1)
56
52
  guard (~> 2.1)
57
53
  rspec (>= 2.14, < 4.0)
58
- hashie (2.0.5)
54
+ hashie (3.3.1)
59
55
  highline (1.6.21)
60
- i18n (0.6.9)
61
- jeweler (1.8.8)
56
+ hitimes (1.2.2)
57
+ i18n (0.6.11)
58
+ jeweler (2.0.1)
62
59
  builder
63
- bundler (~> 1.0)
60
+ bundler (>= 1.0)
64
61
  git (>= 1.2.5)
65
- github_api (= 0.10.1)
62
+ github_api
66
63
  highline (>= 1.6.15)
67
- nokogiri (= 1.5.10)
64
+ nokogiri (>= 1.5.10)
68
65
  rake
69
66
  rdoc
70
67
  json (1.8.1)
71
- jwt (0.1.11)
72
- multi_json (>= 1.5)
73
- listen (2.7.1)
68
+ jwt (1.0.0)
69
+ listen (2.7.9)
74
70
  celluloid (>= 0.15.2)
75
- celluloid-io (>= 0.15.0)
76
71
  rb-fsevent (>= 0.9.3)
77
72
  rb-inotify (>= 0.9)
78
- lumberjack (1.0.5)
73
+ lumberjack (1.0.9)
79
74
  method_source (0.8.2)
80
- minitest (4.7.5)
81
- multi_json (1.9.2)
75
+ mini_portile (0.6.0)
76
+ minitest (5.4.1)
77
+ multi_json (1.10.1)
82
78
  multi_xml (0.5.5)
83
- multipart-post (1.2.0)
84
- nio4r (1.0.0)
85
- nokogiri (1.5.10)
86
- oauth2 (0.9.3)
79
+ multipart-post (2.0.0)
80
+ nokogiri (1.6.3.1)
81
+ mini_portile (= 0.6.0)
82
+ oauth2 (1.0.0)
87
83
  faraday (>= 0.8, < 0.10)
88
- jwt (~> 0.1.8)
84
+ jwt (~> 1.0)
89
85
  multi_json (~> 1.3)
90
86
  multi_xml (~> 0.5)
91
87
  rack (~> 1.2)
92
88
  pg (0.17.1)
93
89
  pg-hstore (1.2.0)
94
- pry (0.9.12.6)
95
- coderay (~> 1.0)
96
- method_source (~> 0.8)
90
+ pry (0.10.1)
91
+ coderay (~> 1.1.0)
92
+ method_source (~> 0.8.1)
97
93
  slop (~> 3.4)
98
- pry-debugger (0.2.2)
99
- debugger (~> 1.3)
100
- pry (~> 0.9.10)
94
+ pry-byebug (2.0.0)
95
+ byebug (~> 3.4)
96
+ pry (~> 0.10)
101
97
  rack (1.5.2)
102
- rake (10.2.2)
98
+ rake (10.3.2)
103
99
  rb-fsevent (0.9.4)
104
- rb-inotify (0.9.3)
100
+ rb-inotify (0.9.5)
105
101
  ffi (>= 0.5.0)
106
- rdoc (3.12.2)
102
+ rdoc (4.1.2)
107
103
  json (~> 1.4)
108
- rspec (2.14.1)
109
- rspec-core (~> 2.14.0)
110
- rspec-expectations (~> 2.14.0)
111
- rspec-mocks (~> 2.14.0)
112
- rspec-core (2.14.8)
113
- rspec-expectations (2.14.5)
114
- diff-lcs (>= 1.1.3, < 2.0)
115
- rspec-mocks (2.14.6)
116
- slop (3.5.0)
104
+ rspec (3.1.0)
105
+ rspec-core (~> 3.1.0)
106
+ rspec-expectations (~> 3.1.0)
107
+ rspec-mocks (~> 3.1.0)
108
+ rspec-core (3.1.4)
109
+ rspec-support (~> 3.1.0)
110
+ rspec-expectations (3.1.1)
111
+ diff-lcs (>= 1.2.0, < 2.0)
112
+ rspec-support (~> 3.1.0)
113
+ rspec-mocks (3.1.1)
114
+ rspec-support (~> 3.1.0)
115
+ rspec-support (3.1.0)
116
+ slop (3.6.0)
117
117
  thor (0.19.1)
118
- thread_safe (0.3.1)
119
- atomic (>= 1.1.7, < 2)
120
- timers (1.1.0)
121
- tzinfo (0.3.39)
118
+ thread_safe (0.3.4)
119
+ timers (4.0.1)
120
+ hitimes
121
+ tzinfo (1.2.2)
122
+ thread_safe (~> 0.1)
122
123
 
123
124
  PLATFORMS
124
125
  ruby
125
126
 
126
127
  DEPENDENCIES
127
- activerecord (>= 3.2, < 4.1)
128
- bundler (~> 1.0)
128
+ activerecord (>= 3.2, < 5)
129
+ bundler
129
130
  guard
130
131
  guard-rspec
131
- jeweler (~> 1.8.7)
132
+ jeweler
132
133
  pg
133
134
  pg-hstore
134
- pry
135
- pry-debugger
136
- rdoc (~> 3.12)
137
- rspec (~> 2.14)
135
+ pry-byebug
136
+ rdoc
137
+ rspec
data/Guardfile CHANGED
@@ -1,7 +1,7 @@
1
1
  # A sample Guardfile
2
2
  # More info at https://github.com/guard/guard#readme
3
3
 
4
- guard :rspec do
4
+ guard :rspec, cmd: 'rspec' do
5
5
  watch(%r{^spec/.+_spec\.rb$})
6
6
  watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
7
7
  watch('spec/spec_helper.rb') { "spec" }
data/README.md CHANGED
@@ -45,7 +45,7 @@ An example is worth a thousand words:
45
45
 
46
46
  ## TODO
47
47
 
48
- * Rails 4.1 support
48
+ * ActiveRecord 5.0 support
49
49
  * Query support, e.g. Person.where('address.street' => 'Elm')
50
50
 
51
51
  ## Contributing to hstore-document
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.2.0
@@ -2,16 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: hstore-document 0.1.0 ruby lib
5
+ # stub: hstore-document 0.2.0 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "hstore-document"
9
- s.version = "0.1.0"
9
+ s.version = "0.2.0"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib"]
13
13
  s.authors = ["Roman Shterenzon"]
14
- s.date = "2014-04-22"
14
+ s.date = "2014-09-26"
15
15
  s.description = "Allows embedding documents in ActiveRecord models using PostgreSQL HStore"
16
16
  s.email = "roman.shterenzon@gmail.com"
17
17
  s.extra_rdoc_files = [
@@ -52,38 +52,35 @@ Gem::Specification.new do |s|
52
52
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
53
53
  s.add_runtime_dependency(%q<pg>, [">= 0"])
54
54
  s.add_runtime_dependency(%q<pg-hstore>, [">= 0"])
55
- s.add_runtime_dependency(%q<activerecord>, ["< 4.1", ">= 3.2"])
56
- s.add_development_dependency(%q<rspec>, ["~> 2.14"])
57
- s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
58
- s.add_development_dependency(%q<bundler>, ["~> 1.0"])
59
- s.add_development_dependency(%q<jeweler>, ["~> 1.8.7"])
60
- s.add_development_dependency(%q<pry>, [">= 0"])
61
- s.add_development_dependency(%q<pry-debugger>, [">= 0"])
55
+ s.add_runtime_dependency(%q<activerecord>, ["< 5", ">= 3.2"])
56
+ s.add_development_dependency(%q<rspec>, [">= 0"])
57
+ s.add_development_dependency(%q<rdoc>, [">= 0"])
58
+ s.add_development_dependency(%q<bundler>, [">= 0"])
59
+ s.add_development_dependency(%q<jeweler>, [">= 0"])
60
+ s.add_development_dependency(%q<pry-byebug>, [">= 0"])
62
61
  s.add_development_dependency(%q<guard>, [">= 0"])
63
62
  s.add_development_dependency(%q<guard-rspec>, [">= 0"])
64
63
  else
65
64
  s.add_dependency(%q<pg>, [">= 0"])
66
65
  s.add_dependency(%q<pg-hstore>, [">= 0"])
67
- s.add_dependency(%q<activerecord>, ["< 4.1", ">= 3.2"])
68
- s.add_dependency(%q<rspec>, ["~> 2.14"])
69
- s.add_dependency(%q<rdoc>, ["~> 3.12"])
70
- s.add_dependency(%q<bundler>, ["~> 1.0"])
71
- s.add_dependency(%q<jeweler>, ["~> 1.8.7"])
72
- s.add_dependency(%q<pry>, [">= 0"])
73
- s.add_dependency(%q<pry-debugger>, [">= 0"])
66
+ s.add_dependency(%q<activerecord>, ["< 5", ">= 3.2"])
67
+ s.add_dependency(%q<rspec>, [">= 0"])
68
+ s.add_dependency(%q<rdoc>, [">= 0"])
69
+ s.add_dependency(%q<bundler>, [">= 0"])
70
+ s.add_dependency(%q<jeweler>, [">= 0"])
71
+ s.add_dependency(%q<pry-byebug>, [">= 0"])
74
72
  s.add_dependency(%q<guard>, [">= 0"])
75
73
  s.add_dependency(%q<guard-rspec>, [">= 0"])
76
74
  end
77
75
  else
78
76
  s.add_dependency(%q<pg>, [">= 0"])
79
77
  s.add_dependency(%q<pg-hstore>, [">= 0"])
80
- s.add_dependency(%q<activerecord>, ["< 4.1", ">= 3.2"])
81
- s.add_dependency(%q<rspec>, ["~> 2.14"])
82
- s.add_dependency(%q<rdoc>, ["~> 3.12"])
83
- s.add_dependency(%q<bundler>, ["~> 1.0"])
84
- s.add_dependency(%q<jeweler>, ["~> 1.8.7"])
85
- s.add_dependency(%q<pry>, [">= 0"])
86
- s.add_dependency(%q<pry-debugger>, [">= 0"])
78
+ s.add_dependency(%q<activerecord>, ["< 5", ">= 3.2"])
79
+ s.add_dependency(%q<rspec>, [">= 0"])
80
+ s.add_dependency(%q<rdoc>, [">= 0"])
81
+ s.add_dependency(%q<bundler>, [">= 0"])
82
+ s.add_dependency(%q<jeweler>, [">= 0"])
83
+ s.add_dependency(%q<pry-byebug>, [">= 0"])
87
84
  s.add_dependency(%q<guard>, [">= 0"])
88
85
  s.add_dependency(%q<guard-rspec>, [">= 0"])
89
86
  end
@@ -12,6 +12,10 @@ module ActiveRecord
12
12
  def macro
13
13
  :embeds_one
14
14
  end
15
+
16
+ def valid_options
17
+ super + [:class_name]
18
+ end
15
19
  end
16
20
  end
17
21
  end
@@ -2,17 +2,32 @@ require 'active_record/associations/association'
2
2
 
3
3
  module ActiveRecord
4
4
  module Associations
5
- module ClassMethods
6
- # @param [Symbol, String] name of association
7
- # @param [Hash] options
8
- # @option options [Boolean] :validate Validate associaited object (default: true)
9
- # @option options [String] :class_name Name of the associated class
10
- def embeds(name, options = {})
11
- validates_associated(name) unless options.delete(:validate) == false
12
- if ActiveRecord::VERSION::MAJOR < 4
13
- Builder::EmbedsOne.build(self, name, options)
14
- else
15
- Builder::EmbedsOne.build(self, name, options, nil)
5
+ if ActiveRecord::VERSION::STRING >= '4.1'
6
+ module ClassMethods
7
+ # @param [Symbol, String] name of association
8
+ # @param scope
9
+ # @param [Hash] options
10
+ # @option options [Boolean] :validate Validate associaited object (default: true)
11
+ # @option options [String] :class_name Name of the associated class
12
+ def embeds(name, scope = nil, options = {}, &extension)
13
+ validates_associated(name) unless options.delete(:validate) == false
14
+ reflection = Builder::EmbedsOne.build(self, name, options, nil)
15
+ Reflection.add_reflection self, name, reflection
16
+ end
17
+ end
18
+ else
19
+ module ClassMethods
20
+ # @param [Symbol, String] name of association
21
+ # @param [Hash] options
22
+ # @option options [Boolean] :validate Validate associaited object (default: true)
23
+ # @option options [String] :class_name Name of the associated class
24
+ def embeds(name, options = {})
25
+ validates_associated(name) unless options.delete(:validate) == false
26
+ if ActiveRecord::VERSION::MAJOR < 4
27
+ Builder::EmbedsOne.build(self, name, options)
28
+ else
29
+ Builder::EmbedsOne.build(self, name, options, nil)
30
+ end
16
31
  end
17
32
  end
18
33
  end
@@ -3,38 +3,71 @@ require 'active_record/reflection'
3
3
 
4
4
  module ActiveRecord
5
5
  module Reflection
6
- class AssociationReflection # :nodoc:
7
- def association_class_with_embeds_one
8
- if macro == :embeds_one
9
- Associations::EmbedsOneAssociation
10
- else
11
- association_class_without_embeds_one
6
+ if ActiveRecord::VERSION::STRING >= '4.1'
7
+ class EmbedsOneReflection < AssociationReflection # :nodoc:
8
+ def initialize(name, scope, options, active_record)
9
+ super(macro, name, scope, options, active_record)
10
+ end
11
+
12
+ def macro; :embeds_one; end
13
+
14
+ def embeds_one?; true; end
15
+
16
+ def association_class_with_embeds_one
17
+ if macro == :embeds_one
18
+ Associations::EmbedsOneAssociation
19
+ else
20
+ association_class_without_embeds_one
21
+ end
12
22
  end
23
+
24
+ alias_method_chain :association_class, :embeds_one
13
25
  end
14
- alias_method_chain :association_class, :embeds_one
15
- end
16
26
 
17
- module ClassMethods # :nodoc:
18
- if ActiveRecord::VERSION::MAJOR < 4
19
- def create_reflection_with_embeds(macro, name, options, active_record)
27
+ class << self
28
+ def create_with_embeds(macro, name, scope, options, active_record)
20
29
  unless macro == :embeds_one
21
- return create_reflection_without_embeds(macro, name, options, active_record)
30
+ return create_without_embeds(macro, name, scope, options, active_record)
22
31
  end
23
- AssociationReflection.new(macro, name, options, active_record).tap do |reflection|
24
- reflections.merge!(name => reflection)
32
+ EmbedsOneReflection.new(name, scope, options, active_record)
33
+ end
34
+
35
+ alias_method_chain :create, :embeds
36
+ end
37
+ else
38
+ class AssociationReflection # :nodoc:
39
+ def association_class_with_embeds_one
40
+ if macro == :embeds_one
41
+ Associations::EmbedsOneAssociation
42
+ else
43
+ association_class_without_embeds_one
25
44
  end
26
45
  end
27
- else
28
- def create_reflection_with_embeds(macro, name, scope, options, active_record)
29
- unless macro == :embeds_one
30
- return create_reflection_without_embeds(macro, name, scope, options, active_record)
46
+ alias_method_chain :association_class, :embeds_one
47
+ end
48
+
49
+ module ClassMethods # :nodoc:
50
+ if ActiveRecord::VERSION::MAJOR < 4
51
+ def create_reflection_with_embeds(macro, name, options, active_record)
52
+ unless macro == :embeds_one
53
+ return create_reflection_without_embeds(macro, name, options, active_record)
54
+ end
55
+ AssociationReflection.new(macro, name, options, active_record).tap do |reflection|
56
+ reflections.merge!(name => reflection)
57
+ end
31
58
  end
32
- AssociationReflection.new(macro, name, scope, options, active_record).tap do |reflection|
33
- reflections.merge!(name => reflection)
59
+ else
60
+ def create_reflection_with_embeds(macro, name, scope, options, active_record)
61
+ unless macro == :embeds_one
62
+ return create_reflection_without_embeds(macro, name, scope, options, active_record)
63
+ end
64
+ AssociationReflection.new(macro, name, scope, options, active_record).tap do |reflection|
65
+ reflections.merge!(name => reflection)
66
+ end
34
67
  end
35
68
  end
69
+ alias_method_chain :create_reflection, :embeds
36
70
  end
37
- alias_method_chain :create_reflection, :embeds
38
71
  end
39
72
  end
40
73
  end
@@ -51,7 +51,7 @@ module Hstore
51
51
  end
52
52
  assign_attributes(attributes.except(self.class.serialized_attributes.keys))
53
53
  else
54
- assign_attributes(attributes)
54
+ assign_attributes(attributes) if attributes
55
55
  end
56
56
  changed_attributes.clear
57
57
  end
@@ -6,15 +6,15 @@ describe Hstore::Document do
6
6
 
7
7
  describe "Instantiation" do
8
8
  it "builds" do
9
- subject.street.should eq('Elm')
10
- subject.number.should eq(13)
9
+ expect(subject.street).to eq('Elm')
10
+ expect(subject.number).to eq(13)
11
11
  end
12
12
 
13
13
  it "has defaults" do
14
14
  address = Address.new
15
- address.street.should eq('unknown')
15
+ expect(address.street).to eq('unknown')
16
16
  address.street = nil
17
- address.street.should be_nil
17
+ expect(address.street).to be_nil
18
18
  end
19
19
  end
20
20
 
@@ -23,13 +23,13 @@ describe Hstore::Document do
23
23
 
24
24
  it "validates" do
25
25
  subject.street = nil
26
- subject.should_not be_valid
27
- subject.errors[:street].should_not be_empty
28
- subject.errors[:number].should_not be_empty
26
+ expect(subject).not_to be_valid
27
+ expect(subject.errors[:street]).not_to be_empty
28
+ expect(subject.errors[:number]).not_to be_empty
29
29
 
30
30
  subject.street = 'Oak'
31
31
  subject.number = 7
32
- subject.should be_valid
32
+ expect(subject).to be_valid
33
33
  end
34
34
  end
35
35
 
@@ -38,7 +38,7 @@ describe Hstore::Document do
38
38
  let(:data) { %{"street"=>"Elm","number"=>"13","business"=>"t"} }
39
39
 
40
40
  it "serializes to json" do
41
- subject.as_json.should eq({
41
+ expect(subject.as_json).to eq({
42
42
  'street' => 'Elm',
43
43
  'number' => 13,
44
44
  'business' => true
@@ -46,9 +46,9 @@ describe Hstore::Document do
46
46
  end
47
47
 
48
48
  it "serializes to hstore" do
49
- subject.to_hstore.should eq(data)
49
+ expect(subject.to_hstore).to eq(data)
50
50
  subject.business = false
51
- subject.to_hstore.should eq(%{"street"=>"Elm","number"=>"13","business"=>"f"})
51
+ expect(subject.to_hstore).to eq(%{"street"=>"Elm","number"=>"13","business"=>"f"})
52
52
  end
53
53
 
54
54
  it "unserializes from hstore" do
@@ -58,10 +58,10 @@ describe Hstore::Document do
58
58
  {"street"=>"Elm","number"=>"13","business"=>"t"}
59
59
  end
60
60
  obj = Address.from_hstore(serialized)
61
- obj.should be_a_kind_of(Address)
62
- obj.street.should eq('Elm')
63
- obj.business.should eq(true)
64
- obj.number.should eq(13)
61
+ expect(obj).to be_a_kind_of(Address)
62
+ expect(obj.street).to eq('Elm')
63
+ expect(obj.business).to eq(true)
64
+ expect(obj.number).to eq(13)
65
65
  end
66
66
 
67
67
  end
@@ -69,11 +69,11 @@ describe Hstore::Document do
69
69
  describe "State change tracking" do
70
70
  subject { Address.new }
71
71
 
72
- it { should_not be_changed }
72
+ it { is_expected.not_to be_changed }
73
73
 
74
74
  it "is changed when attribute is changed" do
75
75
  subject.street = 'Elm'
76
- subject.should be_changed
76
+ expect(subject).to be_changed
77
77
  end
78
78
 
79
79
  it "destroys" do
@@ -12,7 +12,7 @@ describe "Embedded" do
12
12
  describe "Assignment" do
13
13
  it "assigns" do
14
14
  subject.address = address
15
- subject.address.should eq(address)
15
+ expect(subject.address).to eq(address)
16
16
  end
17
17
  end
18
18
 
@@ -20,7 +20,7 @@ describe "Embedded" do
20
20
  subject { Person.create!(address: address) }
21
21
 
22
22
  it "saves" do
23
- subject.reload.address.should eq(address)
23
+ expect(subject.reload.address).to eq(address)
24
24
  end
25
25
  end
26
26
 
@@ -28,24 +28,24 @@ describe "Embedded" do
28
28
  subject { Person.create!(address: address) }
29
29
 
30
30
  it "tracks persisted state" do
31
- subject.reload.address.should be_persisted
31
+ expect(subject.reload.address).to be_persisted
32
32
  end
33
33
 
34
34
  it "tracks destroyed state" do
35
35
  subject.destroy
36
- subject.address.should be_destroyed
36
+ expect(subject.address).to be_destroyed
37
37
  end
38
38
 
39
39
  it "destroys" do
40
40
  subject.address.destroy
41
- subject.should_not be_destroyed
42
- subject.reload.address.should be_nil
41
+ expect(subject).not_to be_destroyed
42
+ expect(subject.reload.address).to be_nil
43
43
  end
44
44
 
45
45
  it "updates" do
46
46
  subject.address.number = 17
47
47
  subject.address.save
48
- subject.reload.address.number.should eq(17)
48
+ expect(subject.reload.address.number).to eq(17)
49
49
  end
50
50
 
51
51
  it "creates" do
@@ -53,7 +53,7 @@ describe "Embedded" do
53
53
  address = Address.new(valid_attributes)
54
54
  person.address = address
55
55
  person.address.save
56
- person.reload.address.should eq(address)
56
+ expect(person.reload.address).to eq(address)
57
57
  end
58
58
 
59
59
  end
@@ -63,18 +63,18 @@ describe "Embedded" do
63
63
 
64
64
  it "assigns" do
65
65
  address = subject.address
66
- address.street.should eq('Birch')
67
- address.number.should eq(1)
68
- address.business.should eq(false)
66
+ expect(address.street).to eq('Birch')
67
+ expect(address.number).to eq(1)
68
+ expect(address.business).to eq(false)
69
69
  end
70
70
 
71
71
  it "saves" do
72
72
  subject.save!
73
73
  subject.reload
74
74
  address = subject.address
75
- address.street.should eq('Birch')
76
- address.number.should eq(1)
77
- address.business.should eq(false)
75
+ expect(address.street).to eq('Birch')
76
+ expect(address.number).to eq(1)
77
+ expect(address.business).to eq(false)
78
78
  end
79
79
  end
80
80
 
@@ -82,20 +82,20 @@ describe "Embedded" do
82
82
 
83
83
  it "builds" do
84
84
  address = subject.build_address(valid_attributes)
85
- address.should be_a_kind_of(Address)
86
- address.number.should eq(1)
85
+ expect(address).to be_a_kind_of(Address)
86
+ expect(address.number).to eq(1)
87
87
  end
88
88
 
89
89
  it "creates" do
90
90
  address = subject.create_address(valid_attributes)
91
- address.should be_a_kind_of(Address)
92
- address.number.should eq(1)
91
+ expect(address).to be_a_kind_of(Address)
92
+ expect(address.number).to eq(1)
93
93
  end
94
94
 
95
95
  it "creates!" do
96
96
  address = subject.create_address!(valid_attributes)
97
- address.should be_a_kind_of(Address)
98
- address.number.should eq(1)
97
+ expect(address).to be_a_kind_of(Address)
98
+ expect(address.number).to eq(1)
99
99
  end
100
100
  end
101
101
 
@@ -104,13 +104,13 @@ describe "Embedded" do
104
104
 
105
105
  context "Invalid" do
106
106
  it "validates associated" do
107
- subject.address.should_not be_valid
108
- subject.should_not be_valid
109
- subject.errors['address'].should_not be_empty
107
+ expect(subject.address).not_to be_valid
108
+ expect(subject).not_to be_valid
109
+ expect(subject.errors['address']).not_to be_empty
110
110
  end
111
111
 
112
112
  it "doesn't save parent when validation fails" do
113
- subject.save.should be_false
113
+ expect(subject.save).to be_falsey
114
114
  end
115
115
  end
116
116
  end
@@ -4,11 +4,16 @@ require 'rspec'
4
4
  require 'active_record'
5
5
  require 'hstore-document'
6
6
  require 'pry'
7
+ if ActiveRecord::VERSION::STRING > '4.1'
8
+ require 'json'
9
+ end
7
10
 
8
11
  # Requires supporting files with custom matchers and macros, etc,
9
12
  # in ./support/ and its subdirectories.
10
13
  Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
11
14
 
15
+ I18n.enforce_available_locales = true
16
+
12
17
  RSpec.configure do |config|
13
18
  config.before(:suite) do
14
19
  ActiveRecord::Base.establish_connection({
@@ -16,7 +21,8 @@ RSpec.configure do |config|
16
21
  encoding: 'unicode',
17
22
  database: 'hstore_document',
18
23
  username: 'postgres',
19
- password: 'postgres'
24
+ password: 'postgres',
25
+ host: 'localhost'
20
26
  })
21
27
  # ActiveRecord::Base.logger = Logger.new(STDERR)
22
28
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hstore-document
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Roman Shterenzon
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-22 00:00:00.000000000 Z
11
+ date: 2014-09-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pg
@@ -44,7 +44,7 @@ dependencies:
44
44
  requirements:
45
45
  - - "<"
46
46
  - !ruby/object:Gem::Version
47
- version: '4.1'
47
+ version: '5'
48
48
  - - ">="
49
49
  - !ruby/object:Gem::Version
50
50
  version: '3.2'
@@ -54,7 +54,7 @@ dependencies:
54
54
  requirements:
55
55
  - - "<"
56
56
  - !ruby/object:Gem::Version
57
- version: '4.1'
57
+ version: '5'
58
58
  - - ">="
59
59
  - !ruby/object:Gem::Version
60
60
  version: '3.2'
@@ -62,60 +62,46 @@ dependencies:
62
62
  name: rspec
63
63
  requirement: !ruby/object:Gem::Requirement
64
64
  requirements:
65
- - - "~>"
65
+ - - ">="
66
66
  - !ruby/object:Gem::Version
67
- version: '2.14'
67
+ version: '0'
68
68
  type: :development
69
69
  prerelease: false
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
- - - "~>"
72
+ - - ">="
73
73
  - !ruby/object:Gem::Version
74
- version: '2.14'
74
+ version: '0'
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: rdoc
77
77
  requirement: !ruby/object:Gem::Requirement
78
78
  requirements:
79
- - - "~>"
79
+ - - ">="
80
80
  - !ruby/object:Gem::Version
81
- version: '3.12'
81
+ version: '0'
82
82
  type: :development
83
83
  prerelease: false
84
84
  version_requirements: !ruby/object:Gem::Requirement
85
85
  requirements:
86
- - - "~>"
86
+ - - ">="
87
87
  - !ruby/object:Gem::Version
88
- version: '3.12'
88
+ version: '0'
89
89
  - !ruby/object:Gem::Dependency
90
90
  name: bundler
91
91
  requirement: !ruby/object:Gem::Requirement
92
92
  requirements:
93
- - - "~>"
93
+ - - ">="
94
94
  - !ruby/object:Gem::Version
95
- version: '1.0'
95
+ version: '0'
96
96
  type: :development
97
97
  prerelease: false
98
98
  version_requirements: !ruby/object:Gem::Requirement
99
99
  requirements:
100
- - - "~>"
100
+ - - ">="
101
101
  - !ruby/object:Gem::Version
102
- version: '1.0'
102
+ version: '0'
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: jeweler
105
- requirement: !ruby/object:Gem::Requirement
106
- requirements:
107
- - - "~>"
108
- - !ruby/object:Gem::Version
109
- version: 1.8.7
110
- type: :development
111
- prerelease: false
112
- version_requirements: !ruby/object:Gem::Requirement
113
- requirements:
114
- - - "~>"
115
- - !ruby/object:Gem::Version
116
- version: 1.8.7
117
- - !ruby/object:Gem::Dependency
118
- name: pry
119
105
  requirement: !ruby/object:Gem::Requirement
120
106
  requirements:
121
107
  - - ">="
@@ -129,7 +115,7 @@ dependencies:
129
115
  - !ruby/object:Gem::Version
130
116
  version: '0'
131
117
  - !ruby/object:Gem::Dependency
132
- name: pry-debugger
118
+ name: pry-byebug
133
119
  requirement: !ruby/object:Gem::Requirement
134
120
  requirements:
135
121
  - - ">="