activerecord-postgres-hstore 0.1.0 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- data/.rspec +1 -0
- data/Gemfile +14 -0
- data/Gemfile.lock +38 -0
- data/README.textile +23 -6
- data/Rakefile +37 -28
- data/VERSION +1 -1
- data/activerecord-postgres-hstore.gemspec +127 -0
- data/app/.gitignore +4 -0
- data/app/Gemfile +27 -0
- data/app/Gemfile.lock +75 -0
- data/app/README +256 -0
- data/app/Rakefile +7 -0
- data/app/app/controllers/application_controller.rb +3 -0
- data/app/app/helpers/application_helper.rb +2 -0
- data/app/app/models/bar.rb +3 -0
- data/app/app/models/foo.rb +3 -0
- data/app/app/views/layouts/application.html.erb +14 -0
- data/app/bench.rb +76 -0
- data/app/bench_results.txt +13 -0
- data/app/config.ru +4 -0
- data/app/config/application.rb +42 -0
- data/app/config/boot.rb +13 -0
- data/app/config/database.yml +51 -0
- data/app/config/environment.rb +5 -0
- data/app/config/environments/development.rb +22 -0
- data/app/config/environments/production.rb +49 -0
- data/app/config/environments/test.rb +35 -0
- data/app/config/initializers/activerecord_postgres_hstore.rb +0 -0
- data/app/config/initializers/backtrace_silencers.rb +7 -0
- data/app/config/initializers/inflections.rb +10 -0
- data/app/config/initializers/mime_types.rb +5 -0
- data/app/config/initializers/secret_token.rb +7 -0
- data/app/config/initializers/session_store.rb +8 -0
- data/app/config/locales/en.yml +5 -0
- data/app/config/routes.rb +58 -0
- data/app/db/development_structure.sql +578 -0
- data/app/db/migrate/20100906191151_add_hstore.rb +276 -0
- data/app/db/migrate/20100906191457_create_foos.rb +13 -0
- data/app/db/migrate/20100906191506_create_bars.rb +12 -0
- data/app/db/schema.rb +15 -0
- data/app/db/seeds.rb +7 -0
- data/app/doc/README_FOR_APP +2 -0
- data/app/generate_copy_files.rb +47 -0
- data/app/lib/tasks/.gitkeep +0 -0
- data/app/public/404.html +26 -0
- data/app/public/422.html +26 -0
- data/app/public/500.html +26 -0
- data/app/public/favicon.ico +0 -0
- data/app/public/images/rails.png +0 -0
- data/app/public/index.html +262 -0
- data/app/public/javascripts/.gitkeep +0 -0
- data/app/public/javascripts/application.js +0 -0
- data/app/public/robots.txt +5 -0
- data/app/public/stylesheets/.gitkeep +0 -0
- data/app/script/rails +6 -0
- data/app/test/performance/browsing_test.rb +9 -0
- data/app/test/test_helper.rb +6 -0
- data/app/test/unit/bar_test.rb +133 -0
- data/app/test/unit/foo_test.rb +8 -0
- data/app/vendor/plugins/.gitkeep +0 -0
- data/lib/activerecord-postgres-hstore/hash.rb +1 -1
- data/lib/activerecord-postgres-hstore/string.rb +4 -0
- data/spec/activerecord-postgres-hstore_spec.rb +13 -9
- data/spec/spec_helper.rb +4 -4
- metadata +162 -20
- data/.gitignore +0 -21
File without changes
|
@@ -5,7 +5,7 @@ class Hash
|
|
5
5
|
def to_hstore
|
6
6
|
return "''" if empty?
|
7
7
|
#@todo DIOGO! Check security issues with this quoting pleaz
|
8
|
-
map{|idx,val| "('#{idx}'=>'#{val.to_s.
|
8
|
+
map{|idx, val| "('#{idx.to_s.escape_quotes}'=>'#{val.to_s.escape_quotes}')" }.join(' || ')
|
9
9
|
end
|
10
10
|
|
11
11
|
# If the method from_hstore is called in a Hash, it just returns self.
|
@@ -2,28 +2,32 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
|
2
2
|
|
3
3
|
describe "ActiverecordPostgresHstore" do
|
4
4
|
|
5
|
-
it "should convert hstore string to hash" do
|
6
|
-
["('a'=>'1') || ('b'=>'2')", "('b'=>'2') || ('a'=>'1')"].should include({:a => 1, :b => 2}.to_hstore)
|
7
|
-
end
|
8
|
-
|
9
5
|
it "should convert hash to hstore string" do
|
10
|
-
|
6
|
+
["('a'=>'1') || ('b'=>'2')", "('b'=>'2') || ('a'=>'1')"].should include({:a => 1, :b => 2}.to_hstore)
|
11
7
|
end
|
12
8
|
|
13
9
|
it "should convert hstore string to hash" do
|
14
|
-
'"a"=>"1", "b"=>"2"'.from_hstore.should
|
10
|
+
'"a"=>"1", "b"=>"2"'.from_hstore.should eq({'a' => '1', 'b' => '2'})
|
15
11
|
end
|
16
12
|
|
17
13
|
it "should quote correctly" do
|
18
|
-
{:a => "'a'"}.to_hstore.should
|
14
|
+
{:a => "'a'"}.to_hstore.should eq("('a'=>'''a''')")
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should quote keys correctly" do
|
18
|
+
{"'a'" => "a"}.to_hstore.should eq("('''a'''=>'a')")
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should unquote keys correctly" do
|
22
|
+
"\"'a'\"=>\"a\"".from_hstore.should eq({"'a'" => "a"})
|
19
23
|
end
|
20
24
|
|
21
25
|
it "should convert empty hash" do
|
22
|
-
{}.to_hstore.should
|
26
|
+
{}.to_hstore.should eq("''")
|
23
27
|
end
|
24
28
|
|
25
29
|
it "should convert empty string" do
|
26
|
-
''.from_hstore.should
|
30
|
+
''.from_hstore.should eq({})
|
27
31
|
end
|
28
32
|
|
29
33
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
2
2
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
3
3
|
require 'activerecord-postgres-hstore'
|
4
|
-
require '
|
5
|
-
require '
|
4
|
+
require 'rspec'
|
5
|
+
require 'rspec/autorun'
|
6
|
+
|
7
|
+
RSpec.configure do |config|
|
6
8
|
|
7
|
-
Spec::Runner.configure do |config|
|
8
|
-
|
9
9
|
end
|
metadata
CHANGED
@@ -1,39 +1,126 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activerecord-postgres-hstore
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 31
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 2
|
10
|
+
version: 0.1.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Juan Maiz
|
14
|
+
- Diogo Biazus
|
14
15
|
autorequire:
|
15
16
|
bindir: bin
|
16
17
|
cert_chain: []
|
17
18
|
|
18
|
-
date: 2011-
|
19
|
+
date: 2011-08-02 00:00:00 -03:00
|
19
20
|
default_executable:
|
20
21
|
dependencies:
|
21
22
|
- !ruby/object:Gem::Dependency
|
22
|
-
name:
|
23
|
+
name: activerecord
|
24
|
+
type: :runtime
|
25
|
+
prerelease: false
|
26
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
27
|
+
none: false
|
28
|
+
requirements:
|
29
|
+
- - ">="
|
30
|
+
- !ruby/object:Gem::Version
|
31
|
+
hash: 3
|
32
|
+
segments:
|
33
|
+
- 0
|
34
|
+
version: "0"
|
35
|
+
requirement: *id001
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: rake
|
38
|
+
type: :runtime
|
23
39
|
prerelease: false
|
24
|
-
|
40
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
25
41
|
none: false
|
26
42
|
requirements:
|
27
43
|
- - ">="
|
28
44
|
- !ruby/object:Gem::Version
|
29
|
-
hash:
|
45
|
+
hash: 3
|
46
|
+
segments:
|
47
|
+
- 0
|
48
|
+
version: "0"
|
49
|
+
requirement: *id002
|
50
|
+
- !ruby/object:Gem::Dependency
|
51
|
+
name: shoulda
|
52
|
+
type: :development
|
53
|
+
prerelease: false
|
54
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
55
|
+
none: false
|
56
|
+
requirements:
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
hash: 3
|
60
|
+
segments:
|
61
|
+
- 0
|
62
|
+
version: "0"
|
63
|
+
requirement: *id003
|
64
|
+
- !ruby/object:Gem::Dependency
|
65
|
+
name: bundler
|
66
|
+
type: :development
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
69
|
+
none: false
|
70
|
+
requirements:
|
71
|
+
- - ~>
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
hash: 23
|
30
74
|
segments:
|
31
75
|
- 1
|
32
|
-
-
|
33
|
-
-
|
34
|
-
version: 1.
|
76
|
+
- 0
|
77
|
+
- 0
|
78
|
+
version: 1.0.0
|
79
|
+
requirement: *id004
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: jeweler
|
35
82
|
type: :development
|
36
|
-
|
83
|
+
prerelease: false
|
84
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
85
|
+
none: false
|
86
|
+
requirements:
|
87
|
+
- - ~>
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
hash: 7
|
90
|
+
segments:
|
91
|
+
- 1
|
92
|
+
- 6
|
93
|
+
- 4
|
94
|
+
version: 1.6.4
|
95
|
+
requirement: *id005
|
96
|
+
- !ruby/object:Gem::Dependency
|
97
|
+
name: rcov
|
98
|
+
type: :development
|
99
|
+
prerelease: false
|
100
|
+
version_requirements: &id006 !ruby/object:Gem::Requirement
|
101
|
+
none: false
|
102
|
+
requirements:
|
103
|
+
- - ">="
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
hash: 3
|
106
|
+
segments:
|
107
|
+
- 0
|
108
|
+
version: "0"
|
109
|
+
requirement: *id006
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: rdoc
|
112
|
+
type: :development
|
113
|
+
prerelease: false
|
114
|
+
version_requirements: &id007 !ruby/object:Gem::Requirement
|
115
|
+
none: false
|
116
|
+
requirements:
|
117
|
+
- - ">="
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
hash: 3
|
120
|
+
segments:
|
121
|
+
- 0
|
122
|
+
version: "0"
|
123
|
+
requirement: *id007
|
37
124
|
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.
|
38
125
|
email: juanmaiz@gmail.com
|
39
126
|
executables: []
|
@@ -45,25 +132,81 @@ extra_rdoc_files:
|
|
45
132
|
- README.textile
|
46
133
|
files:
|
47
134
|
- .document
|
48
|
-
- .
|
135
|
+
- .rspec
|
136
|
+
- Gemfile
|
137
|
+
- Gemfile.lock
|
49
138
|
- LICENSE
|
139
|
+
- README.textile
|
50
140
|
- Rakefile
|
51
141
|
- VERSION
|
142
|
+
- activerecord-postgres-hstore.gemspec
|
143
|
+
- app/.gitignore
|
144
|
+
- app/Gemfile
|
145
|
+
- app/Gemfile.lock
|
146
|
+
- app/README
|
147
|
+
- app/Rakefile
|
148
|
+
- app/app/controllers/application_controller.rb
|
149
|
+
- app/app/helpers/application_helper.rb
|
150
|
+
- app/app/models/bar.rb
|
151
|
+
- app/app/models/foo.rb
|
152
|
+
- app/app/views/layouts/application.html.erb
|
153
|
+
- app/bench.rb
|
154
|
+
- app/bench_results.txt
|
155
|
+
- app/config.ru
|
156
|
+
- app/config/application.rb
|
157
|
+
- app/config/boot.rb
|
158
|
+
- app/config/database.yml
|
159
|
+
- app/config/environment.rb
|
160
|
+
- app/config/environments/development.rb
|
161
|
+
- app/config/environments/production.rb
|
162
|
+
- app/config/environments/test.rb
|
163
|
+
- app/config/initializers/activerecord_postgres_hstore.rb
|
164
|
+
- app/config/initializers/backtrace_silencers.rb
|
165
|
+
- app/config/initializers/inflections.rb
|
166
|
+
- app/config/initializers/mime_types.rb
|
167
|
+
- app/config/initializers/secret_token.rb
|
168
|
+
- app/config/initializers/session_store.rb
|
169
|
+
- app/config/locales/en.yml
|
170
|
+
- app/config/routes.rb
|
171
|
+
- app/db/development_structure.sql
|
172
|
+
- app/db/migrate/20100906191151_add_hstore.rb
|
173
|
+
- app/db/migrate/20100906191457_create_foos.rb
|
174
|
+
- app/db/migrate/20100906191506_create_bars.rb
|
175
|
+
- app/db/schema.rb
|
176
|
+
- app/db/seeds.rb
|
177
|
+
- app/doc/README_FOR_APP
|
178
|
+
- app/generate_copy_files.rb
|
179
|
+
- app/lib/tasks/.gitkeep
|
180
|
+
- app/public/404.html
|
181
|
+
- app/public/422.html
|
182
|
+
- app/public/500.html
|
183
|
+
- app/public/favicon.ico
|
184
|
+
- app/public/images/rails.png
|
185
|
+
- app/public/index.html
|
186
|
+
- app/public/javascripts/.gitkeep
|
187
|
+
- app/public/javascripts/application.js
|
188
|
+
- app/public/robots.txt
|
189
|
+
- app/public/stylesheets/.gitkeep
|
190
|
+
- app/script/rails
|
191
|
+
- app/test/performance/browsing_test.rb
|
192
|
+
- app/test/test_helper.rb
|
193
|
+
- app/test/unit/bar_test.rb
|
194
|
+
- app/test/unit/foo_test.rb
|
195
|
+
- app/vendor/plugins/.gitkeep
|
52
196
|
- lib/activerecord-postgres-hstore.rb
|
53
197
|
- lib/activerecord-postgres-hstore/activerecord.rb
|
54
198
|
- lib/activerecord-postgres-hstore/hash.rb
|
55
199
|
- lib/activerecord-postgres-hstore/string.rb
|
56
200
|
- lib/templates/setup_hstore.rb
|
57
201
|
- spec/activerecord-postgres-hstore_spec.rb
|
58
|
-
- README.textile
|
59
202
|
- spec/spec_helper.rb
|
60
203
|
has_rdoc: true
|
61
204
|
homepage: http://github.com/softa/activerecord-postgres-hstore
|
62
|
-
licenses:
|
63
|
-
|
205
|
+
licenses:
|
206
|
+
- MIT
|
64
207
|
post_install_message:
|
65
|
-
rdoc_options:
|
66
|
-
|
208
|
+
rdoc_options: []
|
209
|
+
|
67
210
|
require_paths:
|
68
211
|
- lib
|
69
212
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -91,6 +234,5 @@ rubygems_version: 1.3.7
|
|
91
234
|
signing_key:
|
92
235
|
specification_version: 3
|
93
236
|
summary: Goodbye serialize, hello hstore
|
94
|
-
test_files:
|
95
|
-
|
96
|
-
- spec/spec_helper.rb
|
237
|
+
test_files: []
|
238
|
+
|