postgres_ext 1.0.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -1
  3. data/README.md +6 -47
  4. data/lib/postgres_ext/active_record/relation/predicate_builder.rb +36 -55
  5. data/lib/postgres_ext/active_record/relation/query_methods.rb +0 -14
  6. data/lib/postgres_ext/active_record.rb +0 -3
  7. data/lib/postgres_ext/version.rb +1 -1
  8. data/postgres_ext.gemspec +6 -5
  9. data/spec/arel/arel_spec.rb +0 -1
  10. data/spec/dummy/app/models/person.rb +0 -1
  11. data/spec/dummy/config/application.rb +0 -3
  12. data/spec/dummy/config/environments/development.rb +2 -7
  13. data/spec/dummy/config/environments/production.rb +1 -0
  14. data/spec/dummy/config/environments/test.rb +1 -5
  15. data/spec/dummy/db/migrate/20120501163758_create_people.rb +3 -3
  16. data/spec/dummy/db/schema.rb +15 -12
  17. data/spec/queries/sanity_spec.rb +1 -1
  18. data/spec/spec_helper.rb +1 -2
  19. metadata +21 -105
  20. data/docs/indexes.md +0 -28
  21. data/docs/migrations.md +0 -92
  22. data/docs/type_casting.md +0 -70
  23. data/lib/postgres_ext/active_record/connection_adapters/postgres_adapter.rb +0 -537
  24. data/lib/postgres_ext/active_record/connection_adapters.rb +0 -1
  25. data/lib/postgres_ext/active_record/sanitization.rb +0 -30
  26. data/lib/postgres_ext/active_record/schema_dumper.rb +0 -157
  27. data/spec/columns/array_spec.rb +0 -119
  28. data/spec/columns/inet_spec.rb +0 -25
  29. data/spec/columns/ranges/daterange_spec.rb +0 -37
  30. data/spec/columns/ranges/int4range_spec.rb +0 -38
  31. data/spec/columns/ranges/int8range_spec.rb +0 -38
  32. data/spec/columns/ranges/numrange_spec.rb +0 -37
  33. data/spec/columns/ranges/tsrange_spec.rb +0 -37
  34. data/spec/migrations/active_record_migration_spec.rb +0 -29
  35. data/spec/migrations/array_spec.rb +0 -214
  36. data/spec/migrations/cidr_spec.rb +0 -26
  37. data/spec/migrations/citext_spec.rb +0 -32
  38. data/spec/migrations/ean13_spec.rb +0 -27
  39. data/spec/migrations/index_spec.rb +0 -67
  40. data/spec/migrations/inet_spec.rb +0 -26
  41. data/spec/migrations/macaddr_spec.rb +0 -26
  42. data/spec/migrations/ranges/daterange_spec.rb +0 -27
  43. data/spec/migrations/ranges/int4range_spec.rb +0 -27
  44. data/spec/migrations/ranges/int8range_spec.rb +0 -27
  45. data/spec/migrations/ranges/numrange_spec.rb +0 -27
  46. data/spec/migrations/ranges/tsrange_spec.rb +0 -27
  47. data/spec/migrations/ranges/tstzrange_spec.rb +0 -27
  48. data/spec/migrations/uuid_spec.rb +0 -26
  49. data/spec/models/array_spec.rb +0 -285
  50. data/spec/models/ean13_spec.rb +0 -57
  51. data/spec/models/inet_spec.rb +0 -88
  52. data/spec/models/ranges/daterange_spec.rb +0 -88
  53. data/spec/models/ranges/int4range_spec.rb +0 -85
  54. data/spec/models/ranges/int8range_spec.rb +0 -85
  55. data/spec/models/ranges/numrange_spec.rb +0 -85
  56. data/spec/models/ranges/tsrange_spec.rb +0 -89
  57. data/spec/models/ranges/tstzrange_spec.rb +0 -89
  58. data/spec/schema_dumper/array_spec.rb +0 -17
  59. data/spec/schema_dumper/cidr_spec.rb +0 -17
  60. data/spec/schema_dumper/citext_spec.rb +0 -17
  61. data/spec/schema_dumper/ean13_spec.rb +0 -17
  62. data/spec/schema_dumper/extension_spec.rb +0 -14
  63. data/spec/schema_dumper/index_spec.rb +0 -46
  64. data/spec/schema_dumper/inet_spec.rb +0 -17
  65. data/spec/schema_dumper/macaddr_spec.rb +0 -17
  66. data/spec/schema_dumper/ranges/daterange_spec.rb +0 -18
  67. data/spec/schema_dumper/ranges/int4range_spec.rb +0 -18
  68. data/spec/schema_dumper/ranges/int8range_spec.rb +0 -18
  69. data/spec/schema_dumper/ranges/numrange_spec.rb +0 -18
  70. data/spec/schema_dumper/ranges/tsrange_spec.rb +0 -18
  71. data/spec/schema_dumper/ranges/tstzrange_spec.rb +0 -17
  72. data/spec/schema_dumper/uuid_spec.rb +0 -17
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 04e9453088f60586e98a2f2213afe6e64c075aa7
4
- data.tar.gz: 25d1bf9062740090514152e513cc684b4e42a582
3
+ metadata.gz: 16a9a614595cf23330e0ef345abaa250b7c22ce4
4
+ data.tar.gz: a76e0358088afb3a32ee35acedf993178887a323
5
5
  SHA512:
6
- metadata.gz: 22a8dd126361df619dbd44c45ecaf645ef90f8eb5b23c08b5b4252a2faad6a1d92ec490c7c705645f273c9a8c08ba4154714d466967baed2a0203d1f06868d59
7
- data.tar.gz: 45f1d420e3dcb6a3cf295fe60cabcdf35a40dbc8239d50832f4b9c2d5e54adcfa6db0aced323b397a0f7a017251fbcd7d8ddc6d22890cdb1a13c8befb158334f
6
+ metadata.gz: d72d5bb3c07f5ff7a41dabe3a2bc4ee2c825b4868ad8f55ca6e8b147dcd35b71543f0a2f3fadaf364a5a77a7799cbe2ed8a440b2a0e4d2758605a573c6349499
7
+ data.tar.gz: bd734f9475b84bee09f43d8b8c6c6f076455ffc65f1a9bc66965391af9ea51a88156dba5c36a816cb395c8627adc65188d23357cbfc2b1641bd0181871d507b5
data/Gemfile CHANGED
@@ -5,7 +5,7 @@ gemspec
5
5
  unless ENV['CI']
6
6
  if RUBY_PLATFORM =~ /java/
7
7
  gem 'ruby-debug'
8
- elsif RUBY_VERSION == '2.0.0'
8
+ else
9
9
  gem 'byebug'
10
10
  end
11
11
  end
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # PostgresExt
2
2
 
3
- Adds support for missing PostgreSQL data types to ActiveRecord.
3
+ Adds missing native PostgreSQL data types to ActiveRecord and convenient querying extensions for ActiveRecord and Arel for Rails 4.x
4
4
 
5
5
  [![Build Status](https://secure.travis-ci.org/dockyard/postgres_ext.png?branch=master)](http://travis-ci.org/dockyard/postgres_ext)
6
6
  [![Code Climate](https://codeclimate.com/badge.png)](https://codeclimate.com/github/dockyard/postgres_ext)
@@ -30,55 +30,14 @@ Or install it yourself as:
30
30
  ## Usage
31
31
 
32
32
  Just `require 'postgres_ext'` and use ActiveRecord as you normally would! postgres\_ext extends
33
- ActiveRecord's data type handling.
33
+ ActiveRecord's data type handling and query methods in both Arel and
34
+ ActiveRecord.
34
35
 
35
- * [Migration/Schema.rb support](docs/migrations.md)
36
- * [Type Casting support](docs/type_casting.md)
37
36
  * [Querying PostgreSQL datatypes](docs/querying.md)
38
- * [Indexes](docs/indexes.md)
39
-
40
- ## Usage Notes
41
- Avoid the use of in place operators (ie `Array#<<`). These changes are
42
- *not* tracked by Rails ([this issue](https://github.com/rails/rails/issues/6954))
43
- explains why). In place modifications also modify the default object.
44
-
45
- Assuming we have the following model:
46
-
47
- ```ruby
48
- create_table :items do |t|
49
- t.string :names, :array => true, :default => []
50
- end
51
-
52
- class Item < ActiveRecord::Base
53
- end
54
- ```
55
-
56
- The following will modify the default value of the names attribute.
57
-
58
- ```ruby
59
- a = Item.new
60
- a.names << 'foo'
61
-
62
- b = Item.new
63
- puts b.names
64
- # => ['foo']
65
- ```
66
-
67
- The supported way of modifying `a.names`:
68
-
69
- ```ruby
70
- a = Item.new
71
- a.names += ['foo']
72
-
73
- b = Item.new
74
- puts b.names
75
- # => []
76
- ```
77
-
78
- As a result, in place operators are discouraged and will not be
79
- supported in postgres\_ext at this time.
80
-
81
37
 
38
+ Where are the datatypes from PostgresExt 1.x? ActiveRecord 4.x includes
39
+ all the data types that PostgresExt added to ActiveRecord 3.2.x. We'll
40
+ be adding more datatypes as we come across them.
82
41
 
83
42
  ## Authors
84
43
 
@@ -2,70 +2,51 @@ require 'active_record/relation/predicate_builder'
2
2
 
3
3
  module ActiveRecord
4
4
  class PredicateBuilder # :nodoc:
5
- def self.build_from_hash(engine, attributes, default_table, allow_table_name = true)
6
- predicates = attributes.map do |column, value|
7
- table = default_table
8
-
9
- if allow_table_name && value.is_a?(Hash)
10
- table = Arel::Table.new(column, engine)
11
-
12
- if value.empty?
13
- '1 = 2'
14
- else
15
- build_from_hash(engine, value, table, false)
16
- end
5
+ private
6
+
7
+ def self.build(attribute, value)
8
+ case value
9
+ when Array
10
+ engine = attribute.relation.engine
11
+ column = engine.columns.detect{ |col| col.name == attribute.name }
12
+ if column.array
13
+ attribute.eq(value)
17
14
  else
18
- column = column.to_s
19
-
20
- if allow_table_name && column.include?('.')
21
- table_name, column = column.split('.', 2)
22
- table = Arel::Table.new(table_name, engine)
23
- end
15
+ values = value.to_a.map {|x| x.is_a?(Base) ? x.id : x}
16
+ ranges, values = values.partition {|v| v.is_a?(Range)}
24
17
 
25
- attribute = table[column.to_sym]
18
+ values_predicate = if values.include?(nil)
19
+ values = values.compact
26
20
 
27
- case value
28
- when ActiveRecord::Relation
29
- value = value.select(value.klass.arel_table[value.klass.primary_key]) if value.select_values.empty?
30
- attribute.in(value.arel.ast)
31
- when Array, ActiveRecord::Associations::CollectionProxy
32
- column_definition = engine.connection.columns(table.name).find { |col| col.name == column }
33
-
34
- if column_definition.respond_to?(:array) && column_definition.array
35
- attribute.eq(value)
21
+ case values.length
22
+ when 0
23
+ attribute.eq(nil)
24
+ when 1
25
+ attribute.eq(values.first).or(attribute.eq(nil))
36
26
  else
37
- values = value.to_a.map {|x| x.is_a?(ActiveRecord::Base) ? x.id : x}
38
- ranges, values = values.partition {|v| v.is_a?(Range) || v.is_a?(Arel::Relation)}
39
-
40
- array_predicates = ranges.map {|range| attribute.in(range)}
41
-
42
- if values.include?(nil)
43
- values = values.compact
44
- if values.empty?
45
- array_predicates << attribute.eq(nil)
46
- else
47
- array_predicates << attribute.in(values.compact).or(attribute.eq(nil))
48
- end
49
- else
50
- array_predicates << attribute.in(values)
51
- end
52
-
53
- array_predicates.inject {|composite, predicate| composite.or(predicate)}
27
+ attribute.in(values).or(attribute.eq(nil))
54
28
  end
55
- when Range, Arel::Relation
56
- attribute.in(value)
57
- when ActiveRecord::Base
58
- attribute.eq(value.id)
59
- when Class
60
- # FIXME: I think we need to deprecate this behavior
61
- attribute.eq(value.name)
62
29
  else
63
- attribute.eq(value)
30
+ attribute.in(values)
64
31
  end
32
+
33
+ array_predicates = ranges.map { |range| attribute.in(range) }
34
+ array_predicates << values_predicate
35
+ array_predicates.inject { |composite, predicate| composite.or(predicate) }
65
36
  end
37
+ when ActiveRecord::Relation
38
+ value = value.select(value.klass.arel_table[value.klass.primary_key]) if value.select_values.empty?
39
+ attribute.in(value.arel.ast)
40
+ when Range
41
+ attribute.in(value)
42
+ when ActiveRecord::Base
43
+ attribute.eq(value.id)
44
+ when Class
45
+ # FIXME: I think we need to deprecate this behavior
46
+ attribute.eq(value.name)
47
+ else
48
+ attribute.eq(value)
66
49
  end
67
-
68
- predicates.flatten
69
50
  end
70
51
  end
71
52
  end
@@ -3,10 +3,6 @@ require 'active_record/relation/query_methods'
3
3
  module ActiveRecord
4
4
  module QueryMethods
5
5
  class WhereChain
6
- def initialize(scope)
7
- @scope = scope
8
- end
9
-
10
6
  def overlap(opts)
11
7
  opts.each do |key, value|
12
8
  @scope = @scope.where(arel_table[key].overlap(value))
@@ -70,15 +66,5 @@ module ActiveRecord
70
66
  @scope
71
67
  end
72
68
  end
73
-
74
- def where_with_chaining(*opts, &block)
75
- if opts.empty? && !block_given?
76
- WhereChain.new(self)
77
- else
78
- where_without_chaining(*opts, &block)
79
- end
80
- end
81
-
82
- alias_method_chain :where, :chaining
83
69
  end
84
70
  end
@@ -1,4 +1 @@
1
- require 'postgres_ext/active_record/sanitization'
2
- require 'postgres_ext/active_record/connection_adapters'
3
- require 'postgres_ext/active_record/schema_dumper'
4
1
  require 'postgres_ext/active_record/relation'
@@ -1,3 +1,3 @@
1
1
  module PostgresExt
2
- VERSION = '1.0.0'
2
+ VERSION = '2.0.0'
3
3
  end
data/postgres_ext.gemspec CHANGED
@@ -4,7 +4,7 @@ require File.expand_path('../lib/postgres_ext/version', __FILE__)
4
4
  Gem::Specification.new do |gem|
5
5
  gem.authors = ["Dan McClain"]
6
6
  gem.email = ["git@danmcclain.net"]
7
- gem.description = %q{Adds missing native PostgreSQL data types to ActiveRecord}
7
+ gem.description = %q{Adds missing native PostgreSQL data types to ActiveRecord and convenient querying extensions for ActiveRecord and Arel}
8
8
  gem.summary = %q{Extends ActiveRecord to handle native PostgreSQL data types}
9
9
  gem.homepage = ""
10
10
  gem.licenses = ['MIT']
@@ -16,15 +16,16 @@ Gem::Specification.new do |gem|
16
16
  gem.require_paths = ["lib"]
17
17
  gem.version = PostgresExt::VERSION
18
18
 
19
- gem.add_dependency 'activerecord', '~> 3.2.0'
19
+ gem.add_dependency 'activerecord', '~> 4.0.0'
20
+ gem.add_dependency 'arel', '~> 4.0.0'
20
21
  gem.add_dependency 'pg_array_parser', '~> 0.0.9'
21
22
 
22
- gem.add_development_dependency 'rails', '~> 3.2.0'
23
+ gem.add_development_dependency 'rails', '~> 4.0.0'
23
24
  gem.add_development_dependency 'rspec-rails', '~> 2.12.0'
24
25
  gem.add_development_dependency 'bourne', '~> 1.3.0'
25
26
  if RUBY_PLATFORM =~ /java/
26
- gem.add_development_dependency 'activerecord-jdbcpostgresql-adapter'
27
+ gem.add_development_dependency 'activerecord-jdbcpostgresql-adapter', '1.3.0.beta2'
27
28
  else
28
- gem.add_development_dependency 'pg', '~> 0.13.2'
29
+ gem.add_development_dependency 'pg', '~> 0.13.2'
29
30
  end
30
31
  end
@@ -11,7 +11,6 @@ describe 'Don\'t stomp all over the default ActiveRecord queries' do
11
11
  end
12
12
 
13
13
  class Car < ActiveRecord::Base
14
- attr_accessible :make, :model
15
14
  end
16
15
  end
17
16
 
@@ -1,3 +1,2 @@
1
1
  class Person < ActiveRecord::Base
2
- attr_accessible :ip, :tags, :tag_ids, :biography, :lucky_number, :int_range
3
2
  end
@@ -47,9 +47,6 @@ module Dummy
47
47
  # Enforce whitelist mode for mass assignment.
48
48
  # This will create an empty whitelist of attributes available for mass-assignment for all models
49
49
  # in your app. As such, your models will need to explicitly whitelist or blacklist accessible
50
- # parameters by using an attr_accessible or attr_protected declaration.
51
- config.active_record.whitelist_attributes = true
52
-
53
50
  # Enable the asset pipeline
54
51
  config.assets.enabled = true
55
52
 
@@ -1,14 +1,12 @@
1
1
  Dummy::Application.configure do
2
- require 'debugger' if RUBY_VERSION == '1.9.3' && ! ENV['CI']
3
2
  # Settings specified here will take precedence over those in config/application.rb
4
3
 
5
4
  # In the development environment your application's code is reloaded on
6
5
  # every request. This slows down response time but is perfect for development
7
6
  # since you don't have to restart the web server when you make code changes.
8
7
  config.cache_classes = false
9
-
10
- # Log error messages when you accidentally call methods on nil.
11
- config.whiny_nils = true
8
+
9
+ config.eager_load = false
12
10
 
13
11
  # Show full error reports and disable caching
14
12
  config.consider_all_requests_local = true
@@ -23,9 +21,6 @@ Dummy::Application.configure do
23
21
  # Only use best-standards-support built into browsers
24
22
  config.action_dispatch.best_standards_support = :builtin
25
23
 
26
- # Raise exception on mass assignment protection for Active Record models
27
- config.active_record.mass_assignment_sanitizer = :strict
28
-
29
24
  # Log the query plan for queries taking more than this (works
30
25
  # with SQLite, MySQL, and PostgreSQL)
31
26
  config.active_record.auto_explain_threshold_in_seconds = 0.5
@@ -3,6 +3,7 @@ Dummy::Application.configure do
3
3
 
4
4
  # Code is not reloaded between requests
5
5
  config.cache_classes = true
6
+ config.eager_load = true
6
7
 
7
8
  # Full error reports are disabled and caching is turned on
8
9
  config.consider_all_requests_local = false
@@ -11,8 +11,7 @@ Dummy::Application.configure do
11
11
  config.serve_static_assets = true
12
12
  config.static_cache_control = "public, max-age=3600"
13
13
 
14
- # Log error messages when you accidentally call methods on nil
15
- config.whiny_nils = true
14
+ config.eager_load = false
16
15
 
17
16
  # Show full error reports and disable caching
18
17
  config.consider_all_requests_local = true
@@ -29,9 +28,6 @@ Dummy::Application.configure do
29
28
  # ActionMailer::Base.deliveries array.
30
29
  config.action_mailer.delivery_method = :test
31
30
 
32
- # Raise exception on mass assignment protection for Active Record models
33
- config.active_record.mass_assignment_sanitizer = :strict
34
-
35
31
  # Print deprecation notices to the stderr
36
32
  config.active_support.deprecation = :stderr
37
33
  end
@@ -1,13 +1,13 @@
1
1
  class CreatePeople < ActiveRecord::Migration
2
2
  def change
3
3
  create_table :people do |t|
4
- t.inet :ip
5
- t.cidr :subnet
4
+ t.column :ip, :inet
5
+ t.column :subnet, :cidr
6
6
  t.integer :tag_ids, :array => true
7
7
  t.string :tags, :array => true
8
8
  t.text :biography
9
9
  t.integer :lucky_number
10
- t.numrange :num_range
10
+ t.column :num_range, :numrange
11
11
 
12
12
  t.timestamps
13
13
  end
@@ -9,20 +9,23 @@
9
9
  # from scratch. The latter is a flawed and unsustainable approach (the more migrations
10
10
  # you'll amass, the slower it'll run and the greater likelihood for issues).
11
11
  #
12
- # It's strongly recommended to check this file into your version control system.
12
+ # It's strongly recommended that you check this file into your version control system.
13
13
 
14
- ActiveRecord::Schema.define(:version => 20120501163758) do
14
+ ActiveRecord::Schema.define(version: 20120501163758) do
15
15
 
16
- create_table "people", :force => true do |t|
17
- t.inet "ip"
18
- t.cidr "subnet"
19
- t.integer "tag_ids", :array => true
20
- t.string "tags", :array => true
21
- t.text "biography"
22
- t.integer "lucky_number"
23
- t.num_rang "num_range"
24
- t.datetime "created_at", :null => false
25
- t.datetime "updated_at", :null => false
16
+ # These are extensions that must be enabled in order to support this database
17
+ enable_extension "plpgsql"
18
+
19
+ create_table "people", force: true do |t|
20
+ t.inet "ip"
21
+ t.cidr "subnet"
22
+ t.integer "tag_ids", array: true
23
+ t.string "tags", array: true
24
+ t.text "biography"
25
+ t.integer "lucky_number"
26
+ t.numrange "num_range"
27
+ t.datetime "created_at"
28
+ t.datetime "updated_at"
26
29
  end
27
30
 
28
31
  end
@@ -11,7 +11,7 @@ describe 'Ensure that we don\'t stomp on Active Record\'s queries' do
11
11
  it 'generates IN clauses for non array columns' do
12
12
  query = Person.where(:id => []).to_sql
13
13
 
14
- query.should match /IN \(NULL\)/
14
+ query.should match /WHERE 1=0/
15
15
  end
16
16
  end
17
17
  end
data/spec/spec_helper.rb CHANGED
@@ -5,7 +5,6 @@ require File.expand_path('../dummy/config/environment.rb', __FILE__)
5
5
  require 'rspec/rails'
6
6
  require 'rspec/autorun'
7
7
  require 'bourne'
8
- #require 'debugger' unless ENV['CI'] || (RUBY_PLATFORM =~ /java/)
9
8
 
10
9
  ENGINE_RAILS_ROOT=File.join(File.dirname(__FILE__), '../')
11
10
 
@@ -15,7 +14,7 @@ Dir[File.join(ENGINE_RAILS_ROOT, 'spec/support/**/*.rb')].each { |f| require f }
15
14
  require 'postgres_ext'
16
15
 
17
16
  RSpec.configure do |config|
18
- config.before(:suite) { ActiveRecord::Base.connection.add_extension('pg_trgm') if ActiveRecord::Base.connection.supports_extensions?}
17
+ config.before(:suite) { ActiveRecord::Base.connection.enable_extension('pg_trgm')}
19
18
  config.use_transactional_fixtures = false
20
19
  config.treat_symbols_as_metadata_keys_with_true_values = true
21
20
  config.mock_with :mocha
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: postgres_ext
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dan McClain
@@ -16,14 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - ~>
18
18
  - !ruby/object:Gem::Version
19
- version: 3.2.0
19
+ version: 4.0.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ~>
25
25
  - !ruby/object:Gem::Version
26
- version: 3.2.0
26
+ version: 4.0.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: arel
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: 4.0.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: 4.0.0
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: pg_array_parser
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -44,14 +58,14 @@ dependencies:
44
58
  requirements:
45
59
  - - ~>
46
60
  - !ruby/object:Gem::Version
47
- version: 3.2.0
61
+ version: 4.0.0
48
62
  type: :development
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
66
  - - ~>
53
67
  - !ruby/object:Gem::Version
54
- version: 3.2.0
68
+ version: 4.0.0
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: rspec-rails
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -94,7 +108,8 @@ dependencies:
94
108
  - - ~>
95
109
  - !ruby/object:Gem::Version
96
110
  version: 0.13.2
97
- description: Adds missing native PostgreSQL data types to ActiveRecord
111
+ description: Adds missing native PostgreSQL data types to ActiveRecord and convenient
112
+ querying extensions for ActiveRecord and Arel
98
113
  email:
99
114
  - git@danmcclain.net
100
115
  executables: []
@@ -109,19 +124,12 @@ files:
109
124
  - Gemfile
110
125
  - README.md
111
126
  - Rakefile
112
- - docs/indexes.md
113
- - docs/migrations.md
114
127
  - docs/querying.md
115
- - docs/type_casting.md
116
128
  - lib/postgres_ext.rb
117
129
  - lib/postgres_ext/active_record.rb
118
- - lib/postgres_ext/active_record/connection_adapters.rb
119
- - lib/postgres_ext/active_record/connection_adapters/postgres_adapter.rb
120
130
  - lib/postgres_ext/active_record/relation.rb
121
131
  - lib/postgres_ext/active_record/relation/predicate_builder.rb
122
132
  - lib/postgres_ext/active_record/relation/query_methods.rb
123
- - lib/postgres_ext/active_record/sanitization.rb
124
- - lib/postgres_ext/active_record/schema_dumper.rb
125
133
  - lib/postgres_ext/arel.rb
126
134
  - lib/postgres_ext/arel/nodes.rb
127
135
  - lib/postgres_ext/arel/nodes/array_nodes.rb
@@ -135,13 +143,6 @@ files:
135
143
  - spec/arel/arel_spec.rb
136
144
  - spec/arel/array_spec.rb
137
145
  - spec/arel/inet_spec.rb
138
- - spec/columns/array_spec.rb
139
- - spec/columns/inet_spec.rb
140
- - spec/columns/ranges/daterange_spec.rb
141
- - spec/columns/ranges/int4range_spec.rb
142
- - spec/columns/ranges/int8range_spec.rb
143
- - spec/columns/ranges/numrange_spec.rb
144
- - spec/columns/ranges/tsrange_spec.rb
145
146
  - spec/dummy/.gitignore
146
147
  - spec/dummy/README.rdoc
147
148
  - spec/dummy/Rakefile
@@ -193,48 +194,9 @@ files:
193
194
  - spec/dummy/vendor/assets/javascripts/.gitkeep
194
195
  - spec/dummy/vendor/assets/stylesheets/.gitkeep
195
196
  - spec/dummy/vendor/plugins/.gitkeep
196
- - spec/migrations/active_record_migration_spec.rb
197
- - spec/migrations/array_spec.rb
198
- - spec/migrations/cidr_spec.rb
199
- - spec/migrations/citext_spec.rb
200
- - spec/migrations/ean13_spec.rb
201
- - spec/migrations/index_spec.rb
202
- - spec/migrations/inet_spec.rb
203
- - spec/migrations/macaddr_spec.rb
204
- - spec/migrations/ranges/daterange_spec.rb
205
- - spec/migrations/ranges/int4range_spec.rb
206
- - spec/migrations/ranges/int8range_spec.rb
207
- - spec/migrations/ranges/numrange_spec.rb
208
- - spec/migrations/ranges/tsrange_spec.rb
209
- - spec/migrations/ranges/tstzrange_spec.rb
210
- - spec/migrations/uuid_spec.rb
211
- - spec/models/array_spec.rb
212
- - spec/models/ean13_spec.rb
213
- - spec/models/inet_spec.rb
214
- - spec/models/ranges/daterange_spec.rb
215
- - spec/models/ranges/int4range_spec.rb
216
- - spec/models/ranges/int8range_spec.rb
217
- - spec/models/ranges/numrange_spec.rb
218
- - spec/models/ranges/tsrange_spec.rb
219
- - spec/models/ranges/tstzrange_spec.rb
220
197
  - spec/queries/array_queries_spec.rb
221
198
  - spec/queries/contains_querie_spec.rb
222
199
  - spec/queries/sanity_spec.rb
223
- - spec/schema_dumper/array_spec.rb
224
- - spec/schema_dumper/cidr_spec.rb
225
- - spec/schema_dumper/citext_spec.rb
226
- - spec/schema_dumper/ean13_spec.rb
227
- - spec/schema_dumper/extension_spec.rb
228
- - spec/schema_dumper/index_spec.rb
229
- - spec/schema_dumper/inet_spec.rb
230
- - spec/schema_dumper/macaddr_spec.rb
231
- - spec/schema_dumper/ranges/daterange_spec.rb
232
- - spec/schema_dumper/ranges/int4range_spec.rb
233
- - spec/schema_dumper/ranges/int8range_spec.rb
234
- - spec/schema_dumper/ranges/numrange_spec.rb
235
- - spec/schema_dumper/ranges/tsrange_spec.rb
236
- - spec/schema_dumper/ranges/tstzrange_spec.rb
237
- - spec/schema_dumper/uuid_spec.rb
238
200
  - spec/spec_helper.rb
239
201
  homepage: ''
240
202
  licenses:
@@ -264,13 +226,6 @@ test_files:
264
226
  - spec/arel/arel_spec.rb
265
227
  - spec/arel/array_spec.rb
266
228
  - spec/arel/inet_spec.rb
267
- - spec/columns/array_spec.rb
268
- - spec/columns/inet_spec.rb
269
- - spec/columns/ranges/daterange_spec.rb
270
- - spec/columns/ranges/int4range_spec.rb
271
- - spec/columns/ranges/int8range_spec.rb
272
- - spec/columns/ranges/numrange_spec.rb
273
- - spec/columns/ranges/tsrange_spec.rb
274
229
  - spec/dummy/.gitignore
275
230
  - spec/dummy/README.rdoc
276
231
  - spec/dummy/Rakefile
@@ -322,46 +277,7 @@ test_files:
322
277
  - spec/dummy/vendor/assets/javascripts/.gitkeep
323
278
  - spec/dummy/vendor/assets/stylesheets/.gitkeep
324
279
  - spec/dummy/vendor/plugins/.gitkeep
325
- - spec/migrations/active_record_migration_spec.rb
326
- - spec/migrations/array_spec.rb
327
- - spec/migrations/cidr_spec.rb
328
- - spec/migrations/citext_spec.rb
329
- - spec/migrations/ean13_spec.rb
330
- - spec/migrations/index_spec.rb
331
- - spec/migrations/inet_spec.rb
332
- - spec/migrations/macaddr_spec.rb
333
- - spec/migrations/ranges/daterange_spec.rb
334
- - spec/migrations/ranges/int4range_spec.rb
335
- - spec/migrations/ranges/int8range_spec.rb
336
- - spec/migrations/ranges/numrange_spec.rb
337
- - spec/migrations/ranges/tsrange_spec.rb
338
- - spec/migrations/ranges/tstzrange_spec.rb
339
- - spec/migrations/uuid_spec.rb
340
- - spec/models/array_spec.rb
341
- - spec/models/ean13_spec.rb
342
- - spec/models/inet_spec.rb
343
- - spec/models/ranges/daterange_spec.rb
344
- - spec/models/ranges/int4range_spec.rb
345
- - spec/models/ranges/int8range_spec.rb
346
- - spec/models/ranges/numrange_spec.rb
347
- - spec/models/ranges/tsrange_spec.rb
348
- - spec/models/ranges/tstzrange_spec.rb
349
280
  - spec/queries/array_queries_spec.rb
350
281
  - spec/queries/contains_querie_spec.rb
351
282
  - spec/queries/sanity_spec.rb
352
- - spec/schema_dumper/array_spec.rb
353
- - spec/schema_dumper/cidr_spec.rb
354
- - spec/schema_dumper/citext_spec.rb
355
- - spec/schema_dumper/ean13_spec.rb
356
- - spec/schema_dumper/extension_spec.rb
357
- - spec/schema_dumper/index_spec.rb
358
- - spec/schema_dumper/inet_spec.rb
359
- - spec/schema_dumper/macaddr_spec.rb
360
- - spec/schema_dumper/ranges/daterange_spec.rb
361
- - spec/schema_dumper/ranges/int4range_spec.rb
362
- - spec/schema_dumper/ranges/int8range_spec.rb
363
- - spec/schema_dumper/ranges/numrange_spec.rb
364
- - spec/schema_dumper/ranges/tsrange_spec.rb
365
- - spec/schema_dumper/ranges/tstzrange_spec.rb
366
- - spec/schema_dumper/uuid_spec.rb
367
283
  - spec/spec_helper.rb
data/docs/indexes.md DELETED
@@ -1,28 +0,0 @@
1
- # Indexes
2
-
3
- ## Index types
4
-
5
- Postgres\_ext allows you to specify index type and index operator
6
- class at index creation.
7
-
8
- ```ruby
9
- add_index :table_name, :column, :using => :gin
10
- add_index :table_name, :column, :using => :gin, :index_opclass => :gin_trgm_ops
11
- ```
12
-
13
- ## Where clauses
14
-
15
- Postgres\_ext allows you to specify a where clause at index creation.
16
-
17
- ```ruby
18
- add_index :table_name, :column, :where => 'column < 50'
19
- ```
20
-
21
- ## Concurrent Indexes
22
-
23
- Postgres\_ext allows you to create indexes concurrently using the
24
- `:algorithm` option
25
-
26
- ```ruby
27
- add_index :table_name, :column, :algorithm => :concurrently
28
- ```