algoliasearch-rails 1.20.6 → 1.21.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: 38fe24b0c83678a9d4c08faf6faac62a894970be01fa7739b33ef8da116588ed
4
- data.tar.gz: 8d01bb4274a36b989f9c021245e9aa2f6495ed07fd1bc05351aca9eb7f4953c1
3
+ metadata.gz: 1eb55772f506326a5847dbc0ebee0674f23c8a382b3eea7c3fddc01b9039150d
4
+ data.tar.gz: f41c8aa08a1d28ddf8f88643bb5e6231e4f447e49ff21714d0b803e6c0567394
5
5
  SHA512:
6
- metadata.gz: ac5bbe58eb801e574af5c7a7155bfed178928ffec9065a2845aa6d9189eaca677f103891c3e61a2be38cd7766e1685c32fba9050ea20f2b7fb103923e755ce1a
7
- data.tar.gz: 2a235e08fc3d7d8620dac3048df6b6e9936b00ce27858f3020296dd98c44ff892f76ea255476be2c6cb835ef6458011d6d21d89fcc0d1ab89e37e214c32681bd
6
+ metadata.gz: 8c763ac336f5cb507a73dbaf5b1d2be086bef6260054c3887bf2d7fa568fb513e8611151a2adfedf1f9b52d738e3cf2cb626eb9e44439a9dea2715fea501ced0
7
+ data.tar.gz: 7df4726bca1c2d10aa9037d83da3a7d15684d39d429db8f5bda5b25b722edbe4c3d41538d58f96e1874a5acd5e33a3ccc6ba0437ca3b9373cdde35da63b8dd23
@@ -1,61 +1,53 @@
1
1
  language: ruby
2
+
2
3
  branches:
3
4
  only:
4
- - master
5
+ - master
6
+
5
7
  matrix:
6
8
  include:
7
- - rvm: 1.8.7
8
- env: RAILS_VERSION=3.2.0
9
- - rvm: 1.9.3
10
- env: RAILS_VERSION=3.2.0
11
- - rvm: 1.9.3
12
- env: RAILS_VERSION=4.2
13
- - rvm: 2.2.9
14
- env: RAILS_VERSION=3.2.0
15
- - rvm: 2.2.9
16
- env: RAILS_VERSION=4.2
17
- - rvm: 2.2.9
18
- env: RAILS_VERSION=5.1
19
- - rvm: 2.3.6
20
- env: RAILS_VERSION=3.2.0
21
- - rvm: 2.3.6
22
- env: RAILS_VERSION=4.2
23
- - rvm: 2.3.6
24
- env: RAILS_VERSION=5.1
25
- - rvm: 2.4.3
26
- env: RAILS_VERSION=4.2
27
- - rvm: 2.4.3
28
- env: RAILS_VERSION=5.1 SEQUEL_VERSION=4.0
29
- - rvm: 2.4.3
30
- env: RAILS_VERSION=5.1 SEQUEL_VERSION=5.0
31
- - rvm: 2.5.0
32
- env: RAILS_VERSION=4.2
33
- - rvm: 2.5.0
34
- env: RAILS_VERSION=5.1 SEQUEL_VERSION=4.0
35
- - rvm: 2.5.0
36
- env: RAILS_VERSION=5.1 SEQUEL_VERSION=5.0
37
- # - rvm: jruby-9.1.2.0
38
- # env: RAILS_VERSION=3.2.0
39
- # - rvm: jruby-9.1.2.0
40
- # env: RAILS_VERSION=4.2
41
- # - rvm: jruby-9.1.2.0
42
- # env: RAILS_VERSION=5.0
43
- # - rvm: rbx-2
44
- # env: RAILS_VERSION=3.2.0
45
- # - rvm: rbx-2
46
- # env: RAILS_VERSION=4.2
47
- # - rvm: rbx-3.20
48
- # env: RAILS_VERSION=3.2.0
49
- # - rvm: rbx-3.20
50
- # env: RAILS_VERSION=4.2
51
- # - rvm: rbx-3.20
52
- # env: RAILS_VERSION=5.0
53
- allow_failures:
54
- - rvm: rbx-2
9
+ - rvm: 1.8.7
10
+ env: RAILS_VERSION=3.2.0 SEQUEL_VERSION=4.0
11
+ - rvm: 1.9.3
12
+ env: RAILS_VERSION=3.2.0
13
+ - rvm: 1.9.3
14
+ env: RAILS_VERSION=4.2
15
+ - rvm: 2.2.9
16
+ env: RAILS_VERSION=3.2.0
17
+ - rvm: 2.2.9
18
+ env: RAILS_VERSION=4.2
19
+ - rvm: 2.2.9
20
+ env: RAILS_VERSION=5.1
21
+ - rvm: 2.3.6
22
+ env: RAILS_VERSION=3.2.0
23
+ - rvm: 2.3.6
24
+ env: RAILS_VERSION=4.2
25
+ - rvm: 2.3.6
26
+ env: RAILS_VERSION=5.1
27
+ - rvm: 2.4.3
28
+ env: RAILS_VERSION=4.2
29
+ - rvm: 2.4.3
30
+ env: RAILS_VERSION=5.1 SEQUEL_VERSION=4.0
31
+ - rvm: 2.4.3
32
+ env: RAILS_VERSION=5.1 SEQUEL_VERSION=5.0
33
+ - rvm: 2.5.3
34
+ env: RAILS_VERSION=5.1 SEQUEL_VERSION=5.0
35
+ - rvm: 2.6.0
36
+ env: RAILS_VERSION=5.2 SEQUEL_VERSION=5.0
37
+
55
38
  before_install:
56
39
  - wget http://api-key-dealer.herokuapp.com/clients/algolia-keys && chmod +x algolia-keys
57
- - gem install bundler
40
+ - which bundle || true
41
+ - find /home/travis/.rvm -wholename "*/bundler-*.gemspec" -print -delete || true
42
+ - bundle --version || true
43
+ - gem uninstall bundler || true
44
+ - bundle --version || true
45
+ - gem install bundler -v 1.17.3
58
46
  - bundle --version
47
+
59
48
  install: rm -f Gemfile.lock && bundle install --without development
49
+
60
50
  cache: bundler
61
- script: eval $(./algolia-keys export) && bundle exec rake
51
+
52
+ script:
53
+ - eval $(./algolia-keys export) && bundle exec rake
data/ChangeLog CHANGED
@@ -1,5 +1,35 @@
1
1
  CHANGELOG
2
2
 
3
+ ## [1.21.0](https://github.com/algolia/algoliasearch-rails/releases/tag/1.21.0) (2019-02-12)
4
+
5
+ **Added**
6
+
7
+ * Add `AlgoliaSearch::IndexSettings::DEFAULT_BATCH_SIZE` constant - PR [#319](https://github.com/algolia/algoliasearch-rails/pull/319)
8
+
9
+ * Support ActiveModel Serializer 🎉 - PR [#266](https://github.com/algolia/algoliasearch-rails/pull/266)
10
+
11
+ ```ruby
12
+ class SerializedObject < ActiveRecord::Base
13
+ include AlgoliaSearch
14
+
15
+ algoliasearch do
16
+
17
+ use_serializer SerializedObjectSerializer
18
+
19
+ tags do
20
+ ['tag1', 'tag2']
21
+ end
22
+
23
+ end
24
+ end
25
+ ```
26
+
27
+ **Fixed**
28
+
29
+ * Add support for all new recent engine settings - PR [#327](https://github.com/algolia/algoliasearch-rails/pull/327)
30
+
31
+ Algolia regularly introduce new settings, all of them are supported by this gem.
32
+
3
33
  2018-12-07 1.20.6
4
34
 
5
35
  * Better support for Rails 5.1 and deprecated `attribute_changed?`
data/Gemfile CHANGED
@@ -10,6 +10,7 @@ end
10
10
  group :test do
11
11
  rails_version = ENV["RAILS_VERSION"] ? "~> #{ENV["RAILS_VERSION"]}" : '>= 3.2.0'
12
12
  gem 'rails', rails_version
13
+ gem 'active_model_serializers'
13
14
  if defined?(RUBY_VERSION) && RUBY_VERSION == "1.8.7"
14
15
  gem 'i18n', '< 0.7'
15
16
  gem 'highline', '< 1.7'
@@ -20,7 +21,7 @@ group :test do
20
21
  gem 'faraday', '< 0.10'
21
22
  elsif defined?(RUBY_VERSION) && RUBY_VERSION == "1.9.3"
22
23
  gem 'rack', '< 2'
23
- gem 'nokogiri', '< 1.7.0'
24
+ gem 'rack-cache', '<= 1.7.1'
24
25
  if Gem::Version.new(ENV['RAILS_VERSION'] || '3.2.0') >= Gem::Version.new('4.0')
25
26
  gem 'mime-types', '~> 2.6'
26
27
  else
@@ -34,7 +35,7 @@ group :test do
34
35
  gem 'net-http-persistent', '< 3.0'
35
36
  end
36
37
  gem 'rspec', '>= 2.5.0', '< 3.0'
37
- gem 'sqlite3', :platform => [:rbx, :ruby]
38
+ gem 'sqlite3', '< 1.4.0', :platform => [:rbx, :ruby]
38
39
  gem 'jdbc-sqlite3', :platform => :jruby
39
40
  gem 'activerecord-jdbc-adapter', :platform => :jruby
40
41
  gem 'activerecord-jdbcsqlite3-adapter', :platform => :jruby
@@ -61,3 +62,4 @@ group :test, :development do
61
62
  gem 'kaminari'
62
63
  end
63
64
  end
65
+
@@ -1,56 +1,68 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
- actioncable (5.0.2)
5
- actionpack (= 5.0.2)
6
- nio4r (>= 1.2, < 3.0)
7
- websocket-driver (~> 0.6.1)
8
- actionmailer (5.0.2)
9
- actionpack (= 5.0.2)
10
- actionview (= 5.0.2)
11
- activejob (= 5.0.2)
4
+ actioncable (5.2.2)
5
+ actionpack (= 5.2.2)
6
+ nio4r (~> 2.0)
7
+ websocket-driver (>= 0.6.1)
8
+ actionmailer (5.2.2)
9
+ actionpack (= 5.2.2)
10
+ actionview (= 5.2.2)
11
+ activejob (= 5.2.2)
12
12
  mail (~> 2.5, >= 2.5.4)
13
13
  rails-dom-testing (~> 2.0)
14
- actionpack (5.0.2)
15
- actionview (= 5.0.2)
16
- activesupport (= 5.0.2)
14
+ actionpack (5.2.2)
15
+ actionview (= 5.2.2)
16
+ activesupport (= 5.2.2)
17
17
  rack (~> 2.0)
18
- rack-test (~> 0.6.3)
18
+ rack-test (>= 0.6.3)
19
19
  rails-dom-testing (~> 2.0)
20
20
  rails-html-sanitizer (~> 1.0, >= 1.0.2)
21
- actionview (5.0.2)
22
- activesupport (= 5.0.2)
21
+ actionview (5.2.2)
22
+ activesupport (= 5.2.2)
23
23
  builder (~> 3.1)
24
- erubis (~> 2.7.0)
24
+ erubi (~> 1.4)
25
25
  rails-dom-testing (~> 2.0)
26
26
  rails-html-sanitizer (~> 1.0, >= 1.0.3)
27
- activejob (5.0.2)
28
- activesupport (= 5.0.2)
27
+ active_model_serializers (0.10.8)
28
+ actionpack (>= 4.1, < 6)
29
+ activemodel (>= 4.1, < 6)
30
+ case_transform (>= 0.2)
31
+ jsonapi-renderer (>= 0.1.1.beta1, < 0.3)
32
+ activejob (5.2.2)
33
+ activesupport (= 5.2.2)
29
34
  globalid (>= 0.3.6)
30
- activemodel (5.0.2)
31
- activesupport (= 5.0.2)
32
- activerecord (5.0.2)
33
- activemodel (= 5.0.2)
34
- activesupport (= 5.0.2)
35
- arel (~> 7.0)
36
- activesupport (5.0.2)
35
+ activemodel (5.2.2)
36
+ activesupport (= 5.2.2)
37
+ activerecord (5.2.2)
38
+ activemodel (= 5.2.2)
39
+ activesupport (= 5.2.2)
40
+ arel (>= 9.0)
41
+ activestorage (5.2.2)
42
+ actionpack (= 5.2.2)
43
+ activerecord (= 5.2.2)
44
+ marcel (~> 0.3.1)
45
+ activesupport (5.2.2)
37
46
  concurrent-ruby (~> 1.0, >= 1.0.2)
38
- i18n (~> 0.7)
47
+ i18n (>= 0.7, < 2)
39
48
  minitest (~> 5.1)
40
49
  tzinfo (~> 1.1)
41
50
  addressable (2.4.0)
42
- algoliasearch (1.23.2)
51
+ algoliasearch (1.25.2)
43
52
  httpclient (~> 2.8, >= 2.8.3)
44
53
  json (>= 1.5.1)
45
- arel (7.1.4)
46
- backports (3.11.1)
54
+ arel (9.0.0)
55
+ backports (3.11.4)
47
56
  builder (3.2.3)
48
- concurrent-ruby (1.0.5)
57
+ case_transform (0.2)
58
+ activesupport
59
+ concurrent-ruby (1.1.4)
60
+ crass (1.0.4)
49
61
  diff-lcs (1.3)
50
- erubis (2.7.0)
62
+ erubi (1.8.0)
51
63
  ethon (0.11.0)
52
64
  ffi (>= 1.3.0)
53
- faraday (0.15.2)
65
+ faraday (0.15.4)
54
66
  multipart-post (>= 1.2, < 3)
55
67
  faraday_middleware (0.12.2)
56
68
  faraday (>= 0.7.4, < 1.0)
@@ -62,75 +74,79 @@ GEM
62
74
  multi_json (~> 1.0)
63
75
  net-http-persistent (~> 2.9)
64
76
  net-http-pipeline
65
- globalid (0.3.7)
66
- activesupport (>= 4.1.0)
77
+ globalid (0.4.1)
78
+ activesupport (>= 4.2.0)
67
79
  highline (1.7.10)
68
80
  httpclient (2.8.3)
69
- i18n (0.9.5)
81
+ i18n (1.4.0)
70
82
  concurrent-ruby (~> 1.0)
71
83
  json (1.8.6)
72
- kaminari (1.0.1)
84
+ jsonapi-renderer (0.2.0)
85
+ kaminari (1.1.1)
73
86
  activesupport (>= 4.1.0)
74
- kaminari-actionview (= 1.0.1)
75
- kaminari-activerecord (= 1.0.1)
76
- kaminari-core (= 1.0.1)
77
- kaminari-actionview (1.0.1)
87
+ kaminari-actionview (= 1.1.1)
88
+ kaminari-activerecord (= 1.1.1)
89
+ kaminari-core (= 1.1.1)
90
+ kaminari-actionview (1.1.1)
78
91
  actionview
79
- kaminari-core (= 1.0.1)
80
- kaminari-activerecord (1.0.1)
92
+ kaminari-core (= 1.1.1)
93
+ kaminari-activerecord (1.1.1)
81
94
  activerecord
82
- kaminari-core (= 1.0.1)
83
- kaminari-core (1.0.1)
95
+ kaminari-core (= 1.1.1)
96
+ kaminari-core (1.1.1)
84
97
  launchy (2.4.3)
85
98
  addressable (~> 2.3)
86
- loofah (2.0.3)
99
+ loofah (2.2.3)
100
+ crass (~> 1.0.2)
87
101
  nokogiri (>= 1.5.9)
88
- mail (2.6.4)
89
- mime-types (>= 1.16, < 4)
90
- method_source (0.9.0)
91
- mime-types (3.1)
92
- mime-types-data (~> 3.2015)
93
- mime-types-data (3.2016.0521)
94
- mini_portile2 (2.3.0)
102
+ mail (2.7.1)
103
+ mini_mime (>= 0.1.1)
104
+ marcel (0.3.3)
105
+ mimemagic (~> 0.3.2)
106
+ method_source (0.9.2)
107
+ mimemagic (0.3.3)
108
+ mini_mime (1.0.1)
109
+ mini_portile2 (2.4.0)
95
110
  minitest (5.11.3)
96
111
  multi_json (1.13.1)
97
112
  multipart-post (2.0.0)
98
113
  net-http-persistent (2.9.4)
99
114
  net-http-pipeline (1.0.1)
100
- nio4r (2.0.0)
101
- nokogiri (1.8.4)
102
- mini_portile2 (~> 2.3.0)
115
+ nio4r (2.3.1)
116
+ nokogiri (1.9.1)
117
+ mini_portile2 (~> 2.4.0)
103
118
  pusher-client (0.6.2)
104
119
  json
105
120
  websocket (~> 1.0)
106
- rack (2.0.3)
107
- rack-test (0.6.3)
108
- rack (>= 1.0)
109
- rails (5.0.2)
110
- actioncable (= 5.0.2)
111
- actionmailer (= 5.0.2)
112
- actionpack (= 5.0.2)
113
- actionview (= 5.0.2)
114
- activejob (= 5.0.2)
115
- activemodel (= 5.0.2)
116
- activerecord (= 5.0.2)
117
- activesupport (= 5.0.2)
118
- bundler (>= 1.3.0, < 2.0)
119
- railties (= 5.0.2)
121
+ rack (2.0.6)
122
+ rack-test (1.1.0)
123
+ rack (>= 1.0, < 3)
124
+ rails (5.2.2)
125
+ actioncable (= 5.2.2)
126
+ actionmailer (= 5.2.2)
127
+ actionpack (= 5.2.2)
128
+ actionview (= 5.2.2)
129
+ activejob (= 5.2.2)
130
+ activemodel (= 5.2.2)
131
+ activerecord (= 5.2.2)
132
+ activestorage (= 5.2.2)
133
+ activesupport (= 5.2.2)
134
+ bundler (>= 1.3.0)
135
+ railties (= 5.2.2)
120
136
  sprockets-rails (>= 2.0.0)
121
- rails-dom-testing (2.0.2)
122
- activesupport (>= 4.2.0, < 6.0)
123
- nokogiri (~> 1.6)
124
- rails-html-sanitizer (1.0.3)
125
- loofah (~> 2.0)
126
- railties (5.0.2)
127
- actionpack (= 5.0.2)
128
- activesupport (= 5.0.2)
137
+ rails-dom-testing (2.0.3)
138
+ activesupport (>= 4.2.0)
139
+ nokogiri (>= 1.6)
140
+ rails-html-sanitizer (1.0.4)
141
+ loofah (~> 2.2, >= 2.2.2)
142
+ railties (5.2.2)
143
+ actionpack (= 5.2.2)
144
+ activesupport (= 5.2.2)
129
145
  method_source
130
146
  rake (>= 0.8.7)
131
- thor (>= 0.18.1, < 2.0)
147
+ thor (>= 0.19.0, < 2.0)
132
148
  rake (10.1.1)
133
- rdoc (6.0.4)
149
+ rdoc (6.1.1)
134
150
  redgreen (1.2.2)
135
151
  rspec (2.99.0)
136
152
  rspec-core (~> 2.99.0)
@@ -140,18 +156,18 @@ GEM
140
156
  rspec-expectations (2.99.2)
141
157
  diff-lcs (>= 1.1.3, < 2.0)
142
158
  rspec-mocks (2.99.4)
143
- sequel (4.49.0)
144
- sprockets (3.7.1)
159
+ sequel (5.16.0)
160
+ sprockets (3.7.2)
145
161
  concurrent-ruby (~> 1.0)
146
162
  rack (> 1, < 3)
147
- sprockets-rails (3.2.0)
163
+ sprockets-rails (3.2.1)
148
164
  actionpack (>= 4.0)
149
165
  activesupport (>= 4.0)
150
166
  sprockets (>= 3.0.0)
151
167
  sqlite3 (1.3.13)
152
- thor (0.20.0)
168
+ thor (0.20.3)
153
169
  thread_safe (0.3.6)
154
- travis (1.8.8)
170
+ travis (1.8.9)
155
171
  backports
156
172
  faraday (~> 0.9)
157
173
  faraday_middleware (~> 0.9, >= 0.9.1)
@@ -164,16 +180,17 @@ GEM
164
180
  ethon (>= 0.8.0)
165
181
  tzinfo (1.2.5)
166
182
  thread_safe (~> 0.1)
167
- websocket (1.2.5)
168
- websocket-driver (0.6.5)
183
+ websocket (1.2.8)
184
+ websocket-driver (0.7.0)
169
185
  websocket-extensions (>= 0.1.0)
170
- websocket-extensions (0.1.2)
171
- will_paginate (3.1.5)
186
+ websocket-extensions (0.1.3)
187
+ will_paginate (3.1.6)
172
188
 
173
189
  PLATFORMS
174
190
  ruby
175
191
 
176
192
  DEPENDENCIES
193
+ active_model_serializers
177
194
  activerecord-jdbc-adapter
178
195
  activerecord-jdbcsqlite3-adapter
179
196
  algoliasearch (>= 1.17.0, < 2.0.0)
@@ -191,4 +208,4 @@ DEPENDENCIES
191
208
  will_paginate (>= 2.3.15)
192
209
 
193
210
  BUNDLED WITH
194
- 1.16.6
211
+ 1.17.3
data/README.md CHANGED
@@ -1,8 +1,7 @@
1
1
 
2
2
  # Algolia Search API Client for Rails
3
3
 
4
- [Algolia Search](https://www.algolia.com) is a hosted full-text, numerical,
5
- and faceted search engine capable of delivering realtime results from the first keystroke.
4
+ [Algolia Search](https://www.algolia.com) is a hosted search engine capable of delivering real-time results from the first keystroke.
6
5
 
7
6
  [![Build Status](https://travis-ci.org/algolia/algoliasearch-rails.svg?branch=master)](https://travis-ci.org/algolia/algoliasearch-rails) [![Gem Version](https://badge.fury.io/rb/algoliasearch-rails.svg)](http://badge.fury.io/rb/algoliasearch-rails) [![Code Climate](https://codeclimate.com/github/algolia/algoliasearch-rails.svg)](https://codeclimate.com/github/algolia/algoliasearch-rails) ![ActiveRecord](https://img.shields.io/badge/ActiveRecord-yes-blue.svg?style=flat-square) ![Mongoid](https://img.shields.io/badge/Mongoid-yes-blue.svg?style=flat-square) ![Sequel](https://img.shields.io/badge/Sequel-yes-blue.svg?style=flat-square)
8
7
 
@@ -16,7 +15,7 @@ You might be interested in the sample Ruby on Rails application providing a `aut
16
15
 
17
16
  ## API Documentation
18
17
 
19
- You can find the full reference on [Algolia's website](https://www.algolia.com/doc/api-client/rails/).
18
+ You can find the full reference on [Algolia's website](https://www.algolia.com/doc/framework-integration/rails/).
20
19
 
21
20
 
22
21
 
@@ -68,7 +67,6 @@ You can find the full reference on [Algolia's website](https://www.algolia.com/d
68
67
 
69
68
 
70
69
 
71
-
72
70
  # Setup
73
71
 
74
72
 
@@ -131,7 +129,6 @@ Contact.algolia_search("jon doe") # <=> Contact.search("jon doe")
131
129
 
132
130
 
133
131
 
134
-
135
132
  # Usage
136
133
 
137
134
 
@@ -406,7 +403,7 @@ Product.search_for_facet_values('category', 'phone', {
406
403
  ## Group by
407
404
 
408
405
  More info on distinct for grouping can be found
409
- [here](https://www.algolia.com/doc/guides/ranking/distinct/).
406
+ [here](https://www.algolia.com/doc/guides/managing-results/refine-results/grouping/).
410
407
 
411
408
  ```ruby
412
409
  class Contact < ActiveRecord::Base
@@ -440,7 +437,6 @@ At query time, specify <code>{ aroundLatLng: "37.33, -121.89", aroundRadius: 500
440
437
 
441
438
 
442
439
 
443
-
444
440
  # Options
445
441
 
446
442
 
@@ -935,7 +931,6 @@ end
935
931
 
936
932
 
937
933
 
938
-
939
934
  # Indices
940
935
 
941
936
 
@@ -1118,7 +1113,6 @@ Book.search 'foo bar', index: 'Book_by_editor'
1118
1113
 
1119
1114
 
1120
1115
 
1121
-
1122
1116
  # Testing
1123
1117
 
1124
1118
 
@@ -47,20 +47,43 @@ module AlgoliaSearch
47
47
  end
48
48
 
49
49
  class IndexSettings
50
+ DEFAULT_BATCH_SIZE = 1000
50
51
 
51
52
  # AlgoliaSearch settings
52
- OPTIONS = [:minWordSizefor1Typo, :minWordSizefor2Typos, :typoTolerance,
53
- :hitsPerPage, :attributesToRetrieve,
54
- :attributesToHighlight, :attributesToSnippet, :attributesToIndex, :searchableAttributes,
55
- :highlightPreTag, :highlightPostTag,
56
- :ranking, :customRanking, :queryType, :attributesForFaceting,
57
- :separatorsToIndex, :optionalWords, :attributeForDistinct,
58
- :synonyms, :placeholders, :removeWordsIfNoResults, :replaceSynonymsInHighlight,
59
- :unretrievableAttributes, :disableTypoToleranceOnWords, :disableTypoToleranceOnAttributes, :altCorrections,
60
- :ignorePlurals, :maxValuesPerFacet, :distinct, :numericAttributesToIndex, :numericAttributesForFiltering,
61
- :allowTyposOnNumericTokens, :allowCompressionOfIntegerArray,
62
- :advancedSyntax, :disablePrefixOnAttributes,
63
- :paginationLimitedTo]
53
+ OPTIONS = [
54
+ # Attributes
55
+ :searchableAttributes, :attributesForFaceting, :unretrievableAttributes, :attributesToRetrieve,
56
+ :attributesToIndex, #Legacy name of searchableAttributes
57
+ # Ranking
58
+ :ranking, :customRanking, # Replicas are handled via `add_replica`
59
+ # Faceting
60
+ :maxValuesPerFacet, :sortFacetValuesBy,
61
+ # Highlighting / Snippeting
62
+ :attributesToHighlight, :attributesToSnippet, :highlightPreTag, :highlightPostTag,
63
+ :snippetEllipsisText, :restrictHighlightAndSnippetArrays,
64
+ # Pagination
65
+ :hitsPerPage, :paginationLimitedTo,
66
+ # Typo
67
+ :minWordSizefor1Typo, :minWordSizefor2Typos, :typoTolerance, :allowTyposOnNumericTokens,
68
+ :disableTypoToleranceOnAttributes, :disableTypoToleranceOnWords, :separatorsToIndex,
69
+ # Language
70
+ :ignorePlurals, :removeStopWords, :camelCaseAttributes, :decompoundedAttributes,
71
+ :keepDiacriticsOnCharacters, :queryLanguages,
72
+ # Query Rules
73
+ :enableRules,
74
+ # Query Strategy
75
+ :queryType, :removeWordsIfNoResults, :advancedSyntax, :optionalWords,
76
+ :disablePrefixOnAttributes, :disableExactOnAttributes, :exactOnSingleWordQuery, :alternativesAsExact,
77
+ # Performance
78
+ :numericAttributesForFiltering, :allowCompressionOfIntegerArray,
79
+ :numericAttributesToIndex, # Legacy name of numericAttributesForFiltering
80
+ # Advanced
81
+ :attributeForDistinct, :distinct, :replaceSynonymsInHighlight, :minProximity, :responseFields,
82
+ :maxFacetHits,
83
+
84
+ # Rails-specific
85
+ :synonyms, :placeholders, :altCorrections,
86
+ ]
64
87
  OPTIONS.each do |k|
65
88
  define_method k do |v|
66
89
  instance_variable_set("@#{k}", v)
@@ -72,6 +95,11 @@ module AlgoliaSearch
72
95
  instance_exec(&block) if block
73
96
  end
74
97
 
98
+ def use_serializer(serializer)
99
+ @serializer = serializer
100
+ # instance_variable_set("@serializer", serializer)
101
+ end
102
+
75
103
  def attribute(*names, &block)
76
104
  raise ArgumentError.new('Cannot pass multiple attribute names if block given') if block_given? and names.length > 1
77
105
  raise ArgumentError.new('Cannot specify additional attributes on a replica index') if @options[:slave] || @options[:replica]
@@ -118,15 +146,7 @@ module AlgoliaSearch
118
146
  end
119
147
 
120
148
  def get_attribute_names(object)
121
- res = if @attributes.nil? || @attributes.length == 0
122
- get_default_attributes(object).keys
123
- else
124
- @attributes.keys
125
- end
126
-
127
- res += @additional_attributes.keys if @additional_attributes
128
-
129
- res
149
+ get_attributes(object).keys
130
150
  end
131
151
 
132
152
  def attributes_to_hash(attributes, object)
@@ -138,19 +158,27 @@ module AlgoliaSearch
138
158
  end
139
159
 
140
160
  def get_attributes(object)
141
- attributes = if @attributes.nil? || @attributes.length == 0
142
- get_default_attributes(object)
161
+ # If a serializer is set, we ignore attributes
162
+ # everything should be done via the serializer
163
+ if not @serializer.nil?
164
+ attributes = @serializer.new(object).attributes
143
165
  else
144
- if is_active_record?(object)
145
- object.class.unscoped do
146
- attributes_to_hash(@attributes, object)
147
- end
166
+ if @attributes.nil? || @attributes.length == 0
167
+ # no `attribute ...` have been configured, use the default attributes of the model
168
+ attributes = get_default_attributes(object)
148
169
  else
149
- attributes_to_hash(@attributes, object)
170
+ # at least 1 `attribute ...` has been configured, therefore use ONLY the one configured
171
+ if is_active_record?(object)
172
+ object.class.unscoped do
173
+ attributes = attributes_to_hash(@attributes, object)
174
+ end
175
+ else
176
+ attributes = attributes_to_hash(@attributes, object)
177
+ end
150
178
  end
151
179
  end
152
180
 
153
- attributes.merge!(attributes_to_hash(@additional_attributes, object))
181
+ attributes.merge!(attributes_to_hash(@additional_attributes, object)) if @additional_attributes
154
182
 
155
183
  if @options[:sanitize]
156
184
  sanitizer = begin
@@ -478,7 +506,7 @@ module AlgoliaSearch
478
506
  Thread.current["algolia_without_auto_index_scope_for_#{self.model_name}"]
479
507
  end
480
508
 
481
- def algolia_reindex!(batch_size = 1000, synchronous = false)
509
+ def algolia_reindex!(batch_size = AlgoliaSearch::IndexSettings::DEFAULT_BATCH_SIZE, synchronous = false)
482
510
  return if algolia_without_auto_index_scope
483
511
  algolia_configurations.each do |options, settings|
484
512
  next if algolia_indexing_disabled?(options)
@@ -509,7 +537,7 @@ module AlgoliaSearch
509
537
  end
510
538
 
511
539
  # reindex whole database using a extra temporary index + move operation
512
- def algolia_reindex(batch_size = 1000, synchronous = false)
540
+ def algolia_reindex(batch_size = AlgoliaSearch::IndexSettings::DEFAULT_BATCH_SIZE, synchronous = false)
513
541
  return if algolia_without_auto_index_scope
514
542
  algolia_configurations.each do |options, settings|
515
543
  next if algolia_indexing_disabled?(options)
@@ -1,3 +1,3 @@
1
1
  module AlgoliaSearch
2
- VERSION = '1.20.6'
2
+ VERSION = '1.21.0'
3
3
  end
@@ -26,11 +26,26 @@ RSpec.configure do |c|
26
26
  example.run
27
27
  }
28
28
  end
29
+
30
+ # Remove all indexes setup in this run in local or CI
31
+ c.after(:suite) do
32
+ safe_index_list.each do |index|
33
+ Algolia.client.delete_index!(index['name'])
34
+ end
35
+ end
29
36
  end
30
37
 
31
- # avoid concurrent access to the same index
38
+ # A unique prefix for your test run in local or CI
39
+ SAFE_INDEX_PREFIX = "rails_#{SecureRandom.hex(8)}".freeze
40
+
41
+ # avoid concurrent access to the same index in local or CI
32
42
  def safe_index_name(name)
33
- return name if ENV['TRAVIS'].to_s != "true"
34
- id = ENV['TRAVIS_JOB_NUMBER']
35
- "TRAVIS_RAILS_#{name}_#{id}"
43
+ "#{SAFE_INDEX_PREFIX}_#{name}"
44
+ end
45
+
46
+ # get a list of safe indexes in local or CI
47
+ def safe_index_list
48
+ list = Algolia.client.list_indexes()['items']
49
+ list = list.select { |index| index["name"].include?(SAFE_INDEX_PREFIX) }
50
+ list.sort_by { |index| index["primary"] || "" }
36
51
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: algoliasearch-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.20.6
4
+ version: 1.21.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Algolia
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-12-18 00:00:00.000000000 Z
11
+ date: 2019-02-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -188,8 +188,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
188
188
  - !ruby/object:Gem::Version
189
189
  version: '0'
190
190
  requirements: []
191
- rubyforge_project:
192
- rubygems_version: 2.7.7
191
+ rubygems_version: 3.0.2
193
192
  signing_key:
194
193
  specification_version: 4
195
194
  summary: AlgoliaSearch integration to your favorite ORM