surus 0.4.1 → 0.4.2
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 +7 -0
- data/CHANGELOG.md +8 -0
- data/README.md +21 -0
- data/lib/surus.rb +2 -0
- data/lib/surus/hstore/connection_adapters.rb +46 -0
- data/lib/surus/json/connection_adapters.rb +46 -0
- data/lib/surus/version.rb +1 -1
- data/surus.gemspec +2 -2
- metadata +33 -52
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: c9704e8ae62f2951b6dafe408bd6136fc785f3a1
|
4
|
+
data.tar.gz: 38471bda203953316a99e095dac5e0dd93751f67
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 0d09100c14636b85460f7786ebf97393ffa730be521e7558c2d95075e0dab8093ab71acc11a575e111de5de5311fccf330136564c5fc83e8d0c8a2bb5fe08c87
|
7
|
+
data.tar.gz: 14e64a0de18c968df746f5a93eac0696ef4bbdee12a2f66f8fcb1be97d8c1c2fe4424399cf7defb90fbc4827d7395f7faf95cfbd9cb3083a7d5dfb32de454a14
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
# 0.4.2 (June 21, 2013)
|
2
|
+
|
3
|
+
* Make pg a development dependency to allow usage with JRuby
|
4
|
+
* Added migration support for hstore (Justin Talbott)
|
5
|
+
* Added migration support for json
|
6
|
+
* Make activerecord dependency ~> 3.1 to keep incompatible version of Surus from being used with Rails 4
|
7
|
+
* Updated docs to mention Rails 4 branch
|
8
|
+
|
1
9
|
# 0.4.1 (February 27, 2013)
|
2
10
|
|
3
11
|
* Fix array_has and array_has_any with varchar[]
|
data/README.md
CHANGED
@@ -18,6 +18,11 @@ Or add to your Gemfile.
|
|
18
18
|
|
19
19
|
gem 'surus'
|
20
20
|
|
21
|
+
# Rails 4 Support
|
22
|
+
|
23
|
+
This version of Surus is compatible with Rails 3.1.x and Rails 3.2.x. It is not
|
24
|
+
compatible with Rails 4. Checkout the rails4 branch if you are using Rails 4.
|
25
|
+
|
21
26
|
# Hstore
|
22
27
|
|
23
28
|
Hashes can be serialized to an hstore column. hstore is a PostgreSQL key/value
|
@@ -53,6 +58,13 @@ Hstore is a PostgreSQL extension. You can generate a migration to install it.
|
|
53
58
|
rails g surus:hstore:install
|
54
59
|
rake db:migrate
|
55
60
|
|
61
|
+
You can then use the hstore type in migrations.
|
62
|
+
|
63
|
+
class AddPropertiesToUsers < ActiveRecord::Migration
|
64
|
+
def change
|
65
|
+
add_column :users, :properties, :hstore
|
66
|
+
end
|
67
|
+
end
|
56
68
|
|
57
69
|
Read more in the [PostgreSQL hstore documentation](http://www.postgresql.org/docs/9.1/static/hstore.html).
|
58
70
|
|
@@ -119,6 +131,15 @@ the Rails `to_json` interface.
|
|
119
131
|
User.all_json(columns: [:id, :name, :email], include: {posts: {columns: [:id, :subject]}})
|
120
132
|
Post.all_json(include: [:forum, :post])
|
121
133
|
|
134
|
+
You can use the json type in migrations.
|
135
|
+
|
136
|
+
class AddPropertiesToUsers < ActiveRecord::Migration
|
137
|
+
def change
|
138
|
+
add_column :users, :properties, :json
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
|
122
143
|
# Benchmarks
|
123
144
|
|
124
145
|
Using PostgreSQL's hstore enables searches to be done quickly in the database.
|
data/lib/surus.rb
CHANGED
@@ -2,6 +2,7 @@ require 'active_record'
|
|
2
2
|
require 'surus/version'
|
3
3
|
require 'surus/hstore/serializer'
|
4
4
|
require 'surus/hstore/scope'
|
5
|
+
require 'surus/hstore/connection_adapters'
|
5
6
|
require 'surus/array/text_serializer'
|
6
7
|
require 'surus/array/integer_serializer'
|
7
8
|
require 'surus/array/float_serializer'
|
@@ -9,6 +10,7 @@ require 'surus/array/decimal_serializer'
|
|
9
10
|
require 'surus/array/scope'
|
10
11
|
require 'surus/synchronous_commit/connection'
|
11
12
|
require 'surus/synchronous_commit/model'
|
13
|
+
require 'surus/json/connection_adapters'
|
12
14
|
require 'surus/json/query'
|
13
15
|
require 'surus/json/row_query'
|
14
16
|
require 'surus/json/array_agg_query'
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'active_record/connection_adapters/postgresql_adapter'
|
2
|
+
|
3
|
+
ActiveRecord::ConnectionAdapters::PostgreSQLColumn.class_eval do
|
4
|
+
def simplified_type_with_hstore(field_type)
|
5
|
+
field_type == 'hstore' ? :hstore : simplified_type_without_hstore(field_type)
|
6
|
+
end
|
7
|
+
|
8
|
+
alias_method_chain :simplified_type, :hstore
|
9
|
+
end
|
10
|
+
|
11
|
+
|
12
|
+
ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.class_eval do
|
13
|
+
def native_database_types_with_hstore
|
14
|
+
native_database_types_without_hstore.merge({:hstore => { :name => "hstore" }})
|
15
|
+
end
|
16
|
+
|
17
|
+
alias_method_chain :native_database_types, :hstore
|
18
|
+
end
|
19
|
+
|
20
|
+
ActiveRecord::ConnectionAdapters::TableDefinition.class_eval do
|
21
|
+
# Adds hstore type for migrations. So you can add columns to a table like:
|
22
|
+
# create_table :people do |t|
|
23
|
+
# ...
|
24
|
+
# t.hstore :info
|
25
|
+
# ...
|
26
|
+
# end
|
27
|
+
def hstore(*args)
|
28
|
+
options = args.extract_options!
|
29
|
+
column_names = args
|
30
|
+
column_names.each { |name| column(name, 'hstore', options) }
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
ActiveRecord::ConnectionAdapters::Table.class_eval do
|
35
|
+
# Adds hstore type for migrations. So you can add columns to a table like:
|
36
|
+
# change_table :people do |t|
|
37
|
+
# ...
|
38
|
+
# t.hstore :info
|
39
|
+
# ...
|
40
|
+
# end
|
41
|
+
def hstore(*args)
|
42
|
+
options = args.extract_options!
|
43
|
+
column_names = args
|
44
|
+
column_names.each { |name| column(name, 'hstore', options) }
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'active_record/connection_adapters/postgresql_adapter'
|
2
|
+
|
3
|
+
ActiveRecord::ConnectionAdapters::PostgreSQLColumn.class_eval do
|
4
|
+
def simplified_type_with_json(field_type)
|
5
|
+
field_type == 'json' ? :json : simplified_type_without_json(field_type)
|
6
|
+
end
|
7
|
+
|
8
|
+
alias_method_chain :simplified_type, :json
|
9
|
+
end
|
10
|
+
|
11
|
+
|
12
|
+
ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.class_eval do
|
13
|
+
def native_database_types_with_json
|
14
|
+
native_database_types_without_json.merge({:json => { :name => "json" }})
|
15
|
+
end
|
16
|
+
|
17
|
+
alias_method_chain :native_database_types, :json
|
18
|
+
end
|
19
|
+
|
20
|
+
ActiveRecord::ConnectionAdapters::TableDefinition.class_eval do
|
21
|
+
# Adds json type for migrations. So you can add columns to a table like:
|
22
|
+
# create_table :people do |t|
|
23
|
+
# ...
|
24
|
+
# t.json :info
|
25
|
+
# ...
|
26
|
+
# end
|
27
|
+
def json(*args)
|
28
|
+
options = args.extract_options!
|
29
|
+
column_names = args
|
30
|
+
column_names.each { |name| column(name, 'json', options) }
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
ActiveRecord::ConnectionAdapters::Table.class_eval do
|
35
|
+
# Adds json type for migrations. So you can add columns to a table like:
|
36
|
+
# change_table :people do |t|
|
37
|
+
# ...
|
38
|
+
# t.json :info
|
39
|
+
# ...
|
40
|
+
# end
|
41
|
+
def json(*args)
|
42
|
+
options = args.extract_options!
|
43
|
+
column_names = args
|
44
|
+
column_names.each { |name| column(name, 'json', options) }
|
45
|
+
end
|
46
|
+
end
|
data/lib/surus/version.rb
CHANGED
data/surus.gemspec
CHANGED
@@ -23,14 +23,14 @@ Gem::Specification.new do |s|
|
|
23
23
|
s.require_paths = ["lib"]
|
24
24
|
|
25
25
|
# specify any dependencies here; for example:
|
26
|
-
s.add_dependency '
|
27
|
-
s.add_dependency 'activerecord', ">= 3.1.0"
|
26
|
+
s.add_dependency 'activerecord', "~> 3.1"
|
28
27
|
|
29
28
|
s.add_development_dependency 'rspec', "~> 2.12.0"
|
30
29
|
s.add_development_dependency 'guard', ">= 0.10.0"
|
31
30
|
s.add_development_dependency 'guard-rspec', ">= 0.6.0"
|
32
31
|
s.add_development_dependency 'rb-fsevent', '~> 0.9.1'
|
33
32
|
s.add_development_dependency 'oj', '~> 2.0.2'
|
33
|
+
s.add_development_dependency 'pg'
|
34
34
|
s.add_development_dependency 'pry', '~> 0.9.11'
|
35
35
|
s.add_development_dependency 'factory_girl', '~> 4.2.0'
|
36
36
|
s.add_development_dependency 'faker', '~> 1.1.2'
|
metadata
CHANGED
@@ -1,52 +1,32 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: surus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
5
|
-
prerelease:
|
4
|
+
version: 0.4.2
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Jack Christensen
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-06-21 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
|
-
- !ruby/object:Gem::Dependency
|
15
|
-
name: pg
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
|
-
requirements:
|
19
|
-
- - ! '>='
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version: '0'
|
22
|
-
type: :runtime
|
23
|
-
prerelease: false
|
24
|
-
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
|
-
requirements:
|
27
|
-
- - ! '>='
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: '0'
|
30
13
|
- !ruby/object:Gem::Dependency
|
31
14
|
name: activerecord
|
32
15
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
16
|
requirements:
|
35
|
-
- -
|
17
|
+
- - ~>
|
36
18
|
- !ruby/object:Gem::Version
|
37
|
-
version: 3.1
|
19
|
+
version: '3.1'
|
38
20
|
type: :runtime
|
39
21
|
prerelease: false
|
40
22
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
23
|
requirements:
|
43
|
-
- -
|
24
|
+
- - ~>
|
44
25
|
- !ruby/object:Gem::Version
|
45
|
-
version: 3.1
|
26
|
+
version: '3.1'
|
46
27
|
- !ruby/object:Gem::Dependency
|
47
28
|
name: rspec
|
48
29
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
30
|
requirements:
|
51
31
|
- - ~>
|
52
32
|
- !ruby/object:Gem::Version
|
@@ -54,7 +34,6 @@ dependencies:
|
|
54
34
|
type: :development
|
55
35
|
prerelease: false
|
56
36
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
37
|
requirements:
|
59
38
|
- - ~>
|
60
39
|
- !ruby/object:Gem::Version
|
@@ -62,39 +41,34 @@ dependencies:
|
|
62
41
|
- !ruby/object:Gem::Dependency
|
63
42
|
name: guard
|
64
43
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
44
|
requirements:
|
67
|
-
- -
|
45
|
+
- - '>='
|
68
46
|
- !ruby/object:Gem::Version
|
69
47
|
version: 0.10.0
|
70
48
|
type: :development
|
71
49
|
prerelease: false
|
72
50
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
51
|
requirements:
|
75
|
-
- -
|
52
|
+
- - '>='
|
76
53
|
- !ruby/object:Gem::Version
|
77
54
|
version: 0.10.0
|
78
55
|
- !ruby/object:Gem::Dependency
|
79
56
|
name: guard-rspec
|
80
57
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
58
|
requirements:
|
83
|
-
- -
|
59
|
+
- - '>='
|
84
60
|
- !ruby/object:Gem::Version
|
85
61
|
version: 0.6.0
|
86
62
|
type: :development
|
87
63
|
prerelease: false
|
88
64
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
65
|
requirements:
|
91
|
-
- -
|
66
|
+
- - '>='
|
92
67
|
- !ruby/object:Gem::Version
|
93
68
|
version: 0.6.0
|
94
69
|
- !ruby/object:Gem::Dependency
|
95
70
|
name: rb-fsevent
|
96
71
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
72
|
requirements:
|
99
73
|
- - ~>
|
100
74
|
- !ruby/object:Gem::Version
|
@@ -102,7 +76,6 @@ dependencies:
|
|
102
76
|
type: :development
|
103
77
|
prerelease: false
|
104
78
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
79
|
requirements:
|
107
80
|
- - ~>
|
108
81
|
- !ruby/object:Gem::Version
|
@@ -110,7 +83,6 @@ dependencies:
|
|
110
83
|
- !ruby/object:Gem::Dependency
|
111
84
|
name: oj
|
112
85
|
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
86
|
requirements:
|
115
87
|
- - ~>
|
116
88
|
- !ruby/object:Gem::Version
|
@@ -118,15 +90,27 @@ dependencies:
|
|
118
90
|
type: :development
|
119
91
|
prerelease: false
|
120
92
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
93
|
requirements:
|
123
94
|
- - ~>
|
124
95
|
- !ruby/object:Gem::Version
|
125
96
|
version: 2.0.2
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: pg
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - '>='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
126
111
|
- !ruby/object:Gem::Dependency
|
127
112
|
name: pry
|
128
113
|
requirement: !ruby/object:Gem::Requirement
|
129
|
-
none: false
|
130
114
|
requirements:
|
131
115
|
- - ~>
|
132
116
|
- !ruby/object:Gem::Version
|
@@ -134,7 +118,6 @@ dependencies:
|
|
134
118
|
type: :development
|
135
119
|
prerelease: false
|
136
120
|
version_requirements: !ruby/object:Gem::Requirement
|
137
|
-
none: false
|
138
121
|
requirements:
|
139
122
|
- - ~>
|
140
123
|
- !ruby/object:Gem::Version
|
@@ -142,7 +125,6 @@ dependencies:
|
|
142
125
|
- !ruby/object:Gem::Dependency
|
143
126
|
name: factory_girl
|
144
127
|
requirement: !ruby/object:Gem::Requirement
|
145
|
-
none: false
|
146
128
|
requirements:
|
147
129
|
- - ~>
|
148
130
|
- !ruby/object:Gem::Version
|
@@ -150,7 +132,6 @@ dependencies:
|
|
150
132
|
type: :development
|
151
133
|
prerelease: false
|
152
134
|
version_requirements: !ruby/object:Gem::Requirement
|
153
|
-
none: false
|
154
135
|
requirements:
|
155
136
|
- - ~>
|
156
137
|
- !ruby/object:Gem::Version
|
@@ -158,7 +139,6 @@ dependencies:
|
|
158
139
|
- !ruby/object:Gem::Dependency
|
159
140
|
name: faker
|
160
141
|
requirement: !ruby/object:Gem::Requirement
|
161
|
-
none: false
|
162
142
|
requirements:
|
163
143
|
- - ~>
|
164
144
|
- !ruby/object:Gem::Version
|
@@ -166,12 +146,11 @@ dependencies:
|
|
166
146
|
type: :development
|
167
147
|
prerelease: false
|
168
148
|
version_requirements: !ruby/object:Gem::Requirement
|
169
|
-
none: false
|
170
149
|
requirements:
|
171
150
|
- - ~>
|
172
151
|
- !ruby/object:Gem::Version
|
173
152
|
version: 1.1.2
|
174
|
-
description:
|
153
|
+
description: "Surus accelerates ActiveRecord with PostgreSQL specific types and\n
|
175
154
|
\ functionality. It enables indexed searching of serialized arrays
|
176
155
|
and hashes.\n It also can control PostgreSQL synchronous commit
|
177
156
|
behavior. By relaxing\n PostgreSQL's durability guarantee, transaction
|
@@ -209,11 +188,13 @@ files:
|
|
209
188
|
- lib/surus/array/integer_serializer.rb
|
210
189
|
- lib/surus/array/scope.rb
|
211
190
|
- lib/surus/array/text_serializer.rb
|
191
|
+
- lib/surus/hstore/connection_adapters.rb
|
212
192
|
- lib/surus/hstore/scope.rb
|
213
193
|
- lib/surus/hstore/serializer.rb
|
214
194
|
- lib/surus/json/array_agg_query.rb
|
215
195
|
- lib/surus/json/association_scope_builder.rb
|
216
196
|
- lib/surus/json/belongs_to_scope_builder.rb
|
197
|
+
- lib/surus/json/connection_adapters.rb
|
217
198
|
- lib/surus/json/has_and_belongs_to_many_scope_builder.rb
|
218
199
|
- lib/surus/json/has_many_scope_builder.rb
|
219
200
|
- lib/surus/json/model.rb
|
@@ -240,27 +221,26 @@ files:
|
|
240
221
|
- tmp/rspec_guard_result
|
241
222
|
homepage: https://github.com/JackC/surus
|
242
223
|
licenses: []
|
224
|
+
metadata: {}
|
243
225
|
post_install_message:
|
244
226
|
rdoc_options: []
|
245
227
|
require_paths:
|
246
228
|
- lib
|
247
229
|
required_ruby_version: !ruby/object:Gem::Requirement
|
248
|
-
none: false
|
249
230
|
requirements:
|
250
|
-
- -
|
231
|
+
- - '>='
|
251
232
|
- !ruby/object:Gem::Version
|
252
233
|
version: '0'
|
253
234
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
254
|
-
none: false
|
255
235
|
requirements:
|
256
|
-
- -
|
236
|
+
- - '>='
|
257
237
|
- !ruby/object:Gem::Version
|
258
238
|
version: '0'
|
259
239
|
requirements: []
|
260
240
|
rubyforge_project: ''
|
261
|
-
rubygems_version:
|
241
|
+
rubygems_version: 2.0.0
|
262
242
|
signing_key:
|
263
|
-
specification_version:
|
243
|
+
specification_version: 4
|
264
244
|
summary: PostgreSQL Acceleration for ActiveRecord
|
265
245
|
test_files:
|
266
246
|
- spec/array/decimal_serializer_spec.rb
|
@@ -277,3 +257,4 @@ test_files:
|
|
277
257
|
- spec/spec_helper.rb
|
278
258
|
- spec/synchronous_commit/connection_spec.rb
|
279
259
|
- spec/synchronous_commit/model_spec.rb
|
260
|
+
has_rdoc:
|