pg_power 1.0.0 → 1.0.1

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.
@@ -1,5 +1,9 @@
1
1
  # PgPower
2
2
 
3
+ [![Build Status](https://secure.travis-ci.org/TMXCredit/pg_power.png)](http://travis-ci.org/TMXCredit/pg_power)
4
+ [![Dependency Status](https://gemnasium.com/TMXCredit/pg_power.png)](https://gemnasium.com/TMXCredit/pg_power)
5
+ [![Code Climate](https://codeclimate.com/badge.png)](https://codeclimate.com/github/TMXCredit/pg_power)
6
+
3
7
  ActiveRecord extension to get more from PostgreSQL:
4
8
 
5
9
  * Create/drop schemas.
@@ -17,28 +21,28 @@ It was tested with Rails 3.1.x and 3.2.x, Ruby 1.8.7 REE and 1.9.3.
17
21
  ### Create schema
18
22
 
19
23
  In migrations you can use `create_schema` and `drop_schema` methods like this:
20
-
21
- class ReplaceDemographySchemaWithPolitics < ActiveRecord::Migration
22
- def change
23
- drop_schema 'demography'
24
- create_schema 'politics'
25
- end
26
- end
27
-
24
+ ```ruby
25
+ class ReplaceDemographySchemaWithPolitics < ActiveRecord::Migration
26
+ def change
27
+ drop_schema 'demography'
28
+ create_schema 'politics'
29
+ end
30
+ end
31
+ ```
28
32
  ### Create table
29
33
 
30
34
  Use schema `:schema` option to specify schema name:
31
-
32
- create_table "countries", :schema => "demography" do |t|
33
- # columns goes here
34
- end
35
-
35
+ ```ruby
36
+ create_table "countries", :schema => "demography" do |t|
37
+ # columns goes here
38
+ end
39
+ ```
36
40
  ### Move table to another schema
37
41
 
38
42
  Move table `countries` from `demography` schema to `public`:
39
-
40
- move_table_to_schema 'demography.countries', :public
41
-
43
+ ```ruby
44
+ move_table_to_schema 'demography.countries', :public
45
+ ```
42
46
  ## Table and column comments
43
47
 
44
48
  Provides the following methods to manage comments:
@@ -54,55 +58,55 @@ Provides the following methods to manage comments:
54
58
  ### Examples
55
59
 
56
60
  Set a comment on the given table.
57
-
58
- set_table_comment :phone_numbers, 'This table stores phone numbers that conform to the North American Numbering Plan.'
59
-
61
+ ```ruby
62
+ set_table_comment :phone_numbers, 'This table stores phone numbers that conform to the North American Numbering Plan.'
63
+ ```
60
64
  Sets a comment on a given column of a given table.
61
-
62
- set_column_comment :phone_numbers, :npa, 'Numbering Plan Area Code - Allowed ranges: [2-9] for first digit, [0-9] for second and third digit.'
63
-
65
+ ```ruby
66
+ set_column_comment :phone_numbers, :npa, 'Numbering Plan Area Code - Allowed ranges: [2-9] for first digit, [0-9] for second and third digit.'
67
+ ```
64
68
  Removes any comment from the given table.
65
-
66
- remove_table_comment :phone_numbers
67
-
69
+ ```ruby
70
+ remove_table_comment :phone_numbers
71
+ ```
68
72
  Removes any comment from the given column of a given table.
69
-
70
- remove_column_comment :phone_numbers, :npa
71
-
73
+ ```ruby
74
+ remove_column_comment :phone_numbers, :npa
75
+ ```
72
76
  Set comments on multiple columns in the table.
73
-
74
- set_column_comments :phone_numbers, :npa => 'Numbering Plan Area Code - Allowed ranges: [2-9] for first digit, [0-9] for second and third digit.',
75
- :nxx => 'Central Office Number'
76
-
77
+ ```ruby
78
+ set_column_comments :phone_numbers, :npa => 'Numbering Plan Area Code - Allowed ranges: [2-9] for first digit, [0-9] for second and third digit.',
79
+ :nxx => 'Central Office Number'
80
+ ```
77
81
  Remove comments from multiple columns in the table.
78
-
79
- remove_column_comments :phone_numbers, :npa, :nxx
80
-
82
+ ```ruby
83
+ remove_column_comments :phone_numbers, :npa, :nxx
84
+ ```
81
85
  PgPower also adds extra methods to change_table.
82
86
 
83
87
  Set comments:
84
-
85
- change_table :phone_numbers do |t|
86
- t.set_table_comment 'This table stores phone numbers that conform to the North American Numbering Plan.'
87
- t.set_column_comment :npa, 'Numbering Plan Area Code - Allowed ranges: [2-9] for first digit, [0-9] for second and third digit.'
88
- end
89
-
90
- change_table :phone_numbers do |t|
91
- t.set_column_comments :npa => 'Numbering Plan Area Code - Allowed ranges: [2-9] for first digit, [0-9] for second and third digit.',
92
- :nxx => 'Central Office Number'
93
- end
94
-
88
+ ```ruby
89
+ change_table :phone_numbers do |t|
90
+ t.set_table_comment 'This table stores phone numbers that conform to the North American Numbering Plan.'
91
+ t.set_column_comment :npa, 'Numbering Plan Area Code - Allowed ranges: [2-9] for first digit, [0-9] for second and third digit.'
92
+ end
93
+
94
+ change_table :phone_numbers do |t|
95
+ t.set_column_comments :npa => 'Numbering Plan Area Code - Allowed ranges: [2-9] for first digit, [0-9] for second and third digit.',
96
+ :nxx => 'Central Office Number'
97
+ end
98
+ ```
95
99
  Remove comments:
96
-
97
- change_table :phone_numbers do |t|
98
- t.remove_table_comment
99
- t.remove_column_comment :npa
100
- end
101
-
102
- change_table :phone_numbers do |t|
103
- t.remove_column_comments :npa, :nxx
104
- end
105
-
100
+ ```ruby
101
+ change_table :phone_numbers do |t|
102
+ t.remove_table_comment
103
+ t.remove_column_comment :npa
104
+ end
105
+
106
+ change_table :phone_numbers do |t|
107
+ t.remove_column_comments :npa, :nxx
108
+ end
109
+ ```
106
110
  ## Foreign keys
107
111
 
108
112
  We imported some code of [foreigner](https://github.com/matthuhiggins/foreigner)
@@ -116,23 +120,29 @@ The syntax is compatible with `foreigner`:
116
120
 
117
121
 
118
122
  Add foreign key from `comments` to `posts` using `post_id` column as key by default:
119
- add_foreign_key(:comments, :posts)
120
-
123
+ ```ruby
124
+ add_foreign_key(:comments, :posts)
125
+ ```
121
126
  Specify key explicitly:
122
- add_foreign_key(:comments, :posts, :column => :blog_post_id)
123
-
127
+ ```ruby
128
+ add_foreign_key(:comments, :posts, :column => :blog_post_id)
129
+ ```
124
130
  Specify name of foreign key constraint:
125
- add_foreign_key(:comments, :posts, :name => "comments_posts_fk")
126
-
131
+ ```ruby
132
+ add_foreign_key(:comments, :posts, :name => "comments_posts_fk")
133
+ ```
127
134
  It works with schemas as expected:
128
- add_foreign_key('blog.comments', 'blog.posts')
129
-
135
+ ```ruby
136
+ add_foreign_key('blog.comments', 'blog.posts')
137
+ ```
130
138
  Adds the index 'index_comments_on_post_id':
131
- add_foreign_key(:comments, :posts)
132
-
139
+ ```ruby
140
+ add_foreign_key(:comments, :posts)
141
+ ```
133
142
  Does not add an index:
143
+ ```ruby
134
144
  add_foreign_key(:comments, :posts, :exclude_index => true)
135
-
145
+ ```
136
146
  ## Partial Indexes
137
147
 
138
148
  We used a Rails 4.x [pull request](https://github.com/rails/rails/pull/4956) as a
@@ -141,13 +151,13 @@ starting point, backported to Rails 3.1.x and patched it to be schema-aware.
141
151
  ### Examples
142
152
 
143
153
  Add a partial index to a table
144
-
145
- add_index(:comments, [:country_id, :user_id], :where => 'active')
146
-
154
+ ```ruby
155
+ add_index(:comments, [:country_id, :user_id], :where => 'active')
156
+ ```
147
157
  Add a partial index to a schema table
148
-
149
- add_index('blog.comments', :user_id, :where => 'active')
150
-
158
+ ```ruby
159
+ add_index('blog.comments', :user_id, :where => 'active')
160
+ ```
151
161
  ## Indexes on Expressions
152
162
 
153
163
  PostgreSQL supports indexes on expressions. Right now, only basic functional
@@ -156,19 +166,19 @@ expressions are supported.
156
166
  ### Examples
157
167
 
158
168
  Add an index to a column with a function
159
-
160
- add_index(:comments, "lower(text)")
161
-
169
+ ```ruby
170
+ add_index(:comments, "lower(text)")
171
+ ```
162
172
  ## Tools
163
173
 
164
174
  PgPower::Tools provides number of useful methods:
165
-
166
- PgPower::Tools.create_schema "services" # => create new PG schema "services"
167
- PgPower::Tools.create_schema "nets" # => create new PG schema "nets"
168
- PgPower::Tools.drop_schema "services" # => remove the PG schema "services"
169
- PgPower::Tools.schemas # => ["public", "information_schema", "nets"]
170
- PgPower::Tools.index_exists?(table, columns, options) # => returns true if an index exists for the given params
171
-
175
+ ```ruby
176
+ PgPower::Tools.create_schema "services" # => create new PG schema "services"
177
+ PgPower::Tools.create_schema "nets" # => create new PG schema "nets"
178
+ PgPower::Tools.drop_schema "services" # => remove the PG schema "services"
179
+ PgPower::Tools.schemas # => ["public", "information_schema", "nets"]
180
+ PgPower::Tools.index_exists?(table, columns, options) # => returns true if an index exists for the given params
181
+ ```
172
182
  ## Running tests:
173
183
 
174
184
  * Configure `spec/dummy/config/database.yml` for development and test environments.
@@ -178,11 +188,11 @@ PgPower::Tools provides number of useful methods:
178
188
  ## TODO:
179
189
 
180
190
  Add next syntax to create table:
181
-
182
- create_table "table_name", :schema => "schema_name" do |t|
183
- # columns goes here
184
- end
185
-
191
+ ```ruby
192
+ create_table "table_name", :schema => "schema_name" do |t|
193
+ # columns goes here
194
+ end
195
+ ```
186
196
  Support for JRuby:
187
197
 
188
198
  * Jdbc driver provides its own `create_schema(schema, user)` method - solve conflicts.
@@ -0,0 +1,6 @@
1
+ module ActiveRecord
2
+ # Raised when an DB operation cannot be carried out because the current
3
+ # database user lacks the required privileges.
4
+ class InsufficientPrivilege < WrappedDatabaseException
5
+ end
6
+ end
@@ -4,13 +4,16 @@ module PgPower::ConnectionAdapters::PostgreSQLAdapter
4
4
  extend ActiveSupport::Autoload
5
5
  extend ActiveSupport::Concern
6
6
 
7
- autoload :SchemaMethods , 'pg_power/connection_adapters/postgresql_adapter/schema_methods'
8
- autoload :CommentMethods , 'pg_power/connection_adapters/postgresql_adapter/comment_methods'
9
- autoload :ForeignerMethods, 'pg_power/connection_adapters/postgresql_adapter/foreigner_methods'
10
- autoload :IndexMethods , 'pg_power/connection_adapters/postgresql_adapter/index_methods'
7
+ # TODO: Looks like explicit path specification can be omitted -- aignatyev 20120904
8
+ autoload :SchemaMethods, 'pg_power/connection_adapters/postgresql_adapter/schema_methods'
9
+ autoload :CommentMethods, 'pg_power/connection_adapters/postgresql_adapter/comment_methods'
10
+ autoload :ForeignerMethods, 'pg_power/connection_adapters/postgresql_adapter/foreigner_methods'
11
+ autoload :IndexMethods, 'pg_power/connection_adapters/postgresql_adapter/index_methods'
12
+ autoload :TranslateException, 'pg_power/connection_adapters/postgresql_adapter/translate_exception'
11
13
 
12
14
  include SchemaMethods
13
15
  include CommentMethods
14
16
  include ForeignerMethods
15
17
  include IndexMethods
18
+ include TranslateException
16
19
  end
@@ -0,0 +1,18 @@
1
+ # Extend ActiveRecord::ConnectionAdapter::PostgreSQLAdapter logic
2
+ # to wrap more pg-specific errors into specific exception classes
3
+ module PgPower::ConnectionAdapters::PostgreSQLAdapter::TranslateException
4
+ # # See http://www.postgresql.org/docs/9.1/static/errcodes-appendix.html
5
+ INSUFFICIENT_PRIVILEGE = "42501"
6
+
7
+ # Intercept insufficient privilege PGError and raise active_record wrapped database exception
8
+ def translate_exception(exception, message)
9
+ case exception.result.try(:error_field, PGresult::PG_DIAG_SQLSTATE)
10
+ when INSUFFICIENT_PRIVILEGE
11
+ exc_message = exception.result.try(:error_field, PGresult::PG_DIAG_MESSAGE_PRIMARY)
12
+ exc_message ||= message
13
+ ::ActiveRecord::InsufficientPrivilege.new(exc_message, exception)
14
+ else
15
+ super
16
+ end
17
+ end
18
+ end
@@ -6,6 +6,7 @@ module PgPower
6
6
  ActiveSupport.on_load(:active_record) do
7
7
  # load monkey patches
8
8
  ['schema_dumper',
9
+ 'errors',
9
10
  'connection_adapters/postgresql_adapter',
10
11
  'connection_adapters/abstract/schema_statements'].each do |path|
11
12
  require PgPower::Engine.root + 'lib/core_ext/active_record/' + path
@@ -30,7 +30,11 @@ module PgPower::SchemaDumper::SchemaMethods
30
30
  # Dumps tables from schemas other than public
31
31
  def non_public_schema_tables(stream)
32
32
  get_non_public_schema_table_names.each do |name|
33
- table(name, stream)
33
+ begin
34
+ table(name, stream)
35
+ rescue ::ActiveRecord::InsufficientPrivilege => exc
36
+ with_warnings(false) { warn("#{exc.class.name}: #{exc.message}. Skipping #{name.inspect}...") }
37
+ end
34
38
  end
35
39
  end
36
40
  private :non_public_schema_tables
@@ -1,4 +1,4 @@
1
1
  module PgPower
2
2
  # Version of pg_power gem.
3
- VERSION = "1.0.0"
3
+ VERSION = "1.0.1"
4
4
  end
metadata CHANGED
@@ -1,150 +1,159 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: pg_power
3
- version: !ruby/object:Gem::Version
4
- hash: 23
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.1
5
5
  prerelease:
6
- segments:
7
- - 1
8
- - 0
9
- - 0
10
- version: 1.0.0
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Potapov Sergey
14
9
  - Arthur Shagall
10
+ - TMX Credit
15
11
  autorequire:
16
12
  bindir: bin
17
13
  cert_chain: []
18
-
19
- date: 2012-09-05 00:00:00 Z
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
22
- type: :runtime
23
- requirement: &id001 !ruby/object:Gem::Requirement
24
- none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- hash: 3
29
- segments:
30
- - 0
31
- version: "0"
32
- version_requirements: *id001
14
+ date: 2012-09-12 00:00:00.000000000 Z
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
33
17
  name: pg
34
- prerelease: false
35
- - !ruby/object:Gem::Dependency
18
+ requirement: !ruby/object:Gem::Requirement
19
+ none: false
20
+ requirements:
21
+ - - ! '>='
22
+ - !ruby/object:Gem::Version
23
+ version: '0'
36
24
  type: :runtime
37
- requirement: &id002 !ruby/object:Gem::Requirement
38
- none: false
39
- requirements:
40
- - - ">="
41
- - !ruby/object:Gem::Version
42
- hash: 3
43
- segments:
44
- - 0
45
- version: "0"
46
- version_requirements: *id002
47
- name: rspec-rails
48
25
  prerelease: false
49
- - !ruby/object:Gem::Dependency
26
+ version_requirements: !ruby/object:Gem::Requirement
27
+ none: false
28
+ requirements:
29
+ - - ! '>='
30
+ - !ruby/object:Gem::Version
31
+ version: '0'
32
+ - !ruby/object:Gem::Dependency
33
+ name: rspec-rails
34
+ requirement: !ruby/object:Gem::Requirement
35
+ none: false
36
+ requirements:
37
+ - - ! '>='
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
50
40
  type: :runtime
51
- requirement: &id003 !ruby/object:Gem::Requirement
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
52
43
  none: false
53
- requirements:
54
- - - ~>
55
- - !ruby/object:Gem::Version
56
- hash: 5
57
- segments:
58
- - 3
59
- - 1
60
- version: "3.1"
61
- version_requirements: *id003
44
+ requirements:
45
+ - - ! '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ - !ruby/object:Gem::Dependency
62
49
  name: rails
50
+ requirement: !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ~>
54
+ - !ruby/object:Gem::Version
55
+ version: '3.1'
56
+ type: :runtime
63
57
  prerelease: false
64
- - !ruby/object:Gem::Dependency
65
- type: :development
66
- requirement: &id004 !ruby/object:Gem::Requirement
67
- none: false
68
- requirements:
69
- - - ">="
70
- - !ruby/object:Gem::Version
71
- hash: 3
72
- segments:
73
- - 0
74
- version: "0"
75
- version_requirements: *id004
58
+ version_requirements: !ruby/object:Gem::Requirement
59
+ none: false
60
+ requirements:
61
+ - - ~>
62
+ - !ruby/object:Gem::Version
63
+ version: '3.1'
64
+ - !ruby/object:Gem::Dependency
76
65
  name: rcov
77
- prerelease: false
78
- - !ruby/object:Gem::Dependency
66
+ requirement: !ruby/object:Gem::Requirement
67
+ none: false
68
+ requirements:
69
+ - - ! '>='
70
+ - !ruby/object:Gem::Version
71
+ version: '0'
79
72
  type: :development
80
- requirement: &id005 !ruby/object:Gem::Requirement
81
- none: false
82
- requirements:
83
- - - ">="
84
- - !ruby/object:Gem::Version
85
- hash: 3
86
- segments:
87
- - 0
88
- version: "0"
89
- version_requirements: *id005
90
- name: yard
91
73
  prerelease: false
92
- - !ruby/object:Gem::Dependency
74
+ version_requirements: !ruby/object:Gem::Requirement
75
+ none: false
76
+ requirements:
77
+ - - ! '>='
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ - !ruby/object:Gem::Dependency
81
+ name: yard
82
+ requirement: !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
93
88
  type: :development
94
- requirement: &id006 !ruby/object:Gem::Requirement
95
- none: false
96
- requirements:
97
- - - ">="
98
- - !ruby/object:Gem::Version
99
- hash: 3
100
- segments:
101
- - 0
102
- version: "0"
103
- version_requirements: *id006
104
- name: metrical
105
89
  prerelease: false
106
- - !ruby/object:Gem::Dependency
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ none: false
92
+ requirements:
93
+ - - ! '>='
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ - !ruby/object:Gem::Dependency
97
+ name: metrical
98
+ requirement: !ruby/object:Gem::Requirement
99
+ none: false
100
+ requirements:
101
+ - - ! '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
107
104
  type: :development
108
- requirement: &id007 !ruby/object:Gem::Requirement
109
- none: false
110
- requirements:
111
- - - ">="
112
- - !ruby/object:Gem::Version
113
- hash: 3
114
- segments:
115
- - 0
116
- version: "0"
117
- version_requirements: *id007
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ none: false
108
+ requirements:
109
+ - - ! '>='
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
+ - !ruby/object:Gem::Dependency
118
113
  name: jeweler
114
+ requirement: !ruby/object:Gem::Requirement
115
+ none: false
116
+ requirements:
117
+ - - ! '>='
118
+ - !ruby/object:Gem::Version
119
+ version: '0'
120
+ type: :development
119
121
  prerelease: false
120
- - !ruby/object:Gem::Dependency
122
+ version_requirements: !ruby/object:Gem::Requirement
123
+ none: false
124
+ requirements:
125
+ - - ! '>='
126
+ - !ruby/object:Gem::Version
127
+ version: '0'
128
+ - !ruby/object:Gem::Dependency
129
+ name: ruby-debug19
130
+ requirement: !ruby/object:Gem::Requirement
131
+ none: false
132
+ requirements:
133
+ - - ! '>='
134
+ - !ruby/object:Gem::Version
135
+ version: '0'
121
136
  type: :development
122
- requirement: &id008 !ruby/object:Gem::Requirement
123
- none: false
124
- requirements:
125
- - - ">="
126
- - !ruby/object:Gem::Version
127
- hash: 3
128
- segments:
129
- - 0
130
- version: "0"
131
- version_requirements: *id008
132
- name: ruby-debug
133
137
  prerelease: false
134
- description: ActiveRecord extensions for PostgreSQL. Provides useful tools and ability to create/drop schemas in migrations.
135
- email:
136
- - blake131313@gmail.com
137
- - arthur.shagall@gmail.com
138
+ version_requirements: !ruby/object:Gem::Requirement
139
+ none: false
140
+ requirements:
141
+ - - ! '>='
142
+ - !ruby/object:Gem::Version
143
+ version: '0'
144
+ description: ActiveRecord extensions for PostgreSQL. Provides useful tools and ability
145
+ to create/drop schemas in migrations.
146
+ email:
147
+ - rubygems@tmxcredit.com
138
148
  executables: []
139
-
140
149
  extensions: []
141
-
142
- extra_rdoc_files:
150
+ extra_rdoc_files:
143
151
  - README.markdown
144
- files:
152
+ files:
145
153
  - README.markdown
146
154
  - lib/core_ext/active_record/connection_adapters/abstract/schema_statements.rb
147
155
  - lib/core_ext/active_record/connection_adapters/postgresql_adapter.rb
156
+ - lib/core_ext/active_record/errors.rb
148
157
  - lib/core_ext/active_record/schema_dumper.rb
149
158
  - lib/pg_power.rb
150
159
  - lib/pg_power/connection_adapters.rb
@@ -160,6 +169,7 @@ files:
160
169
  - lib/pg_power/connection_adapters/postgresql_adapter/foreigner_methods.rb
161
170
  - lib/pg_power/connection_adapters/postgresql_adapter/index_methods.rb
162
171
  - lib/pg_power/connection_adapters/postgresql_adapter/schema_methods.rb
172
+ - lib/pg_power/connection_adapters/postgresql_adapter/translate_exception.rb
163
173
  - lib/pg_power/connection_adapters/table.rb
164
174
  - lib/pg_power/connection_adapters/table/comment_methods.rb
165
175
  - lib/pg_power/connection_adapters/table/foreigner_methods.rb
@@ -178,36 +188,29 @@ files:
178
188
  - lib/tasks/pg_power_tasks.rake
179
189
  homepage: https://github.com/TMXCredit/pg_power
180
190
  licenses: []
181
-
182
191
  post_install_message:
183
192
  rdoc_options: []
184
-
185
- require_paths:
193
+ require_paths:
186
194
  - lib
187
- required_ruby_version: !ruby/object:Gem::Requirement
195
+ required_ruby_version: !ruby/object:Gem::Requirement
188
196
  none: false
189
- requirements:
190
- - - ">="
191
- - !ruby/object:Gem::Version
192
- hash: 3
193
- segments:
197
+ requirements:
198
+ - - ! '>='
199
+ - !ruby/object:Gem::Version
200
+ version: '0'
201
+ segments:
194
202
  - 0
195
- version: "0"
196
- required_rubygems_version: !ruby/object:Gem::Requirement
203
+ hash: 3609710966930791506
204
+ required_rubygems_version: !ruby/object:Gem::Requirement
197
205
  none: false
198
- requirements:
199
- - - ">="
200
- - !ruby/object:Gem::Version
201
- hash: 3
202
- segments:
203
- - 0
204
- version: "0"
206
+ requirements:
207
+ - - ! '>='
208
+ - !ruby/object:Gem::Version
209
+ version: '0'
205
210
  requirements: []
206
-
207
211
  rubyforge_project:
208
212
  rubygems_version: 1.8.24
209
213
  signing_key:
210
214
  specification_version: 3
211
215
  summary: ActiveRecord extensions for PostgreSQL.
212
216
  test_files: []
213
-