scoped_search 3.2.2 → 3.3.0
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 +4 -4
- data/.travis.yml +15 -4
- data/CHANGELOG.rdoc +4 -0
- data/Gemfile.activerecord50 +16 -0
- data/lib/scoped_search/auto_complete_builder.rb +2 -2
- data/lib/scoped_search/definition.rb +13 -1
- data/lib/scoped_search/query_builder.rb +6 -3
- data/lib/scoped_search/version.rb +1 -1
- data/spec/integration/auto_complete_spec.rb +2 -1
- data/spec/unit/query_builder_spec.rb +11 -0
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8d62827c492fb99894adbd0b01e0a1341c6744a5
|
4
|
+
data.tar.gz: 2ee3ede28bcd6b96e12ca1a7629b7cbef38aee4d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9e26efdc791ad2fde5e975f44c8512a5089c4774f41f299e68f2c03fab3657323be4668e0668deb86f448dce2b02fe92b95d8d180cfff76b6f7dacd6e4bb01df
|
7
|
+
data.tar.gz: 206daf327aa65a9de4b2ac8ed049620b4df5c4b71330b846413c9140d0f83aed95f612db37d9154d624d2f8c3a54a8d9fd785e41a76fa9e223b0b4e9b81a7497
|
data/.travis.yml
CHANGED
@@ -14,7 +14,8 @@ rvm:
|
|
14
14
|
- "1.9"
|
15
15
|
- "2.0"
|
16
16
|
- "2.1"
|
17
|
-
- "2.2"
|
17
|
+
- "2.2.2"
|
18
|
+
- "2.3.1"
|
18
19
|
- ruby-head
|
19
20
|
- jruby-19mode
|
20
21
|
- jruby-head
|
@@ -24,9 +25,19 @@ gemfile:
|
|
24
25
|
- Gemfile.activerecord40
|
25
26
|
- Gemfile.activerecord41
|
26
27
|
- Gemfile.activerecord42
|
28
|
+
- Gemfile.activerecord50
|
27
29
|
|
28
30
|
matrix:
|
29
31
|
allow_failures:
|
30
|
-
|
31
|
-
|
32
|
-
|
32
|
+
- rvm: ruby-head
|
33
|
+
- rvm: jruby-head
|
34
|
+
- rvm: jruby-19mode
|
35
|
+
exclude:
|
36
|
+
- rvm: "1.9"
|
37
|
+
gemfile: Gemfile.activerecord50
|
38
|
+
- rvm: "2.0"
|
39
|
+
gemfile: Gemfile.activerecord50
|
40
|
+
- rvm: "2.1"
|
41
|
+
gemfile: Gemfile.activerecord50
|
42
|
+
- rvm: "2.3.1"
|
43
|
+
gemfile: Gemfile.activerecord32
|
data/CHANGELOG.rdoc
CHANGED
@@ -8,6 +8,10 @@ Please add an entry to the "Unreleased changes" section in your pull requests.
|
|
8
8
|
|
9
9
|
*Nothing yet*
|
10
10
|
|
11
|
+
=== Version 3.3.0
|
12
|
+
|
13
|
+
- Support for ActiveRecord 5.0
|
14
|
+
|
11
15
|
=== Version 3.2.0
|
12
16
|
|
13
17
|
- In MySQL, case sensitivity is now determined by the collation of the column, and
|
@@ -0,0 +1,16 @@
|
|
1
|
+
source 'https://rubygems.org'
|
2
|
+
gemspec
|
3
|
+
|
4
|
+
gem 'activerecord', '5.0.0.rc1'
|
5
|
+
|
6
|
+
platforms :jruby do
|
7
|
+
gem 'activerecord-jdbcsqlite3-adapter'
|
8
|
+
gem 'activerecord-jdbcmysql-adapter'
|
9
|
+
gem 'activerecord-jdbcpostgresql-adapter'
|
10
|
+
end
|
11
|
+
|
12
|
+
platforms :ruby do
|
13
|
+
gem 'sqlite3'
|
14
|
+
gem 'mysql2', '~> 0.3.11'
|
15
|
+
gem 'pg'
|
16
|
+
end
|
@@ -178,10 +178,10 @@ module ScopedSearch
|
|
178
178
|
.where(value_conditions(field_name, val))
|
179
179
|
.select(field_name)
|
180
180
|
.limit(20)
|
181
|
+
.uniq
|
181
182
|
.map(&field.key_field)
|
182
183
|
.compact
|
183
184
|
.map { |f| "#{name}.#{f} " }
|
184
|
-
.uniq
|
185
185
|
end
|
186
186
|
|
187
187
|
# this method auto-completes values of fields that have a :complete_value marker
|
@@ -205,10 +205,10 @@ module ScopedSearch
|
|
205
205
|
.where(value_conditions(field.quoted_field, val))
|
206
206
|
.select(field.quoted_field)
|
207
207
|
.limit(20)
|
208
|
+
.uniq
|
208
209
|
.map(&field.field)
|
209
210
|
.compact
|
210
211
|
.map { |v| v.to_s =~ /\s/ ? "\"#{v}\"" : v }
|
211
|
-
.uniq
|
212
212
|
end
|
213
213
|
|
214
214
|
def completer_scope(field)
|
@@ -250,7 +250,19 @@ module ScopedSearch
|
|
250
250
|
def register_named_scope! # :nodoc
|
251
251
|
definition = self
|
252
252
|
@klass.scope(:search_for, proc { |query, options|
|
253
|
-
|
253
|
+
klass = definition.klass
|
254
|
+
|
255
|
+
search_scope = case ActiveRecord::VERSION::MAJOR
|
256
|
+
when 3
|
257
|
+
klass.scoped
|
258
|
+
when 4
|
259
|
+
(ActiveRecord::VERSION::MINOR < 1) ? klass.where(nil) : klass.all
|
260
|
+
when 5
|
261
|
+
klass.all
|
262
|
+
else
|
263
|
+
raise ScopedSearch::DefinitionError, 'version ' \
|
264
|
+
"#{ActiveRecord::VERSION::MAJOR} of activerecord is not supported"
|
265
|
+
end
|
254
266
|
|
255
267
|
find_options = ScopedSearch::QueryBuilder.build_query(definition, query || '', options || {})
|
256
268
|
search_scope = search_scope.where(find_options[:conditions]) if find_options[:conditions]
|
@@ -28,9 +28,12 @@ module ScopedSearch
|
|
28
28
|
# Loads the QueryBuilder class for the connection of the given definition.
|
29
29
|
# If no specific adapter is found, the default QueryBuilder class is returned.
|
30
30
|
def self.class_for(definition)
|
31
|
-
|
32
|
-
|
33
|
-
|
31
|
+
case definition.klass.connection.class.name.split('::').last
|
32
|
+
when /postgresql/i
|
33
|
+
PostgreSQLAdapter
|
34
|
+
else
|
35
|
+
self
|
36
|
+
end
|
34
37
|
end
|
35
38
|
|
36
39
|
# Initializes the instance by setting the relevant parameters
|
@@ -52,6 +52,7 @@ ScopedSearch::RSpec::Database.test_databases.each do |db|
|
|
52
52
|
@foo_1 = Foo.create!(:string => 'foo', :another => 'temp 1', :explicit => 'baz', :int => 9 , :date => 'February 8, 2011' , :unindexed => 10)
|
53
53
|
Foo.create!(:string => 'bar', :another => 'temp 2', :explicit => 'baz', :int => 22 , :date => 'February 10, 2011', :unindexed => 10)
|
54
54
|
Foo.create!(:string => 'baz', :another => nil, :explicit => nil , :int => nil, :date => nil , :unindexed => nil)
|
55
|
+
20.times { Foo.create!(:explicit => "aaa") }
|
55
56
|
|
56
57
|
Bar.create!(:related => 'lala', :foo => @foo_1)
|
57
58
|
Bar.create!(:related => 'another lala', :foo => @foo_1)
|
@@ -136,7 +137,7 @@ ScopedSearch::RSpec::Database.test_databases.each do |db|
|
|
136
137
|
|
137
138
|
context 'value auto complete' do
|
138
139
|
it "should complete values list of values " do
|
139
|
-
Foo.complete_for('explicit = ').length.should ==
|
140
|
+
Foo.complete_for('explicit = ').length.should == 2
|
140
141
|
end
|
141
142
|
|
142
143
|
it "should complete values should contain baz" do
|
@@ -8,6 +8,7 @@ describe ScopedSearch::QueryBuilder do
|
|
8
8
|
@definition.stub(:profile).and_return(:default)
|
9
9
|
@definition.stub(:default_order).and_return(nil)
|
10
10
|
@definition.stub(:profile=).and_return(true)
|
11
|
+
@definition.klass.stub(:connection).and_return(double())
|
11
12
|
end
|
12
13
|
|
13
14
|
it "should raise an ArgumentError if the query is not set" do
|
@@ -22,4 +23,14 @@ describe ScopedSearch::QueryBuilder do
|
|
22
23
|
ScopedSearch::QueryBuilder.build_query(@definition, "\t ").should == { }
|
23
24
|
end
|
24
25
|
|
26
|
+
it "should use default adapter when connection type is unknown" do
|
27
|
+
ScopedSearch::QueryBuilder.class_for(@definition).should == ScopedSearch::QueryBuilder
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should use postgres adapter for postgres-like connection" do
|
31
|
+
connection = double()
|
32
|
+
connection.stub("name").and_return("SomePostgreSQLAdapter")
|
33
|
+
@definition.klass.connection.stub("class").and_return(connection)
|
34
|
+
ScopedSearch::QueryBuilder.class_for(@definition).should == ScopedSearch::QueryBuilder::PostgreSQLAdapter
|
35
|
+
end
|
25
36
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: scoped_search
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Amos Benari
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2016-08-09 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activerecord
|
@@ -86,6 +86,7 @@ files:
|
|
86
86
|
- Gemfile.activerecord40
|
87
87
|
- Gemfile.activerecord41
|
88
88
|
- Gemfile.activerecord42
|
89
|
+
- Gemfile.activerecord50
|
89
90
|
- LICENSE
|
90
91
|
- README.rdoc
|
91
92
|
- Rakefile
|
@@ -153,7 +154,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
153
154
|
version: '0'
|
154
155
|
requirements: []
|
155
156
|
rubyforge_project:
|
156
|
-
rubygems_version: 2.0.14
|
157
|
+
rubygems_version: 2.0.14.1
|
157
158
|
signing_key:
|
158
159
|
specification_version: 4
|
159
160
|
summary: Easily search you ActiveRecord models with a simple query language using
|