surus 0.4.1 → 0.4.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
@@ -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.
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Surus
2
- VERSION = "0.4.1"
2
+ VERSION = "0.4.2"
3
3
  end
@@ -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 'pg'
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.1
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-02-27 00:00:00.000000000 Z
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.0
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.0
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: ! "Surus accelerates ActiveRecord with PostgreSQL specific types and\n
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: 1.8.23
241
+ rubygems_version: 2.0.0
262
242
  signing_key:
263
- specification_version: 3
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: