arel-extensions 1.6.0 → 1.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 52a47012efafaa4b4d73f2b13b017a3e35c75587525de84c16dd4a585a29909e
4
- data.tar.gz: 2a8a38a06be27912f2877bebd701a4f1f1dcce1e0d69211611f660de612f902c
3
+ metadata.gz: 7760e9c8da3eca620a0c390b8767b4e1dd37be5e7612debf58f0bb284e8809ca
4
+ data.tar.gz: ba383da2aecf077b8b91c8e3ed29f3724093fc0c8e15329b96b9b6b077c67ca6
5
5
  SHA512:
6
- metadata.gz: 1b533cb96f4274645663d55e5b2ff5784784490f72baa34925791914c95b76724b06a9f7b64873e8c5f5f85f64622b26256bff7f5cd7caa1f29c3f9906dc4d88
7
- data.tar.gz: e9ce3d9dbb5d1efbc757e032df5809cc5aad64bdd4ee5eaaf7097ff4f437b0a16536367867e72475a4e019bf759ac81dcc7aaeedbe1e313b5d1760debc3e4856
6
+ metadata.gz: b6a5d3844c8d1f2d24b6f6c7306f8f2338ebfba347df06108539e09771ea10d3fc453f47b976cd05ffda0addda6ce57fbaeebdb96b0671efa10a6518fbc14627
7
+ data.tar.gz: ff44a1804d9691fa8ffd445b5115d00c6e0b42adf403681aeb741bb71bae9651dbf1b2b97c70035388afb1ae56771c963d9fb8bc11a718d0289869d29d6627f2
@@ -0,0 +1 @@
1
+ .DS_Store
@@ -5,17 +5,17 @@ cache:
5
5
  bundler: true
6
6
 
7
7
  rvm:
8
- - 2.3.4
9
8
  - 2.4.1
9
+ - 2.5.1
10
10
 
11
11
  env:
12
12
  matrix:
13
- - RAILS_VERSION=v5.1.0 GEM=ar:mysql2
14
- - RAILS_VERSION=v5.1.0 GEM=ar:sqlite3
15
- - RAILS_VERSION=v5.1.0 GEM=ar:postgresql
16
- - RAILS_VERSION=v5.1.1 GEM=ar:mysql2
17
- - RAILS_VERSION=v5.1.1 GEM=ar:sqlite3
18
- - RAILS_VERSION=v5.1.1 GEM=ar:postgresql
13
+ - RAILS_VERSION=v5.2.0 GEM=ar:mysql2
14
+ - RAILS_VERSION=v5.2.0 GEM=ar:sqlite3
15
+ - RAILS_VERSION=v5.2.0 GEM=ar:postgresql
16
+ - RAILS_VERSION=v5.2.1 GEM=ar:mysql2
17
+ - RAILS_VERSION=v5.2.1 GEM=ar:sqlite3
18
+ - RAILS_VERSION=v5.2.1 GEM=ar:postgresql
19
19
 
20
20
  addons:
21
21
  postgresql: "9.4"
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "https://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in sunstone.gemspec
4
+ gemspec
@@ -0,0 +1,55 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ arel-extensions (1.6.0)
5
+ arel (>= 9.0.0)
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ activemodel (5.2.1)
11
+ activesupport (= 5.2.1)
12
+ activerecord (5.2.1)
13
+ activemodel (= 5.2.1)
14
+ activesupport (= 5.2.1)
15
+ arel (>= 9.0)
16
+ activesupport (5.2.1)
17
+ concurrent-ruby (~> 1.0, >= 1.0.2)
18
+ i18n (>= 0.7, < 2)
19
+ minitest (~> 5.1)
20
+ tzinfo (~> 1.1)
21
+ ansi (1.5.0)
22
+ arel (9.0.0)
23
+ builder (3.2.3)
24
+ concurrent-ruby (1.0.5)
25
+ i18n (1.1.1)
26
+ concurrent-ruby (~> 1.0)
27
+ minitest (5.11.3)
28
+ minitest-reporters (1.3.5)
29
+ ansi
30
+ builder
31
+ minitest (>= 5.0)
32
+ ruby-progressbar
33
+ pg (1.1.3)
34
+ rake (12.3.1)
35
+ rgeo (1.0.0)
36
+ ruby-progressbar (1.10.0)
37
+ thread_safe (0.3.6)
38
+ tzinfo (1.2.5)
39
+ thread_safe (~> 0.1)
40
+
41
+ PLATFORMS
42
+ ruby
43
+
44
+ DEPENDENCIES
45
+ activerecord
46
+ arel-extensions!
47
+ bundler
48
+ minitest
49
+ minitest-reporters
50
+ pg
51
+ rake
52
+ rgeo
53
+
54
+ BUNDLED WITH
55
+ 1.16.0
@@ -0,0 +1,14 @@
1
+ require 'bundler/setup'
2
+ require "bundler/gem_tasks"
3
+ Bundler.require(:development)
4
+
5
+ require 'fileutils'
6
+ require "rake/testtask"
7
+
8
+ # Test Task
9
+ Rake::TestTask.new do |t|
10
+ t.libs << 'lib' << 'test'
11
+ t.test_files = FileList['test/**/*_test.rb']
12
+ # t.warning = true
13
+ # t.verbose = true
14
+ end
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |gem|
2
2
  gem.name = 'arel-extensions'
3
- gem.version = '1.6.0'
3
+ gem.version = '1.7.0'
4
4
 
5
5
  gem.authors = ["Jon Bracy"]
6
6
  gem.email = ["jonbracy@gmail.com"]
@@ -14,6 +14,12 @@ Gem::Specification.new do |gem|
14
14
 
15
15
  gem.add_dependency 'arel', '>= 9.0.0'
16
16
 
17
- gem.add_development_dependency 'rake'
17
+ gem.add_development_dependency "bundler"
18
+ gem.add_development_dependency "rake"
18
19
  gem.add_development_dependency 'minitest'
20
+ gem.add_development_dependency 'minitest-reporters'
21
+ gem.add_development_dependency 'pg'
22
+ gem.add_development_dependency 'rgeo'
23
+ gem.add_development_dependency 'activerecord'
24
+
19
25
  end
@@ -20,6 +20,8 @@ Arel::Attributes::Attribute.include(Arel::JSONPredications)
20
20
  require File.expand_path('../nodes/ts_vector', __FILE__)
21
21
  require File.expand_path('../nodes/ts_query', __FILE__)
22
22
  require File.expand_path('../nodes/ts_match', __FILE__)
23
+ require File.expand_path('../nodes/ts_rank', __FILE__)
24
+ require File.expand_path('../nodes/ts_rank_cd', __FILE__)
23
25
  require File.expand_path('../ts_predications', __FILE__)
24
26
  Arel::Attributes::Attribute.include(Arel::TSPredications)
25
27
 
@@ -4,7 +4,7 @@ module Arel
4
4
 
5
5
  attr_reader :expression, :language
6
6
 
7
- def initialize(expression, language)
7
+ def initialize(expression, language: nil)
8
8
  @expression = Arel::Nodes.build_quoted(expression)
9
9
  @language = Arel::Nodes.build_quoted(language) if language
10
10
  end
@@ -0,0 +1,14 @@
1
+ module Arel
2
+ module Nodes
3
+ class TSRank < Arel::Nodes::Node
4
+
5
+ attr_reader :tsvector, :tsquery
6
+
7
+ def initialize(tsvector, tsquery)
8
+ @tsvector = tsvector
9
+ @tsquery = tsquery
10
+ end
11
+
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Arel
2
+ module Nodes
3
+ class TSRankCD < Arel::Nodes::Node
4
+
5
+ attr_reader :tsvector, :tsquery
6
+
7
+ def initialize(tsvector, tsquery)
8
+ @tsvector = tsvector
9
+ @tsquery = tsquery
10
+ end
11
+
12
+ end
13
+ end
14
+ end
@@ -4,7 +4,7 @@ module Arel
4
4
 
5
5
  attr_reader :attribute, :language
6
6
 
7
- def initialize(attribute, language)
7
+ def initialize(attribute, language: nil)
8
8
  @attribute = attribute
9
9
  @language = Arel::Nodes.build_quoted(language) if language
10
10
  end
@@ -119,6 +119,24 @@ module Arel
119
119
  collector
120
120
  end
121
121
 
122
+ def visit_Arel_Nodes_TSRank(o, collector)
123
+ collector << 'ts_rank('
124
+ visit(o.tsvector, collector)
125
+ collector << ', '
126
+ visit(o.tsquery, collector)
127
+ collector << ')'
128
+ collector
129
+ end
130
+
131
+ def visit_Arel_Nodes_TSRankCD(o, collector)
132
+ collector << 'ts_rank_cd('
133
+ visit(o.tsvector, collector)
134
+ collector << ', '
135
+ visit(o.tsquery, collector)
136
+ collector << ')'
137
+ collector
138
+ end
139
+
122
140
  def visit_Arel_Nodes_HexEncodedBinary(o, collector)
123
141
  collector << "E'\\\\x"
124
142
  collector << o.expr
@@ -0,0 +1,40 @@
1
+ task = ActiveRecord::Tasks::PostgreSQLDatabaseTasks.new({
2
+ 'adapter' => 'postgresql',
3
+ 'database' => "arel-extensions-test"
4
+ })
5
+ task.drop
6
+ task.create
7
+
8
+ ActiveRecord::Base.establish_connection({
9
+ adapter: "postgresql",
10
+ database: "arel-extensions-test",
11
+ encoding: "utf8"
12
+ })
13
+
14
+ ActiveRecord::Migration.suppress_messages do
15
+ ActiveRecord::Schema.define do
16
+
17
+ create_table "addresses", force: :cascade do |t|
18
+ t.integer "name"
19
+ t.integer "property_id"
20
+ end
21
+
22
+ create_table "properties", force: :cascade do |t|
23
+ t.string "name", limit: 255
24
+ t.tsvector 'vector_col'
25
+ end
26
+
27
+ end
28
+ end
29
+
30
+ class Address < ActiveRecord::Base
31
+
32
+ belongs_to :property
33
+
34
+ end
35
+
36
+ class Property < ActiveRecord::Base
37
+
38
+ has_many :addresses
39
+
40
+ end
@@ -0,0 +1,131 @@
1
+ # To make testing/debugging easier, test within this source tree versus an
2
+ # installed gem
3
+ $LOAD_PATH << File.expand_path('../lib', __FILE__)
4
+
5
+ # require 'simplecov'
6
+ # SimpleCov.start do
7
+ # add_group 'lib', 'sunstone/lib'
8
+ # add_group 'ext', 'sunstone/ext'
9
+ # end
10
+
11
+ require 'rgeo'
12
+ require "minitest/autorun"
13
+ require 'minitest/unit'
14
+ require 'minitest/reporters'
15
+ # require 'webmock/minitest'
16
+ # require 'mocha/minitest'
17
+ require 'active_record'
18
+ require 'arel/extensions'
19
+
20
+ # Setup the test db
21
+ ActiveSupport.test_order = :random
22
+ require File.expand_path('../database', __FILE__)
23
+
24
+ Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new
25
+
26
+ $debugging = false
27
+
28
+ # File 'lib/active_support/testing/declarative.rb', somewhere in rails....
29
+ class ActiveSupport::TestCase
30
+ # include WebMock::API
31
+
32
+ # File 'lib/active_support/testing/declarative.rb'
33
+ def self.test(name, &block)
34
+ test_name = "test_#{name.gsub(/\s+/, '_')}".to_sym
35
+ defined = method_defined? test_name
36
+ raise "#{test_name} is already defined in #{self}" if defined
37
+ if block_given?
38
+ define_method(test_name, &block)
39
+ else
40
+ define_method(test_name) do
41
+ skip "No implementation provided for #{name}"
42
+ end
43
+ end
44
+ end
45
+
46
+ def webmock(method, path, query=nil)
47
+ query = deep_transform_query(query) if query
48
+
49
+ stub_request(method, /^#{ActiveRecord::Base.connection.instance_variable_get(:@connection).url}/).with do |req|
50
+ if query
51
+ req&.uri&.path == path && req.uri.query && unpack(req.uri.query.sub(/=true$/, '')) == query
52
+ else
53
+ req&.uri&.path == path && req.uri.query.nil?
54
+ end
55
+ end
56
+ end
57
+
58
+ def debug
59
+ ActiveRecord::Base.logger = Logger.new(STDOUT)
60
+ $debugging = true
61
+ yield
62
+ ensure
63
+ ActiveRecord::Base.logger = nil
64
+ $debugging = false
65
+ end
66
+
67
+
68
+ class SQLLogger
69
+ class << self
70
+ attr_accessor :ignored_sql, :log, :log_all
71
+ def clear_log; self.log = []; self.log_all = []; end
72
+ end
73
+
74
+ self.clear_log
75
+
76
+ self.ignored_sql = [/^PRAGMA/i, /^SELECT currval/i, /^SELECT CAST/i, /^SELECT @@IDENTITY/i, /^SELECT @@ROWCOUNT/i, /^SAVEPOINT/i, /^ROLLBACK TO SAVEPOINT/i, /^RELEASE SAVEPOINT/i, /^SHOW max_identifier_length/i, /^BEGIN/i, /^COMMIT/i]
77
+
78
+ # FIXME: this needs to be refactored so specific database can add their own
79
+ # ignored SQL, or better yet, use a different notification for the queries
80
+ # instead examining the SQL content.
81
+ oracle_ignored = [/^select .*nextval/i, /^SAVEPOINT/, /^ROLLBACK TO/, /^\s*select .* from all_triggers/im, /^\s*select .* from all_constraints/im, /^\s*select .* from all_tab_cols/im]
82
+ mysql_ignored = [/^SHOW FULL TABLES/i, /^SHOW FULL FIELDS/, /^SHOW CREATE TABLE /i, /^SHOW VARIABLES /, /^\s*SELECT (?:column_name|table_name)\b.*\bFROM information_schema\.(?:key_column_usage|tables)\b/im]
83
+ postgresql_ignored = [/^\s*select\b.*\bfrom\b.*pg_namespace\b/im, /^\s*select tablename\b.*from pg_tables\b/im, /^\s*select\b.*\battname\b.*\bfrom\b.*\bpg_attribute\b/im, /^SHOW search_path/i]
84
+ sqlite3_ignored = [/^\s*SELECT name\b.*\bFROM sqlite_master/im, /^\s*SELECT sql\b.*\bFROM sqlite_master/im]
85
+
86
+ [oracle_ignored, mysql_ignored, postgresql_ignored, sqlite3_ignored].each do |db_ignored_sql|
87
+ ignored_sql.concat db_ignored_sql
88
+ end
89
+
90
+ attr_reader :ignore
91
+
92
+ def initialize(ignore = Regexp.union(self.class.ignored_sql))
93
+ @ignore = ignore
94
+ end
95
+
96
+ def call(name, start, finish, message_id, values)
97
+ sql = values[:sql]
98
+
99
+ # FIXME: this seems bad. we should probably have a better way to indicate
100
+ # the query was cached
101
+ return if 'CACHE' == values[:name]
102
+
103
+ self.class.log_all << sql
104
+ unless ignore =~ sql
105
+ if $debugging
106
+ puts caller.select { |l| l.starts_with?(File.expand_path('../../lib', __FILE__)) }
107
+ puts "\n\n"
108
+ end
109
+ end
110
+ self.class.log << sql unless ignore =~ sql
111
+ end
112
+ end
113
+ ActiveSupport::Notifications.subscribe('sql.active_record', SQLLogger.new)
114
+
115
+ # test/unit backwards compatibility methods
116
+ alias :assert_raise :assert_raises
117
+ alias :assert_not_empty :refute_empty
118
+ alias :assert_not_equal :refute_equal
119
+ alias :assert_not_in_delta :refute_in_delta
120
+ alias :assert_not_in_epsilon :refute_in_epsilon
121
+ alias :assert_not_includes :refute_includes
122
+ alias :assert_not_instance_of :refute_instance_of
123
+ alias :assert_not_kind_of :refute_kind_of
124
+ alias :assert_no_match :refute_match
125
+ alias :assert_not_nil :refute_nil
126
+ alias :assert_not_operator :refute_operator
127
+ alias :assert_not_predicate :refute_predicate
128
+ alias :assert_not_respond_to :refute_respond_to
129
+ alias :assert_not_same :refute_same
130
+
131
+ end
@@ -0,0 +1,136 @@
1
+ require 'test_helper'
2
+
3
+ class TSTest < ActiveSupport::TestCase
4
+
5
+ test 'tsquery(query)' do
6
+ query = Property.where( Arel::Nodes::TSQuery.new('query') )
7
+
8
+ assert_equal(<<~SQL.gsub(/( +|\n)/, ' ').strip, query.to_sql)
9
+ SELECT "properties".* FROM "properties"
10
+ WHERE to_tsquery('query')
11
+ SQL
12
+ end
13
+
14
+ test 'tsquery(query, language: lang)' do
15
+ query = Property.where( Arel::Nodes::TSQuery.new('query', language: 'lang') )
16
+
17
+ assert_equal(<<~SQL.gsub(/( +|\n)/, ' ').strip, query.to_sql)
18
+ SELECT "properties".* FROM "properties"
19
+ WHERE to_tsquery('lang', 'query')
20
+ SQL
21
+ end
22
+
23
+ test 'tsvector(attribute)' do
24
+ query = Property.where( Arel::Nodes::TSVector.new(Property.arel_table[:name]) )
25
+
26
+ assert_equal(<<~SQL.gsub(/( +|\n)/, ' ').strip, query.to_sql)
27
+ SELECT "properties".* FROM "properties"
28
+ WHERE to_tsvector("properties"."name")
29
+ SQL
30
+ end
31
+
32
+ test 'tsvector(text)' do
33
+ query = Property.where( Arel::Nodes::TSVector.new(
34
+ Arel::Nodes::Quoted.new("my data O'Malley")
35
+ ))
36
+
37
+ assert_equal(<<~SQL.gsub(/( +|\n)/, ' ').strip, query.to_sql)
38
+ SELECT "properties".* FROM "properties"
39
+ WHERE to_tsvector('my data O''Malley')
40
+ SQL
41
+ end
42
+
43
+ test 'tsvector(attribute, language: lang)' do
44
+ query = Property.where( Arel::Nodes::TSVector.new(Property.arel_table[:name], language: 'lang') )
45
+
46
+ assert_equal(<<~SQL.gsub(/( +|\n)/, ' ').strip, query.to_sql)
47
+ SELECT "properties".* FROM "properties"
48
+ WHERE to_tsvector('lang', "properties"."name")
49
+ SQL
50
+ end
51
+
52
+ test 'ts_match(attrbute, tsquery)' do
53
+ query = Property.where(
54
+ Arel::Nodes::TSMatch.new(
55
+ Property.arel_table[:name],
56
+ Arel::Nodes::TSQuery.new('query')
57
+ )
58
+ )
59
+
60
+ assert_equal(<<~SQL.gsub(/( +|\n)/, ' ').strip, query.to_sql)
61
+ SELECT "properties".* FROM "properties"
62
+ WHERE "properties"."name" @@ to_tsquery('query')
63
+ SQL
64
+ end
65
+
66
+ test 'ts_match(tsvector, tsquery)' do
67
+ query = Property.where(
68
+ Arel::Nodes::TSMatch.new(
69
+ Arel::Nodes::TSVector.new(Property.arel_table[:name]),
70
+ Arel::Nodes::TSQuery.new('query')
71
+ )
72
+ )
73
+
74
+ assert_equal(<<~SQL.gsub(/( +|\n)/, ' ').strip, query.to_sql)
75
+ SELECT "properties".* FROM "properties"
76
+ WHERE to_tsvector("properties"."name") @@ to_tsquery('query')
77
+ SQL
78
+ end
79
+
80
+ test 'ts_rank(attribute, tsquery)' do
81
+ query = Property.where(
82
+ Arel::Nodes::TSRank.new(
83
+ Property.arel_table[:name],
84
+ Arel::Nodes::TSQuery.new('query')
85
+ )
86
+ )
87
+
88
+ assert_equal(<<~SQL.gsub(/( +|\n)/, ' ').strip, query.to_sql)
89
+ SELECT "properties".* FROM "properties"
90
+ WHERE ts_rank("properties"."name", to_tsquery('query'))
91
+ SQL
92
+ end
93
+
94
+ test 'ts_rank(tsvector, tsquery)' do
95
+ query = Property.where(
96
+ Arel::Nodes::TSRank.new(
97
+ Arel::Nodes::TSVector.new(Property.arel_table[:name]),
98
+ Arel::Nodes::TSQuery.new('query')
99
+ )
100
+ )
101
+
102
+ assert_equal(<<~SQL.gsub(/( +|\n)/, ' ').strip, query.to_sql)
103
+ SELECT "properties".* FROM "properties"
104
+ WHERE ts_rank(to_tsvector("properties"."name"), to_tsquery('query'))
105
+ SQL
106
+ end
107
+
108
+ test 'ts_rank_cd(attribute, tsquery)' do
109
+ query = Property.where(
110
+ Arel::Nodes::TSRankCD.new(
111
+ Property.arel_table[:name],
112
+ Arel::Nodes::TSQuery.new('query')
113
+ )
114
+ )
115
+
116
+ assert_equal(<<~SQL.gsub(/( +|\n)/, ' ').strip, query.to_sql)
117
+ SELECT "properties".* FROM "properties"
118
+ WHERE ts_rank_cd("properties"."name", to_tsquery('query'))
119
+ SQL
120
+ end
121
+
122
+ test 'ts_rank_cd(tsvector, tsquery)' do
123
+ query = Property.where(
124
+ Arel::Nodes::TSRankCD.new(
125
+ Arel::Nodes::TSVector.new(Property.arel_table[:name]),
126
+ Arel::Nodes::TSQuery.new('query')
127
+ )
128
+ )
129
+
130
+ assert_equal(<<~SQL.gsub(/( +|\n)/, ' ').strip, query.to_sql)
131
+ SELECT "properties".* FROM "properties"
132
+ WHERE ts_rank_cd(to_tsvector("properties"."name"), to_tsquery('query'))
133
+ SQL
134
+ end
135
+
136
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: arel-extensions
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.0
4
+ version: 1.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jon Bracy
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-03-06 00:00:00.000000000 Z
11
+ date: 2018-11-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: arel
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: 9.0.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: rake
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -52,6 +66,62 @@ dependencies:
52
66
  - - ">="
53
67
  - !ruby/object:Gem::Version
54
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: minitest-reporters
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: pg
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rgeo
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'
111
+ - !ruby/object:Gem::Dependency
112
+ name: activerecord
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
55
125
  description:
56
126
  email:
57
127
  - jonbracy@gmail.com
@@ -59,9 +129,13 @@ executables: []
59
129
  extensions: []
60
130
  extra_rdoc_files: []
61
131
  files:
132
+ - ".gitignore"
62
133
  - ".travis.yml"
134
+ - Gemfile
135
+ - Gemfile.lock
63
136
  - LICENSE
64
137
  - README.md
138
+ - Rakefile
65
139
  - arel-extensions.gemspec
66
140
  - lib/active_record/query_methods.rb
67
141
  - lib/arel/array_predications.rb
@@ -80,11 +154,16 @@ files:
80
154
  - lib/arel/nodes/overlaps.rb
81
155
  - lib/arel/nodes/ts_match.rb
82
156
  - lib/arel/nodes/ts_query.rb
157
+ - lib/arel/nodes/ts_rank.rb
158
+ - lib/arel/nodes/ts_rank_cd.rb
83
159
  - lib/arel/nodes/ts_vector.rb
84
160
  - lib/arel/nodes/within.rb
85
161
  - lib/arel/ts_predications.rb
86
162
  - lib/arel/visitors/postgresql_extensions.rb
87
163
  - lib/arel/visitors/sunstone_extensions.rb
164
+ - test/database.rb
165
+ - test/test_helper.rb
166
+ - test/ts_test.rb
88
167
  homepage: https://github.com/malomalo/arel-extensions
89
168
  licenses:
90
169
  - MIT
@@ -109,4 +188,7 @@ rubygems_version: 2.7.4
109
188
  signing_key:
110
189
  specification_version: 4
111
190
  summary: Adds support for missing SQL operators and functions to Arel
112
- test_files: []
191
+ test_files:
192
+ - test/database.rb
193
+ - test/test_helper.rb
194
+ - test/ts_test.rb