algoliasearch-rails 1.23.1 → 2.0.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: b2d0b61f81920d6dd4f89bd20e60380431722ffe60fca9348b35e3ad45da44f6
4
- data.tar.gz: 67c1d34f733cefa7b8c2d48408c8b0bd0eea42cc541b0bdc430673d3a204c3fd
3
+ metadata.gz: d738368dd1684b9fa58b5507e65d0d7522930a6894e0e9684139fbd5def1a583
4
+ data.tar.gz: 8fdd59e52471fd184cf51092706fb345d699cd9d135385bd0a7ade084ec8dc2d
5
5
  SHA512:
6
- metadata.gz: db0be244c2850303c29f7b0ec3d08d724400239c8e0ba60d13118b6cd808f6399b84f4eb1aba5293af96fe29db08814b4ac4f785d32ec503d184343217091b78
7
- data.tar.gz: 812a0517895c42df1917b0bb6677372b65dd69c9264ca29e6c7bba0a5e5d1150ec6602b2aa5ad185d1367cb97741af4db1176535496240971077e4b403a467af
6
+ metadata.gz: a9f4a61d1eafcda6ffbca4c585026ca54d9aed7fb3b03b36143c19b5ee504196b10e2a8be88b7083004fb0b070dfd12bb0dbfecaa987c1761c8afca31326eeea
7
+ data.tar.gz: 6a8fb2b05c4798965164fc2f651624b2a69935dfa3a22d7704bb312424b7e0f796e7c3d5e9bbdc6d9058f17fe06cc0ec40bd41ee06233f11ce98435906f2a235
data/.travis.yml CHANGED
@@ -8,6 +8,7 @@ matrix:
8
8
  include:
9
9
  - rvm: 1.8.7
10
10
  env: RAILS_VERSION=3.2.0 SEQUEL_VERSION=4.0
11
+ dist: trusty
11
12
  - rvm: 1.9.3
12
13
  env: RAILS_VERSION=3.2.0
13
14
  - rvm: 1.9.3
@@ -32,8 +33,16 @@ matrix:
32
33
  env: RAILS_VERSION=5.1 SEQUEL_VERSION=5.0
33
34
  - rvm: 2.5.3
34
35
  env: RAILS_VERSION=5.1 SEQUEL_VERSION=5.0
36
+ - rvm: 2.5.3
37
+ env: RAILS_VERSION=6.0 SEQUEL_VERSION=5.0
38
+ - rvm: 2.6.0
39
+ env: RAILS_VERSION=5.2 SEQUEL_VERSION=5.0
35
40
  - rvm: 2.6.0
41
+ env: RAILS_VERSION=6.0 SEQUEL_VERSION=5.0
42
+ - rvm: 2.7.0
36
43
  env: RAILS_VERSION=5.2 SEQUEL_VERSION=5.0
44
+ - rvm: 2.7.0
45
+ env: RAILS_VERSION=6.0 SEQUEL_VERSION=5.0
37
46
 
38
47
  before_install:
39
48
  - wget http://api-key-dealer.herokuapp.com/clients/algolia-keys && chmod +x algolia-keys
@@ -1,5 +1,42 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## [Unreleased](https://github.com/algolia/algoliasearch-rails/compare/2.0.0...master)
4
+
5
+ ## [2.0.0](https://github.com/algolia/algoliasearch-rails/compare/2.0.0...1.25.0)
6
+
7
+ ### Breaking changes
8
+ - Adds support for `algolia` gem.
9
+ - Drops support for Ruby < 2.4
10
+ - Drops support for Rails < 5.1
11
+
12
+ ## [1.25.0](https://github.com/algolia/algoliasearch-rails/compare/1.24.1...1.25.0) (2020-11-24)
13
+
14
+ ### Added
15
+ - Pass array argument to geoloc ([#372](https://github.com/algolia/algoliasearch-rails/pull/372))
16
+ - Containerize the repo ([#391](https://github.com/algolia/algoliasearch-rails/pull/391))
17
+
18
+ ### Fixed
19
+ - Use Zeitwerk for loading models in Rails 6 ([#364](https://github.com/algolia/algoliasearch-rails/pull/364))
20
+
21
+ ## [1.24.1](https://github.com/algolia/algoliasearch-rails/releases/tag/1.24.1) (2020-07-15)
22
+
23
+ **Fixed**
24
+
25
+ * Fixes ruby warning 'Proc.new is deprecated'
26
+
27
+ ## [1.24.0](https://github.com/algolia/algoliasearch-rails/releases/tag/1.24.0) (2020-02-21)
28
+
29
+ **Added**
30
+
31
+ * Adds indexLanguages in index settings
32
+
33
+ ## [1.23.2](https://github.com/algolia/algoliasearch-rails/releases/tag/1.23.2) (2019-06-26)
34
+
35
+ **Fixed**
36
+
37
+ * Use `copy_index` when initiating a temporary index to preserve settings, synonyms, and rules.
38
+
39
+
3
40
  ## [1.23.0](https://github.com/algolia/algoliasearch-rails/releases/tag/1.23.0) (2019-06-25)
4
41
 
5
42
  **Added**
data/Gemfile CHANGED
@@ -1,41 +1,22 @@
1
1
  source "http://rubygems.org"
2
2
 
3
- gem 'json', '~> 1.8', '>= 1.8.6'
4
- gem 'algoliasearch', '>= 1.23.0', '< 2.0.0'
3
+ gem 'json', '>= 1.5.1'
4
+ gem 'algolia', '< 3.0.0'
5
5
 
6
6
  if defined?(RUBY_ENGINE) && RUBY_ENGINE == 'rbx'
7
7
  gem 'rubysl', '~> 2.0', :platform => :rbx
8
8
  end
9
9
 
10
10
  group :test do
11
- rails_version = ENV["RAILS_VERSION"] ? "~> #{ENV["RAILS_VERSION"]}" : '>= 3.2.0'
12
- gem 'rails', rails_version
11
+ rails_version = ENV["RAILS_VERSION"] || '6.1'
12
+ gem 'rails', "~> #{rails_version}"
13
13
  gem 'active_model_serializers'
14
- if defined?(RUBY_VERSION) && RUBY_VERSION == "1.8.7"
15
- gem 'i18n', '< 0.7'
16
- gem 'highline', '< 1.7'
17
- gem 'addressable', '<= 2.2.7'
18
- gem 'rack-cache', '< 1.3'
19
- gem 'mime-types', '< 2.6'
20
- gem 'net-http-persistent', '< 3.0'
21
- gem 'faraday', '< 0.10'
22
- elsif defined?(RUBY_VERSION) && RUBY_VERSION == "1.9.3"
23
- gem 'rack', '< 2'
24
- gem 'rack-cache', '<= 1.7.1'
25
- if Gem::Version.new(ENV['RAILS_VERSION'] || '3.2.0') >= Gem::Version.new('4.0')
26
- gem 'mime-types', '~> 2.6'
27
- else
28
- gem 'mime-types', '< 3'
29
- end
30
- end
31
- if defined?(RUBY_VERSION) &&
32
- defined?(RUBY_ENGINE) &&
33
- RUBY_ENGINE == 'ruby' &&
34
- Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.1')
35
- gem 'net-http-persistent', '< 3.0'
14
+ if Gem::Version.new(rails_version) >= Gem::Version.new('6.0')
15
+ gem 'sqlite3', '~> 1.4.0', :platform => [:rbx, :ruby]
16
+ else
17
+ gem 'sqlite3', '< 1.4.0', :platform => [:rbx, :ruby]
36
18
  end
37
19
  gem 'rspec', '>= 2.5.0', '< 3.0'
38
- gem 'sqlite3', '< 1.4.0', :platform => [:rbx, :ruby]
39
20
  gem 'jdbc-sqlite3', :platform => :jruby
40
21
  gem 'activerecord-jdbc-adapter', :platform => :jruby
41
22
  gem 'activerecord-jdbcsqlite3-adapter', :platform => :jruby
@@ -53,13 +34,6 @@ end
53
34
 
54
35
  group :test, :development do
55
36
  gem 'will_paginate', '>= 2.3.15'
56
- if defined?(RUBY_VERSION) &&
57
- defined?(RUBY_ENGINE) &&
58
- RUBY_ENGINE == 'ruby' &&
59
- Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2')
60
- gem 'kaminari', '< 1'
61
- else
62
- gem 'kaminari'
63
- end
37
+ gem 'kaminari', '< 1'
64
38
  end
65
39
 
data/Gemfile.lock CHANGED
@@ -1,72 +1,90 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
- actioncable (5.2.3)
5
- actionpack (= 5.2.3)
4
+ actioncable (6.1.3.1)
5
+ actionpack (= 6.1.3.1)
6
+ activesupport (= 6.1.3.1)
6
7
  nio4r (~> 2.0)
7
8
  websocket-driver (>= 0.6.1)
8
- actionmailer (5.2.3)
9
- actionpack (= 5.2.3)
10
- actionview (= 5.2.3)
11
- activejob (= 5.2.3)
9
+ actionmailbox (6.1.3.1)
10
+ actionpack (= 6.1.3.1)
11
+ activejob (= 6.1.3.1)
12
+ activerecord (= 6.1.3.1)
13
+ activestorage (= 6.1.3.1)
14
+ activesupport (= 6.1.3.1)
15
+ mail (>= 2.7.1)
16
+ actionmailer (6.1.3.1)
17
+ actionpack (= 6.1.3.1)
18
+ actionview (= 6.1.3.1)
19
+ activejob (= 6.1.3.1)
20
+ activesupport (= 6.1.3.1)
12
21
  mail (~> 2.5, >= 2.5.4)
13
22
  rails-dom-testing (~> 2.0)
14
- actionpack (5.2.3)
15
- actionview (= 5.2.3)
16
- activesupport (= 5.2.3)
17
- rack (~> 2.0)
23
+ actionpack (6.1.3.1)
24
+ actionview (= 6.1.3.1)
25
+ activesupport (= 6.1.3.1)
26
+ rack (~> 2.0, >= 2.0.9)
18
27
  rack-test (>= 0.6.3)
19
28
  rails-dom-testing (~> 2.0)
20
- rails-html-sanitizer (~> 1.0, >= 1.0.2)
21
- actionview (5.2.3)
22
- activesupport (= 5.2.3)
29
+ rails-html-sanitizer (~> 1.0, >= 1.2.0)
30
+ actiontext (6.1.3.1)
31
+ actionpack (= 6.1.3.1)
32
+ activerecord (= 6.1.3.1)
33
+ activestorage (= 6.1.3.1)
34
+ activesupport (= 6.1.3.1)
35
+ nokogiri (>= 1.8.5)
36
+ actionview (6.1.3.1)
37
+ activesupport (= 6.1.3.1)
23
38
  builder (~> 3.1)
24
39
  erubi (~> 1.4)
25
40
  rails-dom-testing (~> 2.0)
26
- rails-html-sanitizer (~> 1.0, >= 1.0.3)
27
- active_model_serializers (0.10.9)
28
- actionpack (>= 4.1, < 6)
29
- activemodel (>= 4.1, < 6)
41
+ rails-html-sanitizer (~> 1.1, >= 1.2.0)
42
+ active_model_serializers (0.10.12)
43
+ actionpack (>= 4.1, < 6.2)
44
+ activemodel (>= 4.1, < 6.2)
30
45
  case_transform (>= 0.2)
31
46
  jsonapi-renderer (>= 0.1.1.beta1, < 0.3)
32
- activejob (5.2.3)
33
- activesupport (= 5.2.3)
47
+ activejob (6.1.3.1)
48
+ activesupport (= 6.1.3.1)
34
49
  globalid (>= 0.3.6)
35
- activemodel (5.2.3)
36
- activesupport (= 5.2.3)
37
- activerecord (5.2.3)
38
- activemodel (= 5.2.3)
39
- activesupport (= 5.2.3)
40
- arel (>= 9.0)
41
- activestorage (5.2.3)
42
- actionpack (= 5.2.3)
43
- activerecord (= 5.2.3)
44
- marcel (~> 0.3.1)
45
- activesupport (5.2.3)
50
+ activemodel (6.1.3.1)
51
+ activesupport (= 6.1.3.1)
52
+ activerecord (6.1.3.1)
53
+ activemodel (= 6.1.3.1)
54
+ activesupport (= 6.1.3.1)
55
+ activestorage (6.1.3.1)
56
+ actionpack (= 6.1.3.1)
57
+ activejob (= 6.1.3.1)
58
+ activerecord (= 6.1.3.1)
59
+ activesupport (= 6.1.3.1)
60
+ marcel (~> 1.0.0)
61
+ mini_mime (~> 1.0.2)
62
+ activesupport (6.1.3.1)
46
63
  concurrent-ruby (~> 1.0, >= 1.0.2)
47
- i18n (>= 0.7, < 2)
48
- minitest (~> 5.1)
49
- tzinfo (~> 1.1)
64
+ i18n (>= 1.6, < 2)
65
+ minitest (>= 5.1)
66
+ tzinfo (~> 2.0)
67
+ zeitwerk (~> 2.3)
50
68
  addressable (2.4.0)
51
- algoliasearch (1.26.0)
52
- httpclient (~> 2.8, >= 2.8.3)
53
- json (>= 1.5.1)
54
- arel (9.0.0)
55
- backports (3.15.0)
56
- builder (3.2.3)
69
+ algolia (2.0.4)
70
+ faraday (>= 0.15, < 2.0)
71
+ multi_json (~> 1.0)
72
+ net-http-persistent
73
+ backports (3.21.0)
74
+ builder (3.2.4)
57
75
  case_transform (0.2)
58
76
  activesupport
59
- concurrent-ruby (1.1.5)
60
- crass (1.0.4)
61
- diff-lcs (1.3)
62
- erubi (1.8.0)
63
- ethon (0.12.0)
64
- ffi (>= 1.3.0)
65
- faraday (0.15.4)
77
+ concurrent-ruby (1.1.8)
78
+ crass (1.0.6)
79
+ diff-lcs (1.4.4)
80
+ erubi (1.10.0)
81
+ ethon (0.13.0)
82
+ ffi (>= 1.15.0)
83
+ faraday (0.17.4)
66
84
  multipart-post (>= 1.2, < 3)
67
- faraday_middleware (0.13.1)
85
+ faraday_middleware (0.14.0)
68
86
  faraday (>= 0.7.4, < 1.0)
69
- ffi (1.11.1)
87
+ ffi (1.15.0)
70
88
  gh (0.15.1)
71
89
  addressable (~> 2.4.0)
72
90
  backports
@@ -77,76 +95,66 @@ GEM
77
95
  globalid (0.4.2)
78
96
  activesupport (>= 4.2.0)
79
97
  highline (1.7.10)
80
- httpclient (2.8.3)
81
- i18n (1.6.0)
98
+ i18n (1.8.10)
82
99
  concurrent-ruby (~> 1.0)
83
- json (1.8.6)
100
+ json (2.5.1)
84
101
  jsonapi-renderer (0.2.2)
85
- kaminari (1.1.1)
86
- activesupport (>= 4.1.0)
87
- kaminari-actionview (= 1.1.1)
88
- kaminari-activerecord (= 1.1.1)
89
- kaminari-core (= 1.1.1)
90
- kaminari-actionview (1.1.1)
91
- actionview
92
- kaminari-core (= 1.1.1)
93
- kaminari-activerecord (1.1.1)
94
- activerecord
95
- kaminari-core (= 1.1.1)
96
- kaminari-core (1.1.1)
102
+ kaminari (0.17.0)
103
+ actionpack (>= 3.0.0)
104
+ activesupport (>= 3.0.0)
97
105
  launchy (2.4.3)
98
106
  addressable (~> 2.3)
99
- loofah (2.2.3)
107
+ loofah (2.9.1)
100
108
  crass (~> 1.0.2)
101
109
  nokogiri (>= 1.5.9)
102
110
  mail (2.7.1)
103
111
  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)
110
- minitest (5.11.3)
111
- multi_json (1.13.1)
112
+ marcel (1.0.1)
113
+ method_source (1.0.0)
114
+ mini_mime (1.0.3)
115
+ minitest (5.14.4)
116
+ multi_json (1.15.0)
112
117
  multipart-post (2.1.1)
113
118
  net-http-persistent (2.9.4)
114
119
  net-http-pipeline (1.0.1)
115
- nio4r (2.3.1)
116
- nokogiri (1.10.3)
117
- mini_portile2 (~> 2.4.0)
120
+ nio4r (2.5.7)
121
+ nokogiri (1.11.3-x86_64-darwin)
122
+ racc (~> 1.4)
118
123
  pusher-client (0.6.2)
119
124
  json
120
125
  websocket (~> 1.0)
121
- rack (2.0.7)
126
+ racc (1.5.2)
127
+ rack (2.2.3)
122
128
  rack-test (1.1.0)
123
129
  rack (>= 1.0, < 3)
124
- rails (5.2.3)
125
- actioncable (= 5.2.3)
126
- actionmailer (= 5.2.3)
127
- actionpack (= 5.2.3)
128
- actionview (= 5.2.3)
129
- activejob (= 5.2.3)
130
- activemodel (= 5.2.3)
131
- activerecord (= 5.2.3)
132
- activestorage (= 5.2.3)
133
- activesupport (= 5.2.3)
134
- bundler (>= 1.3.0)
135
- railties (= 5.2.3)
130
+ rails (6.1.3.1)
131
+ actioncable (= 6.1.3.1)
132
+ actionmailbox (= 6.1.3.1)
133
+ actionmailer (= 6.1.3.1)
134
+ actionpack (= 6.1.3.1)
135
+ actiontext (= 6.1.3.1)
136
+ actionview (= 6.1.3.1)
137
+ activejob (= 6.1.3.1)
138
+ activemodel (= 6.1.3.1)
139
+ activerecord (= 6.1.3.1)
140
+ activestorage (= 6.1.3.1)
141
+ activesupport (= 6.1.3.1)
142
+ bundler (>= 1.15.0)
143
+ railties (= 6.1.3.1)
136
144
  sprockets-rails (>= 2.0.0)
137
145
  rails-dom-testing (2.0.3)
138
146
  activesupport (>= 4.2.0)
139
147
  nokogiri (>= 1.6)
140
- rails-html-sanitizer (1.0.4)
141
- loofah (~> 2.2, >= 2.2.2)
142
- railties (5.2.3)
143
- actionpack (= 5.2.3)
144
- activesupport (= 5.2.3)
148
+ rails-html-sanitizer (1.3.0)
149
+ loofah (~> 2.3)
150
+ railties (6.1.3.1)
151
+ actionpack (= 6.1.3.1)
152
+ activesupport (= 6.1.3.1)
145
153
  method_source
146
154
  rake (>= 0.8.7)
147
- thor (>= 0.19.0, < 2.0)
155
+ thor (~> 1.0)
148
156
  rake (10.1.1)
149
- rdoc (6.1.1)
157
+ rdoc (6.3.0)
150
158
  redgreen (1.2.2)
151
159
  rspec (2.99.0)
152
160
  rspec-core (~> 2.99.0)
@@ -156,18 +164,17 @@ GEM
156
164
  rspec-expectations (2.99.2)
157
165
  diff-lcs (>= 1.1.3, < 2.0)
158
166
  rspec-mocks (2.99.4)
159
- sequel (5.21.0)
160
- sprockets (3.7.2)
167
+ sequel (5.43.0)
168
+ sprockets (4.0.2)
161
169
  concurrent-ruby (~> 1.0)
162
170
  rack (> 1, < 3)
163
- sprockets-rails (3.2.1)
171
+ sprockets-rails (3.2.2)
164
172
  actionpack (>= 4.0)
165
173
  activesupport (>= 4.0)
166
174
  sprockets (>= 3.0.0)
167
- sqlite3 (1.3.13)
168
- thor (0.20.3)
169
- thread_safe (0.3.6)
170
- travis (1.8.10)
175
+ sqlite3 (1.4.2)
176
+ thor (1.1.0)
177
+ travis (1.8.13)
171
178
  backports
172
179
  faraday (~> 0.9)
173
180
  faraday_middleware (~> 0.9, >= 0.9.1)
@@ -178,34 +185,35 @@ GEM
178
185
  typhoeus (~> 0.6, >= 0.6.8)
179
186
  typhoeus (0.8.0)
180
187
  ethon (>= 0.8.0)
181
- tzinfo (1.2.5)
182
- thread_safe (~> 0.1)
183
- websocket (1.2.8)
184
- websocket-driver (0.7.1)
188
+ tzinfo (2.0.4)
189
+ concurrent-ruby (~> 1.0)
190
+ websocket (1.2.9)
191
+ websocket-driver (0.7.3)
185
192
  websocket-extensions (>= 0.1.0)
186
- websocket-extensions (0.1.4)
187
- will_paginate (3.1.7)
193
+ websocket-extensions (0.1.5)
194
+ will_paginate (3.3.0)
195
+ zeitwerk (2.4.2)
188
196
 
189
197
  PLATFORMS
190
- ruby
198
+ x86_64-darwin-19
191
199
 
192
200
  DEPENDENCIES
193
201
  active_model_serializers
194
202
  activerecord-jdbc-adapter
195
203
  activerecord-jdbcsqlite3-adapter
196
- algoliasearch (>= 1.26.0, < 2.0.0)
204
+ algolia (< 3.0.0)
197
205
  jdbc-sqlite3
198
- json (~> 1.8, >= 1.8.6)
199
- kaminari
200
- rails (>= 3.2.0)
206
+ json (>= 1.5.1)
207
+ kaminari (< 1)
208
+ rails (~> 6.1)
201
209
  rake (~> 10.1.0)
202
210
  rdoc
203
211
  redgreen
204
212
  rspec (>= 2.5.0, < 3.0)
205
213
  sequel (>= 4.0)
206
- sqlite3 (< 1.4.0)
214
+ sqlite3 (~> 1.4.0)
207
215
  travis
208
216
  will_paginate (>= 2.3.15)
209
217
 
210
218
  BUNDLED WITH
211
- 2.0.1
219
+ 2.2.15
data/README.md CHANGED
@@ -1,9 +1,28 @@
1
-
2
- # Algolia Search API Client for Rails
3
-
4
- [Algolia Search](https://www.algolia.com) is a hosted search engine capable of delivering real-time results from the first keystroke.
5
-
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)
1
+ <p align="center">
2
+ <a href="https://www.algolia.com">
3
+ <img alt="Algolia for Rails" src="https://raw.githubusercontent.com/algolia/algoliasearch-client-common/master/banners/rails.png" >
4
+ </a>
5
+
6
+ <h4 align="center">The perfect starting point to integrate <a href="https://algolia.com" target="_blank">Algolia</a> within your Rails project</h4>
7
+
8
+ <p align="center">
9
+ <a href="https://circleci.com/gh/algolia/algoliasearch-rails"><img src="https://circleci.com/gh/algolia/algoliasearch-rails.svg?style=shield" alt="CircleCI" /></a>
10
+ <a href="http://badge.fury.io/rb/algoliasearch-rails"><img src="https://badge.fury.io/rb/algoliasearch-rails.svg" alt="Gem Version"></img></a>
11
+ <a href="https://codeclimate.com/github/algolia/algoliasearch-rails"><img src="https://codeclimate.com/github/algolia/algoliasearch-rails.svg" alt="Code Climate"></img></a>
12
+ <img src="https://img.shields.io/badge/ActiveRecord-yes-blue.svg?style=flat-square" alt="ActiveRecord"></img>
13
+ <img src="https://img.shields.io/badge/Mongoid-yes-blue.svg?style=flat-square" alt="Mongoid"></img>
14
+ <img src="https://img.shields.io/badge/Sequel-yes-blue.svg?style=flat-square" alt="Sequel"></img>
15
+ </p>
16
+ </p>
17
+
18
+ <p align="center">
19
+ <a href="https://www.algolia.com/doc/framework-integration/rails/getting-started/setup/?language=ruby" target="_blank">Documentation</a> •
20
+ <a href="https://discourse.algolia.com" target="_blank">Community Forum</a> •
21
+ <a href="http://stackoverflow.com/questions/tagged/algolia" target="_blank">Stack Overflow</a> •
22
+ <a href="https://github.com/algolia/algoliasearch-rails/issues" target="_blank">Report a bug</a> •
23
+ <a href="https://www.algolia.com/doc/framework-integration/rails/troubleshooting/faq/" target="_blank">FAQ</a> •
24
+ <a href="https://www.algolia.com/support" target="_blank">Support</a>
25
+ </p>
7
26
 
8
27
 
9
28
  This gem let you easily integrate the Algolia Search API to your favorite ORM. It's based on the [algoliasearch-client-ruby](https://github.com/algolia/algoliasearch-client-ruby) gem.
@@ -64,6 +83,8 @@ You can find the full reference on [Algolia's website](https://www.algolia.com/d
64
83
  1. **[Testing](#testing)**
65
84
  * [Notes](#notes)
66
85
 
86
+ 1. **[Troubleshooting](#troubleshooting)**
87
+ * [Frequently asked questions](#frequently-asked-questions)
67
88
 
68
89
 
69
90
 
@@ -142,7 +163,7 @@ class Contact < ActiveRecord::Base
142
163
  include AlgoliaSearch
143
164
 
144
165
  algoliasearch do
145
- attribute :first_name, :last_name, :email
166
+ attributes :first_name, :last_name, :email
146
167
  end
147
168
  end
148
169
  ```
@@ -1163,4 +1184,11 @@ end
1163
1184
  ```
1164
1185
 
1165
1186
 
1187
+ ## ❓ Troubleshooting
1188
+
1189
+ Encountering an issue? Before reaching out to support, we recommend heading to our [FAQ](https://www.algolia.com/doc/api-client/troubleshooting/faq/ruby/) where you will find answers for the most common issues and gotchas with the client.
1190
+
1191
+ ## Use the Dockerfile
1192
+
1193
+ If you want to contribute to this project without installing all its dependencies, you can use our Docker image. Please check our [dedicated guide](DOCKER_README.MD) to learn more.
1166
1194
 
@@ -14,7 +14,7 @@ Gem::Specification.new do |s|
14
14
  s.description = "AlgoliaSearch integration to your favorite ORM"
15
15
  s.email = "contact@algolia.com"
16
16
  s.extra_rdoc_files = [
17
- "ChangeLog",
17
+ "CHANGELOG.MD",
18
18
  "LICENSE",
19
19
  "README.md"
20
20
  ]
@@ -22,7 +22,7 @@ Gem::Specification.new do |s|
22
22
  ".document",
23
23
  ".rspec",
24
24
  ".travis.yml",
25
- "ChangeLog",
25
+ "CHANGELOG.MD",
26
26
  "Gemfile",
27
27
  "Gemfile.lock",
28
28
  "LICENSE",
@@ -79,7 +79,7 @@ Gem::Specification.new do |s|
79
79
 
80
80
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
81
81
  s.add_runtime_dependency(%q<json>, [">= 1.5.1"])
82
- s.add_runtime_dependency(%q<algoliasearch>, [">= 1.23.0", "< 2.0.0"])
82
+ s.add_runtime_dependency(%q<algolia>, ["< 3.0.0"])
83
83
  s.add_development_dependency(%q<will_paginate>, [">= 2.3.15"])
84
84
  s.add_development_dependency(%q<kaminari>, [">= 0"])
85
85
  s.add_development_dependency "travis"
@@ -87,11 +87,11 @@ Gem::Specification.new do |s|
87
87
  s.add_development_dependency "rdoc"
88
88
  else
89
89
  s.add_dependency(%q<json>, [">= 1.5.1"])
90
- s.add_dependency(%q<algoliasearch>, [">= 1.23.0", "< 2.0.0"])
90
+ s.add_dependency(%q<algolia>, ["< 3.0.0"])
91
91
  end
92
92
  else
93
93
  s.add_dependency(%q<json>, [">= 1.5.1"])
94
- s.add_dependency(%q<algoliasearch>, [">= 1.23.0", "< 2.0.0"])
94
+ s.add_dependency(%q<algolia>, ["< 3.0.0"])
95
95
  end
96
96
  end
97
97
 
@@ -1,4 +1,4 @@
1
- require 'algoliasearch'
1
+ require 'algolia'
2
2
 
3
3
  require 'algoliasearch/version'
4
4
  require 'algoliasearch/utilities'
@@ -53,7 +53,6 @@ module AlgoliaSearch
53
53
  OPTIONS = [
54
54
  # Attributes
55
55
  :searchableAttributes, :attributesForFaceting, :unretrievableAttributes, :attributesToRetrieve,
56
- :attributesToIndex, #Legacy name of searchableAttributes
57
56
  # Ranking
58
57
  :ranking, :customRanking, # Replicas are handled via `add_replica`
59
58
  # Faceting
@@ -68,7 +67,7 @@ module AlgoliaSearch
68
67
  :disableTypoToleranceOnAttributes, :disableTypoToleranceOnWords, :separatorsToIndex,
69
68
  # Language
70
69
  :ignorePlurals, :removeStopWords, :camelCaseAttributes, :decompoundedAttributes,
71
- :keepDiacriticsOnCharacters, :queryLanguages,
70
+ :keepDiacriticsOnCharacters, :queryLanguages, :indexLanguages,
72
71
  # Query Rules
73
72
  :enableRules,
74
73
  # Query Strategy
@@ -76,7 +75,6 @@ module AlgoliaSearch
76
75
  :disablePrefixOnAttributes, :disableExactOnAttributes, :exactOnSingleWordQuery, :alternativesAsExact,
77
76
  # Performance
78
77
  :numericAttributesForFiltering, :allowCompressionOfIntegerArray,
79
- :numericAttributesToIndex, # Legacy name of numericAttributesForFiltering
80
78
  # Advanced
81
79
  :attributeForDistinct, :distinct, :replaceSynonymsInHighlight, :minProximity, :responseFields,
82
80
  :maxFacetHits,
@@ -90,9 +88,9 @@ module AlgoliaSearch
90
88
  end
91
89
  end
92
90
 
93
- def initialize(options, block)
91
+ def initialize(options, &block)
94
92
  @options = options
95
- instance_exec(&block) if block
93
+ instance_exec(&block) if block_given?
96
94
  end
97
95
 
98
96
  def use_serializer(serializer)
@@ -102,7 +100,7 @@ module AlgoliaSearch
102
100
 
103
101
  def attribute(*names, &block)
104
102
  raise ArgumentError.new('Cannot pass multiple attribute names if block given') if block_given? and names.length > 1
105
- raise ArgumentError.new('Cannot specify additional attributes on a replica index') if @options[:slave] || @options[:replica]
103
+ raise ArgumentError.new('Cannot specify additional attributes on a replica index') if @options[:replica]
106
104
  @attributes ||= {}
107
105
  names.flatten.each do |name|
108
106
  @attributes[name.to_s] = block_given? ? Proc.new { |o| o.instance_eval(&block) } : Proc.new { |o| o.send(name) }
@@ -112,7 +110,7 @@ module AlgoliaSearch
112
110
 
113
111
  def add_attribute(*names, &block)
114
112
  raise ArgumentError.new('Cannot pass multiple attribute names if block given') if block_given? and names.length > 1
115
- raise ArgumentError.new('Cannot specify additional attributes on a replica index') if @options[:slave] || @options[:replica]
113
+ raise ArgumentError.new('Cannot specify additional attributes on a replica index') if @options[:replica]
116
114
  @additional_attributes ||= {}
117
115
  names.each do |name|
118
116
  @additional_attributes[name.to_s] = block_given? ? Proc.new { |o| o.instance_eval(&block) } : Proc.new { |o| o.send(name) }
@@ -223,15 +221,15 @@ module AlgoliaSearch
223
221
  end
224
222
  end
225
223
 
226
- def geoloc(lat_attr, lng_attr)
227
- raise ArgumentError.new('Cannot specify additional attributes on a replica index') if @options[:slave] || @options[:replica]
224
+ def geoloc(lat_attr = nil, lng_attr = nil, &block)
225
+ raise ArgumentError.new('Cannot specify additional attributes on a replica index') if @options[:replica]
228
226
  add_attribute :_geoloc do |o|
229
- { :lat => o.send(lat_attr).to_f, :lng => o.send(lng_attr).to_f }
227
+ block_given? ? o.instance_eval(&block) : { :lat => o.send(lat_attr).to_f, :lng => o.send(lng_attr).to_f }
230
228
  end
231
229
  end
232
230
 
233
231
  def tags(*args, &block)
234
- raise ArgumentError.new('Cannot specify additional attributes on a replica index') if @options[:slave] || @options[:replica]
232
+ raise ArgumentError.new('Cannot specify additional attributes on a replica index') if @options[:replica]
235
233
  add_attribute :_tags do |o|
236
234
  v = block_given? ? o.instance_eval(&block) : args
237
235
  v.is_a?(Array) ? v : [v]
@@ -248,13 +246,7 @@ module AlgoliaSearch
248
246
  v = get_setting(k)
249
247
  settings[k] = v if !v.nil?
250
248
  end
251
- if !@options[:slave] && !@options[:replica]
252
- settings[:slaves] = additional_indexes.select { |opts, s| opts[:slave] }.map do |opts, s|
253
- name = opts[:index_name]
254
- name = "#{name}_#{Rails.env.to_s}" if opts[:per_environment]
255
- name
256
- end
257
- settings.delete(:slaves) if settings[:slaves].empty?
249
+ if !@options[:replica]
258
250
  settings[:replicas] = additional_indexes.select { |opts, s| opts[:replica] }.map do |opts, s|
259
251
  name = opts[:index_name]
260
252
  name = "#{name}_#{Rails.env.to_s}" if opts[:per_environment]
@@ -266,27 +258,20 @@ module AlgoliaSearch
266
258
  end
267
259
 
268
260
  def add_index(index_name, options = {}, &block)
269
- raise ArgumentError.new('Cannot specify additional index on a replica index') if @options[:slave] || @options[:replica]
261
+ raise ArgumentError.new('Cannot specify additional index on a replica index') if @options[:replica]
270
262
  raise ArgumentError.new('No block given') if !block_given?
271
263
  raise ArgumentError.new('Options auto_index and auto_remove cannot be set on nested indexes') if options[:auto_index] || options[:auto_remove]
272
264
  @additional_indexes ||= {}
273
- raise MixedSlavesAndReplicas.new('Cannot mix slaves and replicas in the same configuration (add_slave is deprecated)') if (options[:slave] && @additional_indexes.any? { |opts, _| opts[:replica] }) || (options[:replica] && @additional_indexes.any? { |opts, _| opts[:slave] })
274
265
  options[:index_name] = index_name
275
- @additional_indexes[options] = IndexSettings.new(options, Proc.new)
266
+ @additional_indexes[options] = IndexSettings.new(options, &block)
276
267
  end
277
268
 
278
269
  def add_replica(index_name, options = {}, &block)
279
- raise ArgumentError.new('Cannot specify additional replicas on a replica index') if @options[:slave] || @options[:replica]
270
+ raise ArgumentError.new('Cannot specify additional replicas on a replica index') if @options[:replica]
280
271
  raise ArgumentError.new('No block given') if !block_given?
281
272
  add_index(index_name, options.merge({ :replica => true, :primary_settings => self }), &block)
282
273
  end
283
274
 
284
- def add_slave(index_name, options = {}, &block)
285
- raise ArgumentError.new('Cannot specify additional slaves on a slave index') if @options[:slave] || @options[:replica]
286
- raise ArgumentError.new('No block given') if !block_given?
287
- add_index(index_name, options.merge({ :slave => true, :primary_settings => self }), &block)
288
- end
289
-
290
275
  def additional_indexes
291
276
  @additional_indexes || {}
292
277
  end
@@ -304,11 +289,11 @@ module AlgoliaSearch
304
289
  # are correctly logged or thrown depending on the `raise_on_failure` option
305
290
  class SafeIndex
306
291
  def initialize(name, raise_on_failure)
307
- @index = ::Algolia::Index.new(name)
292
+ @index = AlgoliaSearch.client.init_index(name)
308
293
  @raise_on_failure = raise_on_failure.nil? || raise_on_failure
309
294
  end
310
295
 
311
- ::Algolia::Index.instance_methods(false).each do |m|
296
+ ::Algolia::Search::Index.instance_methods(false).each do |m|
312
297
  define_method(m) do |*args, &block|
313
298
  SafeIndex.log_or_throw(m, @raise_on_failure) do
314
299
  @index.send(m, *args, &block)
@@ -329,7 +314,7 @@ module AlgoliaSearch
329
314
  SafeIndex.log_or_throw(:get_settings, @raise_on_failure) do
330
315
  begin
331
316
  @index.get_settings(*args)
332
- rescue Algolia::AlgoliaError => e
317
+ rescue Algolia::AlgoliaHttpError => e
333
318
  return {} if e.code == 404 # not fatal
334
319
  raise e
335
320
  end
@@ -339,7 +324,7 @@ module AlgoliaSearch
339
324
  # expose move as well
340
325
  def self.move_index(old_name, new_name)
341
326
  SafeIndex.log_or_throw(:move_index, true) do
342
- ::Algolia.move_index(old_name, new_name)
327
+ AlgoliaSearch.client.move_index(old_name, new_name)
343
328
  end
344
329
  end
345
330
 
@@ -389,7 +374,7 @@ module AlgoliaSearch
389
374
  end
390
375
 
391
376
  def algoliasearch(options = {}, &block)
392
- self.algoliasearch_settings = IndexSettings.new(options, block_given? ? Proc.new : nil)
377
+ self.algoliasearch_settings = IndexSettings.new(options, &block)
393
378
  self.algoliasearch_options = { :type => algolia_full_const_get(model_name.to_s), :per_page => algoliasearch_settings.get_setting(:hitsPerPage) || 10, :page => 1 }.merge(options)
394
379
 
395
380
  attr_accessor :highlight_result, :snippet_result
@@ -511,7 +496,7 @@ module AlgoliaSearch
511
496
  algolia_configurations.each do |options, settings|
512
497
  next if algolia_indexing_disabled?(options)
513
498
  index = algolia_ensure_init(options, settings)
514
- next if options[:slave] || options[:replica]
499
+ next if options[:replica]
515
500
  last_task = nil
516
501
 
517
502
  algolia_find_in_batches(batch_size) do |group|
@@ -531,7 +516,7 @@ module AlgoliaSearch
531
516
  end
532
517
  last_task = index.save_objects(objects)
533
518
  end
534
- index.wait_task(last_task["taskID"]) if last_task and (synchronous || options[:synchronous])
519
+ index.wait_task(last_task.raw_response["taskID"]) if last_task and (synchronous || options[:synchronous])
535
520
  end
536
521
  nil
537
522
  end
@@ -541,7 +526,7 @@ module AlgoliaSearch
541
526
  return if algolia_without_auto_index_scope
542
527
  algolia_configurations.each do |options, settings|
543
528
  next if algolia_indexing_disabled?(options)
544
- next if options[:slave] || options[:replica]
529
+ next if options[:replica]
545
530
 
546
531
  # fetch the master settings
547
532
  master_index = algolia_ensure_init(options, settings)
@@ -549,20 +534,25 @@ module AlgoliaSearch
549
534
  master_settings.merge!(JSON.parse(settings.to_settings.to_json)) # convert symbols to strings
550
535
 
551
536
  # remove the replicas of the temporary index
552
- master_settings.delete :slaves
553
- master_settings.delete 'slaves'
554
537
  master_settings.delete :replicas
555
538
  master_settings.delete 'replicas'
556
539
 
557
540
  # init temporary index
558
- index_name = algolia_index_name(options)
559
- tmp_options = options.merge({ :index_name => "#{index_name}.tmp" })
541
+ src_index_name = algolia_index_name(options)
542
+ tmp_index_name = "#{src_index_name}.tmp"
543
+ tmp_options = options.merge({ :index_name => tmp_index_name })
560
544
  tmp_options.delete(:per_environment) # already included in the temporary index_name
561
545
  tmp_settings = settings.dup
562
- tmp_index = algolia_ensure_init(tmp_options, tmp_settings, master_settings)
563
546
 
564
- algolia_find_in_batches(batch_size) do |group|
565
- if algolia_conditional_index?(tmp_options)
547
+ if options[:check_settings] == false
548
+ @client.copy_index!(src_index_name, tmp_index_name, %w(settings synonyms rules))
549
+ tmp_index = SafeIndex.new(tmp_index_name, !!options[:raise_on_failure])
550
+ else
551
+ tmp_index = algolia_ensure_init(tmp_options, tmp_settings, master_settings)
552
+ end
553
+
554
+ algolia_find_in_batches(batch_size) do |group|
555
+ if algolia_conditional_index?(options)
566
556
  # select only indexable objects
567
557
  group = group.select { |o| algolia_indexable?(o, tmp_options) }
568
558
  end
@@ -570,8 +560,8 @@ module AlgoliaSearch
570
560
  tmp_index.save_objects(objects)
571
561
  end
572
562
 
573
- move_task = SafeIndex.move_index(tmp_index.name, index_name)
574
- master_index.wait_task(move_task["taskID"]) if synchronous || options[:synchronous]
563
+ move_task = SafeIndex.move_index(tmp_index.name, src_index_name)
564
+ master_index.wait_task(move_task.raw_response["taskID"]) if synchronous || options[:synchronous]
575
565
  end
576
566
  nil
577
567
  end
@@ -580,8 +570,6 @@ module AlgoliaSearch
580
570
  algolia_configurations.each do |options, settings|
581
571
  if options[:primary_settings] && options[:inherit]
582
572
  primary = options[:primary_settings].to_settings
583
- primary.delete :slaves
584
- primary.delete 'slaves'
585
573
  primary.delete :replicas
586
574
  primary.delete 'replicas'
587
575
  final_settings = primary.merge(settings.to_settings)
@@ -591,7 +579,7 @@ module AlgoliaSearch
591
579
 
592
580
  index = SafeIndex.new(algolia_index_name(options), true)
593
581
  task = index.set_settings(final_settings)
594
- index.wait_task(task["taskID"]) if synchronous
582
+ index.wait_task(task.raw_response["taskID"]) if synchronous
595
583
  end
596
584
  end
597
585
 
@@ -599,9 +587,9 @@ module AlgoliaSearch
599
587
  algolia_configurations.each do |options, settings|
600
588
  next if algolia_indexing_disabled?(options)
601
589
  index = algolia_ensure_init(options, settings)
602
- next if options[:slave] || options[:replica]
590
+ next if options[:replica]
603
591
  task = index.save_objects(objects.map { |o| settings.get_attributes(o).merge 'objectID' => algolia_object_id_of(o, options) })
604
- index.wait_task(task["taskID"]) if synchronous || options[:synchronous]
592
+ index.wait_task(task.raw_response["taskID"]) if synchronous || options[:synchronous]
605
593
  end
606
594
  end
607
595
 
@@ -611,13 +599,13 @@ module AlgoliaSearch
611
599
  next if algolia_indexing_disabled?(options)
612
600
  object_id = algolia_object_id_of(object, options)
613
601
  index = algolia_ensure_init(options, settings)
614
- next if options[:slave] || options[:replica]
602
+ next if options[:replica]
615
603
  if algolia_indexable?(object, options)
616
604
  raise ArgumentError.new("Cannot index a record with a blank objectID") if object_id.blank?
617
605
  if synchronous || options[:synchronous]
618
- index.add_object!(settings.get_attributes(object), object_id)
606
+ index.save_object!(settings.get_attributes(object).merge 'objectID' => algolia_object_id_of(object, options))
619
607
  else
620
- index.add_object(settings.get_attributes(object), object_id)
608
+ index.save_object(settings.get_attributes(object).merge 'objectID' => algolia_object_id_of(object, options))
621
609
  end
622
610
  elsif algolia_conditional_index?(options) && !object_id.blank?
623
611
  # remove non-indexable objects
@@ -638,7 +626,7 @@ module AlgoliaSearch
638
626
  algolia_configurations.each do |options, settings|
639
627
  next if algolia_indexing_disabled?(options)
640
628
  index = algolia_ensure_init(options, settings)
641
- next if options[:slave] || options[:replica]
629
+ next if options[:replica]
642
630
  if synchronous || options[:synchronous]
643
631
  index.delete_object!(object_id)
644
632
  else
@@ -652,8 +640,8 @@ module AlgoliaSearch
652
640
  algolia_configurations.each do |options, settings|
653
641
  next if algolia_indexing_disabled?(options)
654
642
  index = algolia_ensure_init(options, settings)
655
- next if options[:slave] || options[:replica]
656
- synchronous || options[:synchronous] ? index.clear! : index.clear
643
+ next if options[:replica]
644
+ synchronous || options[:synchronous] ? index.clear_objects! : index.clear_objects
657
645
  @algolia_indexes[settings] = nil
658
646
  end
659
647
  nil
@@ -662,8 +650,6 @@ module AlgoliaSearch
662
650
  def algolia_raw_search(q, params = {})
663
651
  index_name = params.delete(:index) ||
664
652
  params.delete('index') ||
665
- params.delete(:slave) ||
666
- params.delete('slave') ||
667
653
  params.delete(:replica) ||
668
654
  params.delete('replica')
669
655
  index = algolia_index(index_name)
@@ -728,13 +714,11 @@ module AlgoliaSearch
728
714
  def algolia_search_for_facet_values(facet, text, params = {})
729
715
  index_name = params.delete(:index) ||
730
716
  params.delete('index') ||
731
- params.delete(:slave) ||
732
- params.delete('slave') ||
733
717
  params.delete(:replica) ||
734
718
  params.delete('replicas')
735
719
  index = algolia_index(index_name)
736
720
  query = Hash[params.map { |k, v| [k.to_s, v.to_s] }]
737
- index.search_facet(facet, text, query)['facetHits']
721
+ index.search_for_facet_values(facet, text, query)['facetHits']
738
722
  end
739
723
 
740
724
  # deprecated (renaming)
@@ -763,7 +747,7 @@ module AlgoliaSearch
763
747
  # Loop over each index to see if a attribute used in records has changed
764
748
  algolia_configurations.each do |options, settings|
765
749
  next if algolia_indexing_disabled?(options)
766
- next if options[:slave] || options[:replica]
750
+ next if options[:replica]
767
751
  return true if algolia_object_id_changed?(object, options)
768
752
  settings.get_attribute_names(object).each do |k|
769
753
  return true if algolia_attribute_changed?(object, k)
@@ -808,13 +792,10 @@ module AlgoliaSearch
808
792
  options[:check_settings] = true if options[:check_settings].nil?
809
793
 
810
794
  if !algolia_indexing_disabled?(options) && options[:check_settings] && algoliasearch_settings_changed?(current_settings, index_settings)
811
- used_slaves = !current_settings.nil? && !current_settings['slaves'].nil?
812
795
  replicas = index_settings.delete(:replicas) ||
813
- index_settings.delete('replicas') ||
814
- index_settings.delete(:slaves) ||
815
- index_settings.delete('slaves')
816
- index_settings[used_slaves ? :slaves : :replicas] = replicas unless replicas.nil? || options[:inherit]
817
- @algolia_indexes[settings].set_settings(index_settings)
796
+ index_settings.delete('replicas')
797
+ index_settings[:replicas] = replicas unless replicas.nil? || options[:inherit]
798
+ @algolia_indexes[settings].set_settings!(index_settings)
818
799
  end
819
800
 
820
801
  @algolia_indexes[settings]
@@ -1,14 +1,29 @@
1
1
  module AlgoliaSearch
2
2
  module Configuration
3
+ def initiliaze
4
+ @client = nil
5
+ end
6
+
3
7
  def configuration
4
8
  @@configuration || raise(NotConfigured, "Please configure AlgoliaSearch. Set AlgoliaSearch.configuration = {application_id: 'YOUR_APPLICATION_ID', api_key: 'YOUR_API_KEY'}")
5
9
  end
6
10
 
7
11
  def configuration=(configuration)
8
12
  @@configuration = configuration.merge(
9
- :user_agent => "Algolia for Rails (#{AlgoliaSearch::VERSION}); Rails (#{Rails::VERSION})"
13
+ :user_agent => "Algolia for Rails (#{AlgoliaSearch::VERSION}); Rails (#{Rails::VERSION::STRING})"
10
14
  )
11
- Algolia.init @@configuration
15
+ end
16
+
17
+ def client
18
+ if @client.nil?
19
+ setup_client
20
+ end
21
+
22
+ @client
23
+ end
24
+
25
+ def setup_client
26
+ @client = Algolia::Search::Client.create_with_config(Algolia::Search::Config.new(@@configuration))
12
27
  end
13
28
  end
14
29
  end
@@ -2,7 +2,11 @@ module AlgoliaSearch
2
2
  module Utilities
3
3
  class << self
4
4
  def get_model_classes
5
- Rails.application.eager_load! if Rails.application # Ensure all models are loaded (not necessary in production when cache_classes is true).
5
+ if Rails.application && defined?(Rails.autoloaders) && Rails.autoloaders.zeitwerk_enabled?
6
+ Zeitwerk::Loader.eager_load_all
7
+ elsif Rails.application
8
+ Rails.application.eager_load!
9
+ end
6
10
  AlgoliaSearch.instance_variable_get :@included_in
7
11
  end
8
12
 
@@ -1,3 +1,3 @@
1
1
  module AlgoliaSearch
2
- VERSION = '1.23.1'
2
+ VERSION = '2.0.0'
3
3
  end
data/spec/spec_helper.rb CHANGED
@@ -29,8 +29,9 @@ RSpec.configure do |c|
29
29
 
30
30
  # Remove all indexes setup in this run in local or CI
31
31
  c.after(:suite) do
32
- safe_index_list.each do |index|
33
- Algolia.client.delete_index!(index['name'])
32
+ safe_index_list.each do |i|
33
+ index = AlgoliaSearch.client.init_index(i['name'])
34
+ index.delete!
34
35
  end
35
36
  end
36
37
  end
@@ -45,7 +46,7 @@ end
45
46
 
46
47
  # get a list of safe indexes in local or CI
47
48
  def safe_index_list
48
- list = Algolia.client.list_indexes()['items']
49
+ list = AlgoliaSearch.client.list_indexes['items']
49
50
  list = list.select { |index| index["name"].include?(SAFE_INDEX_PREFIX) }
50
51
  list.sort_by { |index| index["primary"] || "" }
51
52
  end
@@ -1,6 +1,6 @@
1
1
  require File.expand_path(File.join(File.dirname(__FILE__), 'spec_helper'))
2
2
 
3
- AlgoliaSearch.configuration = { :application_id => ENV['ALGOLIA_APPLICATION_ID'], :api_key => ENV['ALGOLIA_API_KEY'] }
3
+ AlgoliaSearch.configuration = { :application_id => ENV['ALGOLIA_APPLICATION_ID'], :api_key => ENV['ALGOLIA_API_KEY'], :symbolize_keys => false }
4
4
 
5
5
  describe AlgoliaSearch::Utilities do
6
6
 
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.23.1
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Algolia
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-06-25 00:00:00.000000000 Z
11
+ date: 2021-05-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -25,25 +25,19 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: 1.5.1
27
27
  - !ruby/object:Gem::Dependency
28
- name: algoliasearch
28
+ name: algolia
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: 1.23.0
34
31
  - - "<"
35
32
  - !ruby/object:Gem::Version
36
- version: 2.0.0
33
+ version: 3.0.0
37
34
  type: :runtime
38
35
  prerelease: false
39
36
  version_requirements: !ruby/object:Gem::Requirement
40
37
  requirements:
41
- - - ">="
42
- - !ruby/object:Gem::Version
43
- version: 1.23.0
44
38
  - - "<"
45
39
  - !ruby/object:Gem::Version
46
- version: 2.0.0
40
+ version: 3.0.0
47
41
  - !ruby/object:Gem::Dependency
48
42
  name: will_paginate
49
43
  requirement: !ruby/object:Gem::Requirement
@@ -119,14 +113,14 @@ email: contact@algolia.com
119
113
  executables: []
120
114
  extensions: []
121
115
  extra_rdoc_files:
122
- - ChangeLog
116
+ - CHANGELOG.MD
123
117
  - LICENSE
124
118
  - README.md
125
119
  files:
126
120
  - ".document"
127
121
  - ".rspec"
128
122
  - ".travis.yml"
129
- - ChangeLog
123
+ - CHANGELOG.MD
130
124
  - Gemfile
131
125
  - Gemfile.lock
132
126
  - LICENSE
@@ -173,7 +167,7 @@ homepage: http://github.com/algolia/algoliasearch-rails
173
167
  licenses:
174
168
  - MIT
175
169
  metadata: {}
176
- post_install_message:
170
+ post_install_message:
177
171
  rdoc_options: []
178
172
  require_paths:
179
173
  - lib
@@ -188,8 +182,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
188
182
  - !ruby/object:Gem::Version
189
183
  version: '0'
190
184
  requirements: []
191
- rubygems_version: 3.0.3
192
- signing_key:
185
+ rubyforge_project:
186
+ rubygems_version: 2.7.6.2
187
+ signing_key:
193
188
  specification_version: 4
194
189
  summary: AlgoliaSearch integration to your favorite ORM
195
190
  test_files: []