activerecord-postgres-hstore 0.4.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -12,5 +12,4 @@ group :development, :test do
12
12
  gem "jeweler", "~> 1.8.3"
13
13
  gem "rdoc"
14
14
  gem "rspec"
15
- gem "rcov"
16
15
  end
data/Gemfile.lock CHANGED
@@ -1,54 +1,54 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
- actionmailer (3.2.3)
5
- actionpack (= 3.2.3)
4
+ actionmailer (3.2.8)
5
+ actionpack (= 3.2.8)
6
6
  mail (~> 2.4.4)
7
- actionpack (3.2.3)
8
- activemodel (= 3.2.3)
9
- activesupport (= 3.2.3)
7
+ actionpack (3.2.8)
8
+ activemodel (= 3.2.8)
9
+ activesupport (= 3.2.8)
10
10
  builder (~> 3.0.0)
11
11
  erubis (~> 2.7.0)
12
- journey (~> 1.0.1)
12
+ journey (~> 1.0.4)
13
13
  rack (~> 1.4.0)
14
14
  rack-cache (~> 1.2)
15
15
  rack-test (~> 0.6.1)
16
- sprockets (~> 2.1.2)
17
- activemodel (3.2.3)
18
- activesupport (= 3.2.3)
16
+ sprockets (~> 2.1.3)
17
+ activemodel (3.2.8)
18
+ activesupport (= 3.2.8)
19
19
  builder (~> 3.0.0)
20
- activerecord (3.2.3)
21
- activemodel (= 3.2.3)
22
- activesupport (= 3.2.3)
20
+ activerecord (3.2.8)
21
+ activemodel (= 3.2.8)
22
+ activesupport (= 3.2.8)
23
23
  arel (~> 3.0.2)
24
24
  tzinfo (~> 0.3.29)
25
- activeresource (3.2.3)
26
- activemodel (= 3.2.3)
27
- activesupport (= 3.2.3)
28
- activesupport (3.2.3)
25
+ activeresource (3.2.8)
26
+ activemodel (= 3.2.8)
27
+ activesupport (= 3.2.8)
28
+ activesupport (3.2.8)
29
29
  i18n (~> 0.6)
30
30
  multi_json (~> 1.0)
31
31
  arel (3.0.2)
32
- builder (3.0.0)
32
+ builder (3.0.3)
33
33
  diff-lcs (1.1.3)
34
34
  erubis (2.7.0)
35
35
  git (1.2.5)
36
36
  hike (1.2.1)
37
- i18n (0.6.0)
38
- jeweler (1.8.3)
37
+ i18n (0.6.1)
38
+ jeweler (1.8.4)
39
39
  bundler (~> 1.0)
40
40
  git (>= 1.2.5)
41
41
  rake
42
42
  rdoc
43
- journey (1.0.3)
44
- json (1.7.3)
43
+ journey (1.0.4)
44
+ json (1.7.5)
45
45
  mail (2.4.4)
46
46
  i18n (>= 0.4.0)
47
47
  mime-types (~> 1.16)
48
48
  treetop (~> 1.4.8)
49
- mime-types (1.18)
50
- multi_json (1.3.5)
51
- pg (0.13.2)
49
+ mime-types (1.19)
50
+ multi_json (1.3.6)
51
+ pg (0.14.1)
52
52
  polyglot (0.3.3)
53
53
  rack (1.4.1)
54
54
  rack-cache (1.2)
@@ -57,43 +57,43 @@ GEM
57
57
  rack
58
58
  rack-test (0.6.1)
59
59
  rack (>= 1.0)
60
- rails (3.2.3)
61
- actionmailer (= 3.2.3)
62
- actionpack (= 3.2.3)
63
- activerecord (= 3.2.3)
64
- activeresource (= 3.2.3)
65
- activesupport (= 3.2.3)
60
+ rails (3.2.8)
61
+ actionmailer (= 3.2.8)
62
+ actionpack (= 3.2.8)
63
+ activerecord (= 3.2.8)
64
+ activeresource (= 3.2.8)
65
+ activesupport (= 3.2.8)
66
66
  bundler (~> 1.0)
67
- railties (= 3.2.3)
68
- railties (3.2.3)
69
- actionpack (= 3.2.3)
70
- activesupport (= 3.2.3)
67
+ railties (= 3.2.8)
68
+ railties (3.2.8)
69
+ actionpack (= 3.2.8)
70
+ activesupport (= 3.2.8)
71
71
  rack-ssl (~> 1.3.2)
72
72
  rake (>= 0.8.7)
73
73
  rdoc (~> 3.4)
74
- thor (~> 0.14.6)
74
+ thor (>= 0.14.6, < 2.0)
75
75
  rake (0.9.2.2)
76
- rcov (0.9.11)
77
76
  rdoc (3.12)
78
77
  json (~> 1.4)
79
- rspec (2.10.0)
80
- rspec-core (~> 2.10.0)
81
- rspec-expectations (~> 2.10.0)
82
- rspec-mocks (~> 2.10.0)
83
- rspec-core (2.10.1)
84
- rspec-expectations (2.10.0)
78
+ rspec (2.11.0)
79
+ rspec-core (~> 2.11.0)
80
+ rspec-expectations (~> 2.11.0)
81
+ rspec-mocks (~> 2.11.0)
82
+ rspec-core (2.11.1)
83
+ rspec-expectations (2.11.3)
85
84
  diff-lcs (~> 1.1.3)
86
- rspec-mocks (2.10.1)
87
- shoulda (3.0.1)
88
- shoulda-context (~> 1.0.0)
89
- shoulda-matchers (~> 1.0.0)
85
+ rspec-mocks (2.11.2)
86
+ shoulda (3.1.1)
87
+ shoulda-context (~> 1.0)
88
+ shoulda-matchers (~> 1.2)
90
89
  shoulda-context (1.0.0)
91
- shoulda-matchers (1.0.0)
90
+ shoulda-matchers (1.3.0)
91
+ activesupport (>= 3.0.0)
92
92
  sprockets (2.1.3)
93
93
  hike (~> 1.2)
94
94
  rack (~> 1.0)
95
95
  tilt (~> 1.1, != 1.3.0)
96
- thor (0.14.6)
96
+ thor (0.16.0)
97
97
  tilt (1.3.3)
98
98
  treetop (1.4.10)
99
99
  polyglot
@@ -109,7 +109,6 @@ DEPENDENCIES
109
109
  pg
110
110
  rails
111
111
  rake
112
- rcov
113
112
  rdoc
114
113
  rspec
115
114
  shoulda
data/README.md CHANGED
@@ -13,22 +13,22 @@ Requirements
13
13
  ------------
14
14
 
15
15
  Postgresql 8.4+ (also tested with 9.0) with contrib and Rails 3. (It
16
- might work on 2.3.x with minor patches…)
16
+ might work on 2.3.x with minor patches…)
17
17
  On Ubuntu, this is easy: `sudo apt-get install postgresql-contrib-9.0`
18
18
 
19
- On Mac <del> …you are screwed. Use a VM. </del> you should use [the binary package kindly provided by EnterpriseDB](http://www.enterprisedb.com/products-services-training/pgdownload#osx)
19
+ On Mac <del> …you are screwed. Use a VM. </del> you should use [the binary package kindly provided by EnterpriseDB](http://www.enterprisedb.com/products-services-training/pgdownload#osx)
20
20
  [Homebrew’s](https://github.com/mxcl/homebrew) Postgres installation also includes the contrib packages: `brew install postgres`
21
21
 
22
22
  Notes for Rails 3.1 and above
23
23
  -----------------------------
24
24
 
25
- The master branch already support a custom serialization coder.
25
+ The master branch already support a custom serialization coder.
26
26
  If you want to use it just put in your Gemfile:
27
27
 
28
28
  gem 'activerecord-postgres-hstore', git: 'git://github.com/softa/activerecord-postgres-hstore.git'
29
29
 
30
30
  If you install them gem from the master branch you also have to insert a
31
- line in each model that uses hstore.
31
+ line in each model that uses hstore.
32
32
  Assuming a model called **Person**, with a **data** field on it, the
33
33
  code should look like:
34
34
 
@@ -63,7 +63,7 @@ e.g.:
63
63
  database: hstorage_dev
64
64
  encoding: unicode
65
65
  username: postgres
66
- password:
66
+ password:
67
67
  pool: 5
68
68
 
69
69
  Now you need to create a migration that adds hstore support for your
@@ -80,11 +80,11 @@ Finally you can create your own tables using hstore type. It’s easy:
80
80
  rails g model Person name:string data:hstore
81
81
  rake db:migrate
82
82
 
83
- You’re done.
83
+ You’re done.
84
84
  Well, not yet. Don’t forget to add indexes. Like this:
85
85
 
86
- `CREATE INDEX people_gist_data ON people USING GIST(data);`
87
- or
86
+ `CREATE INDEX people_gist_data ON people USING GIST(data);`
87
+ or
88
88
  `CREATE INDEX people_gin_data ON people USING GIN(data);`
89
89
 
90
90
  To understand the difference between the two types of indexes take a
@@ -94,7 +94,7 @@ Usage
94
94
  -----
95
95
 
96
96
  Once you have it installed, you just need to learn a little bit of new
97
- sqls for selecting stuff (creating and updating is transparent).
97
+ sqls for selecting stuff (creating and updating is transparent).
98
98
  Find records that contains a key named 'foo’:
99
99
 
100
100
  Person.where("data ? 'foo'")
@@ -106,10 +106,10 @@ Find records where 'foo’ is equal to 'bar’:
106
106
  This same sql is at least twice as fast (using indexes) if you do it
107
107
  that way:
108
108
 
109
- Person.where("data > 'foo=>bar")
110
-
109
+ Person.where("data @> 'foo=>bar'")
110
+
111
111
  Find records where 'foo’ is not equal to 'bar’:
112
-
112
+
113
113
  Person.where("data -> 'foo' <> 'bar'")
114
114
 
115
115
  Find records where 'foo’ is like 'bar’:
@@ -128,7 +128,7 @@ The destroy\_key method returns 'self’, so you can chain it:
128
128
 
129
129
  person.destroy_key(:data, :foo).destroy_key(:data, :bar).save
130
130
 
131
- But there is a shortcuts for that:
131
+ But there is a shortcuts for that:
132
132
 
133
133
  person.destroy_keys(:data, :foo, :bar)
134
134
 
@@ -140,6 +140,20 @@ and with many keys:
140
140
 
141
141
  Person.delete_keys(:data, :foo, :bar)
142
142
 
143
+ Caveats
144
+ -------
145
+
146
+ hstore keys and values have to be strings. This means `true` will become `"true"` and `42` will become `"42"` after you save the record. Only `nil` values are preserved.
147
+
148
+ It is also confusing when querying:
149
+
150
+ Person.where("data -> 'foo' = :value", value: true).to_sql
151
+ #=> SELECT "people".* FROM "people" WHERE ("data -> 'foo' = 't'") # notice 't'
152
+
153
+ To avoid the above, make sure all named parameters are strings:
154
+
155
+ Person.where("data -> 'foo' = :value", value: some_var.to_s)
156
+
143
157
  Have fun.
144
158
 
145
159
  Help
@@ -151,10 +165,10 @@ twitter: [@dbiazus](https://twitter.com/#!/dbiazus) or [@joaomilho](https://twit
151
165
  Note on Patches/Pull Requests
152
166
  -----------------------------
153
167
 
154
- * Fork the project.
155
- * Make your feature addition or bug fix.
156
- * Add tests for it. This is important so I don’t break it in a future version unintentionally.
157
- * Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
168
+ * Fork the project.
169
+ * Make your feature addition or bug fix.
170
+ * Add tests for it. This is important so I don’t break it in a future version unintentionally.
171
+ * Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
158
172
  * Send me a pull request. Bonus points for topic branches.
159
173
 
160
174
  Copyright
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.0
1
+ 0.4.1
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "activerecord-postgres-hstore"
8
- s.version = "0.4.0"
8
+ s.version = "0.4.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Juan Maiz", "Diogo Biazus"]
12
- s.date = "2012-06-14"
12
+ s.date = "2012-09-14"
13
13
  s.description = "This gem adds support for the postgres hstore type. It is the _just right_ alternative for storing hashes instead of using seralization or dynamic tables."
14
14
  s.email = "juanmaiz@gmail.com"
15
15
  s.extra_rdoc_files = [
@@ -110,7 +110,6 @@ Gem::Specification.new do |s|
110
110
  s.add_development_dependency(%q<jeweler>, ["~> 1.8.3"])
111
111
  s.add_development_dependency(%q<rdoc>, [">= 0"])
112
112
  s.add_development_dependency(%q<rspec>, [">= 0"])
113
- s.add_development_dependency(%q<rcov>, [">= 0"])
114
113
  else
115
114
  s.add_dependency(%q<rails>, [">= 0"])
116
115
  s.add_dependency(%q<rake>, [">= 0"])
@@ -120,7 +119,6 @@ Gem::Specification.new do |s|
120
119
  s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
121
120
  s.add_dependency(%q<rdoc>, [">= 0"])
122
121
  s.add_dependency(%q<rspec>, [">= 0"])
123
- s.add_dependency(%q<rcov>, [">= 0"])
124
122
  end
125
123
  else
126
124
  s.add_dependency(%q<rails>, [">= 0"])
@@ -131,7 +129,6 @@ Gem::Specification.new do |s|
131
129
  s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
132
130
  s.add_dependency(%q<rdoc>, [">= 0"])
133
131
  s.add_dependency(%q<rspec>, [">= 0"])
134
- s.add_dependency(%q<rcov>, [">= 0"])
135
132
  end
136
133
  end
137
134
 
@@ -66,7 +66,7 @@ module ActiveRecord
66
66
  destroy_keys(attribute, *keys).save
67
67
  end
68
68
 
69
- if Rails.version < '3.1.0'
69
+ if defined?(Rails) && Rails.version < '3.1.0'
70
70
  # This method is replaced for Rails 3 compatibility.
71
71
  # All I do is add the condition when the field is a hash that converts the value
72
72
  # to hstore format.
@@ -117,6 +117,22 @@ module ActiveRecord
117
117
 
118
118
  end
119
119
 
120
+ class Table
121
+
122
+ # Adds hstore type for migrations. So you can add columns to a table like:
123
+ # change_table :people do |t|
124
+ # ...
125
+ # t.hstore :info
126
+ # ...
127
+ # end
128
+ def hstore(*args)
129
+ options = args.extract_options!
130
+ column_names = args
131
+ column_names.each { |name| column(name, 'hstore', options) }
132
+ end
133
+
134
+ end
135
+
120
136
  class PostgreSQLColumn < Column
121
137
  # Does the type casting from hstore columns using String#from_hstore or Hash#from_hstore.
122
138
  def type_cast_code_with_hstore(var_name)
@@ -127,7 +143,7 @@ module ActiveRecord
127
143
  def simplified_type_with_hstore(field_type)
128
144
  field_type == 'hstore' ? :hstore : simplified_type_without_hstore(field_type)
129
145
  end
130
-
146
+
131
147
  alias_method_chain :type_cast_code, :hstore
132
148
  alias_method_chain :simplified_type, :hstore
133
149
  end
@@ -140,14 +156,14 @@ module ActiveRecord
140
156
  # Quotes correctly a hstore column value.
141
157
  def quote_with_hstore(value, column = nil)
142
158
  if value && column && column.sql_type == 'hstore'
143
- raise HstoreTypeMismatch, "#{column.name} must have a Hash or a valid hstore value (#{value})" unless value.kind_of?(Hash) || value.valid_hstore?
159
+ raise HstoreTypeMismatch, "#{column.name} must have a Hash or a valid hstore value (#{value})" unless value.kind_of?(Hash) || value.valid_hstore?
144
160
  return quote_without_hstore(value.to_hstore, column)
145
161
  end
146
162
  quote_without_hstore(value,column)
147
163
  end
148
-
164
+
149
165
  alias_method_chain :quote, :hstore
150
- alias_method_chain :native_database_types, :hstore
166
+ alias_method_chain :native_database_types, :hstore
151
167
  end
152
168
  end
153
169
  end
@@ -1,24 +1,34 @@
1
1
  class Hash
2
+ HSTORE_ESCAPED = /[,\s=>\\]/
3
+
4
+ # Escapes values such that they will work in an hstore string
5
+ def hstore_escape(str)
6
+ if str.nil?
7
+ return 'NULL'
8
+ end
9
+
10
+ str = str.to_s.dup
11
+ # backslash is an escape character for strings, and an escape character for gsub, so you need 6 backslashes to get 2 in the output.
12
+ # see http://stackoverflow.com/questions/1542214/weird-backslash-substitution-in-ruby for the gory details
13
+ str.gsub!(/\\/, '\\\\\\')
14
+ # escape backslashes before injecting more backslashes
15
+ str.gsub!(/"/, '\"')
16
+
17
+ if str =~ HSTORE_ESCAPED or str.empty?
18
+ str = '"%s"' % str
19
+ end
20
+
21
+ return str
22
+ end
2
23
 
3
24
  # Generates an hstore string format. This is the format used
4
25
  # to insert or update stuff in the database.
5
26
  def to_hstore
6
27
  return "" if empty?
7
28
 
8
- map { |idx, val|
9
- iv = [idx,val].map { |_|
10
- e = _.to_s.gsub(/"/, '\"')
11
- if _.nil?
12
- 'NULL'
13
- elsif e =~ /[,\s=>]/ || e.blank?
14
- '"%s"' % e
15
- else
16
- e
17
- end
18
- }
19
-
20
- "%s=>%s" % iv
21
- } * ","
29
+ map do |idx, val|
30
+ "%s=>%s" % [hstore_escape(idx), hstore_escape(val)]
31
+ end * ","
22
32
  end
23
33
 
24
34
  # If the method from_hstore is called in a Hash, it just returns self.
@@ -24,7 +24,7 @@ class String
24
24
  [k,v].map { |t|
25
25
  case t
26
26
  when nil then t
27
- when /^"(.*)"$/ then $1.gsub(/\\(.)/, '\1')
27
+ when /\A"(.*)"\Z/m then $1.gsub(/\\(.)/, '\1')
28
28
  else t.gsub(/\\(.)/, '\1')
29
29
  end
30
30
  }
@@ -63,13 +63,29 @@ describe "ActiverecordPostgresHstore" do
63
63
  end
64
64
 
65
65
  it "should quote keys and values correctly with combinations of single and double quotes" do
66
- { %q("a') => %q(b "a' b) }.to_hstore.should eq(%q(\"a'=>"b \"a' b"))
66
+ { %q("a') => %q(b "a' b) }.to_hstore.should eq(%q("\"a'"=>"b \"a' b"))
67
67
  end
68
68
 
69
69
  it "should unquote keys and values correctly with combinations of single and double quotes" do
70
70
  %q("\"a'"=>"b \"a' b").from_hstore.should eq({%q("a') => %q(b "a' b)})
71
71
  end
72
72
 
73
+ it "should quote keys and values correctly with backslashes" do
74
+ { %q(\\) => %q(\\) }.to_hstore.should eq(%q("\\\\"=>"\\\\"))
75
+ end
76
+
77
+ it "should unquote keys and values correctly with backslashes" do
78
+ %q("\\\\"=>"\\\\").from_hstore.should eq({ %q(\\) => %q(\\) })
79
+ end
80
+
81
+ it "should quote keys and values correctly with combinations of backslashes and quotes" do
82
+ { %q(' \\ ") => %q(" \\ ') }.to_hstore.should eq(%q("' \\\\ \""=>"\" \\\\ '"))
83
+ end
84
+
85
+ it "should unquote keys and values correctly with combinations of backslashes and quotes" do
86
+ %q("' \\\\ \""=>"\" \\\\ '").from_hstore.should eq({ %q(' \\ ") => %q(" \\ ') })
87
+ end
88
+
73
89
  it "should convert empty hash" do
74
90
  {}.to_hstore.should eq("")
75
91
  end
@@ -78,5 +94,11 @@ describe "ActiverecordPostgresHstore" do
78
94
  ''.from_hstore.should eq({})
79
95
  ' '.from_hstore.should eq({})
80
96
  end
97
+
98
+ it "should not change values with line breaks" do
99
+ input = { "a" => "foo\n\nbar" }
100
+ output = input.to_hstore
101
+ output.from_hstore.should eq(input)
102
+ end
81
103
 
82
104
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-postgres-hstore
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-06-14 00:00:00.000000000Z
13
+ date: 2012-09-14 00:00:00.000000000Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rails
17
- requirement: &2159228940 !ruby/object:Gem::Requirement
17
+ requirement: &2157171100 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: '0'
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *2159228940
25
+ version_requirements: *2157171100
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: rake
28
- requirement: &2159228300 !ruby/object:Gem::Requirement
28
+ requirement: &2157170000 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ! '>='
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *2159228300
36
+ version_requirements: *2157170000
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: pg
39
- requirement: &2159227720 !ruby/object:Gem::Requirement
39
+ requirement: &2157169120 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ! '>='
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: '0'
45
45
  type: :runtime
46
46
  prerelease: false
47
- version_requirements: *2159227720
47
+ version_requirements: *2157169120
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: shoulda
50
- requirement: &2159227100 !ruby/object:Gem::Requirement
50
+ requirement: &2157168140 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ! '>='
@@ -55,10 +55,10 @@ dependencies:
55
55
  version: '0'
56
56
  type: :development
57
57
  prerelease: false
58
- version_requirements: *2159227100
58
+ version_requirements: *2157168140
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: bundler
61
- requirement: &2159226380 !ruby/object:Gem::Requirement
61
+ requirement: &2157166860 !ruby/object:Gem::Requirement
62
62
  none: false
63
63
  requirements:
64
64
  - - ~>
@@ -66,10 +66,10 @@ dependencies:
66
66
  version: 1.1.3
67
67
  type: :development
68
68
  prerelease: false
69
- version_requirements: *2159226380
69
+ version_requirements: *2157166860
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: jeweler
72
- requirement: &2159225720 !ruby/object:Gem::Requirement
72
+ requirement: &2157165660 !ruby/object:Gem::Requirement
73
73
  none: false
74
74
  requirements:
75
75
  - - ~>
@@ -77,10 +77,10 @@ dependencies:
77
77
  version: 1.8.3
78
78
  type: :development
79
79
  prerelease: false
80
- version_requirements: *2159225720
80
+ version_requirements: *2157165660
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: rdoc
83
- requirement: &2159224880 !ruby/object:Gem::Requirement
83
+ requirement: &2157164420 !ruby/object:Gem::Requirement
84
84
  none: false
85
85
  requirements:
86
86
  - - ! '>='
@@ -88,10 +88,10 @@ dependencies:
88
88
  version: '0'
89
89
  type: :development
90
90
  prerelease: false
91
- version_requirements: *2159224880
91
+ version_requirements: *2157164420
92
92
  - !ruby/object:Gem::Dependency
93
93
  name: rspec
94
- requirement: &2159223860 !ruby/object:Gem::Requirement
94
+ requirement: &2157163540 !ruby/object:Gem::Requirement
95
95
  none: false
96
96
  requirements:
97
97
  - - ! '>='
@@ -99,18 +99,7 @@ dependencies:
99
99
  version: '0'
100
100
  type: :development
101
101
  prerelease: false
102
- version_requirements: *2159223860
103
- - !ruby/object:Gem::Dependency
104
- name: rcov
105
- requirement: &2159223260 !ruby/object:Gem::Requirement
106
- none: false
107
- requirements:
108
- - - ! '>='
109
- - !ruby/object:Gem::Version
110
- version: '0'
111
- type: :development
112
- prerelease: false
113
- version_requirements: *2159223260
102
+ version_requirements: *2157163540
114
103
  description: This gem adds support for the postgres hstore type. It is the _just right_
115
104
  alternative for storing hashes instead of using seralization or dynamic tables.
116
105
  email: juanmaiz@gmail.com
@@ -209,7 +198,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
209
198
  version: '0'
210
199
  segments:
211
200
  - 0
212
- hash: -2838359693870553945
201
+ hash: 3203326444745733758
213
202
  required_rubygems_version: !ruby/object:Gem::Requirement
214
203
  none: false
215
204
  requirements: