algoliasearch-rails 1.24.1 → 2.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +6 -0
- data/{ChangeLog → CHANGELOG.MD} +27 -0
- data/Gemfile +9 -35
- data/Gemfile.lock +118 -124
- data/README.md +11 -1
- data/algoliasearch-rails.gemspec +5 -5
- data/lib/algoliasearch-rails.rb +35 -59
- data/lib/algoliasearch/configuration.rb +17 -2
- data/lib/algoliasearch/pagination/kaminari.rb +1 -1
- data/lib/algoliasearch/utilities.rb +5 -1
- data/lib/algoliasearch/version.rb +1 -1
- data/spec/spec_helper.rb +4 -3
- data/spec/utilities_spec.rb +1 -1
- metadata +11 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 26a8d2a81e62be25bfd5379acaf4c31029a11fa2231a17f3badf14fb59bb8c23
|
4
|
+
data.tar.gz: fdc5690093c28e50c893b99ec3d15bfdf0dfd64d20069df84ad8bebd88941799
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 875c1b3e74c08248137218338e2a1a1e7d92f2bf902eb45c41870362bd66a2557f15034362d2024315b7e2b72ae3df924a5675b74cc92abea3064269b208a37b
|
7
|
+
data.tar.gz: 30ca8ded1c92591dacafa1ead13ea53a4663d162634b30897c1782124b910b705552426f49c80427cff1d6c8e2c1fc104d7e7bfdd571679bd499b918ac8e88aa
|
data/.travis.yml
CHANGED
@@ -33,10 +33,16 @@ matrix:
|
|
33
33
|
env: RAILS_VERSION=5.1 SEQUEL_VERSION=5.0
|
34
34
|
- rvm: 2.5.3
|
35
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
|
36
38
|
- rvm: 2.6.0
|
37
39
|
env: RAILS_VERSION=5.2 SEQUEL_VERSION=5.0
|
40
|
+
- rvm: 2.6.0
|
41
|
+
env: RAILS_VERSION=6.0 SEQUEL_VERSION=5.0
|
38
42
|
- rvm: 2.7.0
|
39
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
|
40
46
|
|
41
47
|
before_install:
|
42
48
|
- wget http://api-key-dealer.herokuapp.com/clients/algolia-keys && chmod +x algolia-keys
|
data/{ChangeLog → CHANGELOG.MD}
RENAMED
@@ -1,5 +1,32 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
|
+
## [Unreleased](https://github.com/algolia/algoliasearch-rails/compare/2.1.1...master)
|
4
|
+
|
5
|
+
## [2.1.1](https://github.com/algolia/algoliasearch-rails/compare/2.1.1...2.1.0)
|
6
|
+
### Fixed
|
7
|
+
- Error with Ruby 3 in regards to default splat behavior [`#400`](https://github.com/algolia/algoliasearch-rails/pull/400)
|
8
|
+
|
9
|
+
## [2.1.0](https://github.com/algolia/algoliasearch-rails/compare/2.1.0...2.0.0)
|
10
|
+
### Added
|
11
|
+
- Add support for [virtual replicas](https://www.algolia.com/doc/guides/managing-results/refine-results/sorting/in-depth/replicas/#what-are-virtual-replicas) ([#386](https://github.com/algolia/algoliasearch-rails/pull/386))
|
12
|
+
|
13
|
+
|
14
|
+
## [2.0.0](https://github.com/algolia/algoliasearch-rails/compare/2.0.0...1.25.0)
|
15
|
+
|
16
|
+
### Breaking changes
|
17
|
+
- Adds support for `algolia` gem.
|
18
|
+
- Drops support for Ruby < 2.4
|
19
|
+
- Drops support for Rails < 5.1
|
20
|
+
|
21
|
+
## [1.25.0](https://github.com/algolia/algoliasearch-rails/compare/1.24.1...1.25.0) (2020-11-24)
|
22
|
+
|
23
|
+
### Added
|
24
|
+
- Pass array argument to geoloc ([#372](https://github.com/algolia/algoliasearch-rails/pull/372))
|
25
|
+
- Containerize the repo ([#391](https://github.com/algolia/algoliasearch-rails/pull/391))
|
26
|
+
|
27
|
+
### Fixed
|
28
|
+
- Use Zeitwerk for loading models in Rails 6 ([#364](https://github.com/algolia/algoliasearch-rails/pull/364))
|
29
|
+
|
3
30
|
## [1.24.1](https://github.com/algolia/algoliasearch-rails/releases/tag/1.24.1) (2020-07-15)
|
4
31
|
|
5
32
|
**Fixed**
|
data/Gemfile
CHANGED
@@ -1,41 +1,22 @@
|
|
1
1
|
source "http://rubygems.org"
|
2
2
|
|
3
|
-
gem 'json', '
|
4
|
-
gem '
|
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"]
|
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
|
15
|
-
gem '
|
16
|
-
|
17
|
-
gem '
|
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
|
-
|
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,85 +1,90 @@
|
|
1
1
|
GEM
|
2
2
|
remote: http://rubygems.org/
|
3
3
|
specs:
|
4
|
-
actioncable (6.
|
5
|
-
actionpack (= 6.
|
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
|
-
actionmailbox (6.
|
9
|
-
actionpack (= 6.
|
10
|
-
activejob (= 6.
|
11
|
-
activerecord (= 6.
|
12
|
-
activestorage (= 6.
|
13
|
-
activesupport (= 6.
|
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)
|
14
15
|
mail (>= 2.7.1)
|
15
|
-
actionmailer (6.
|
16
|
-
actionpack (= 6.
|
17
|
-
actionview (= 6.
|
18
|
-
activejob (= 6.
|
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)
|
19
21
|
mail (~> 2.5, >= 2.5.4)
|
20
22
|
rails-dom-testing (~> 2.0)
|
21
|
-
actionpack (6.
|
22
|
-
actionview (= 6.
|
23
|
-
activesupport (= 6.
|
24
|
-
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)
|
25
27
|
rack-test (>= 0.6.3)
|
26
28
|
rails-dom-testing (~> 2.0)
|
27
29
|
rails-html-sanitizer (~> 1.0, >= 1.2.0)
|
28
|
-
actiontext (6.
|
29
|
-
actionpack (= 6.
|
30
|
-
activerecord (= 6.
|
31
|
-
activestorage (= 6.
|
32
|
-
activesupport (= 6.
|
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)
|
33
35
|
nokogiri (>= 1.8.5)
|
34
|
-
actionview (6.
|
35
|
-
activesupport (= 6.
|
36
|
+
actionview (6.1.3.1)
|
37
|
+
activesupport (= 6.1.3.1)
|
36
38
|
builder (~> 3.1)
|
37
39
|
erubi (~> 1.4)
|
38
40
|
rails-dom-testing (~> 2.0)
|
39
41
|
rails-html-sanitizer (~> 1.1, >= 1.2.0)
|
40
|
-
active_model_serializers (0.10.
|
41
|
-
actionpack (>= 4.1, < 6.
|
42
|
-
activemodel (>= 4.1, < 6.
|
42
|
+
active_model_serializers (0.10.12)
|
43
|
+
actionpack (>= 4.1, < 6.2)
|
44
|
+
activemodel (>= 4.1, < 6.2)
|
43
45
|
case_transform (>= 0.2)
|
44
46
|
jsonapi-renderer (>= 0.1.1.beta1, < 0.3)
|
45
|
-
activejob (6.
|
46
|
-
activesupport (= 6.
|
47
|
+
activejob (6.1.3.1)
|
48
|
+
activesupport (= 6.1.3.1)
|
47
49
|
globalid (>= 0.3.6)
|
48
|
-
activemodel (6.
|
49
|
-
activesupport (= 6.
|
50
|
-
activerecord (6.
|
51
|
-
activemodel (= 6.
|
52
|
-
activesupport (= 6.
|
53
|
-
activestorage (6.
|
54
|
-
actionpack (= 6.
|
55
|
-
activejob (= 6.
|
56
|
-
activerecord (= 6.
|
57
|
-
|
58
|
-
|
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)
|
59
63
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
60
|
-
i18n (>=
|
61
|
-
minitest (
|
62
|
-
tzinfo (~>
|
63
|
-
zeitwerk (~> 2.
|
64
|
+
i18n (>= 1.6, < 2)
|
65
|
+
minitest (>= 5.1)
|
66
|
+
tzinfo (~> 2.0)
|
67
|
+
zeitwerk (~> 2.3)
|
64
68
|
addressable (2.4.0)
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
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)
|
70
75
|
case_transform (0.2)
|
71
76
|
activesupport
|
72
|
-
concurrent-ruby (1.1.
|
73
|
-
crass (1.0.
|
74
|
-
diff-lcs (1.
|
75
|
-
erubi (1.
|
76
|
-
ethon (0.
|
77
|
-
ffi (>= 1.
|
78
|
-
faraday (0.17.
|
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)
|
79
84
|
multipart-post (>= 1.2, < 3)
|
80
|
-
faraday_middleware (0.
|
85
|
+
faraday_middleware (0.14.0)
|
81
86
|
faraday (>= 0.7.4, < 1.0)
|
82
|
-
ffi (1.
|
87
|
+
ffi (1.15.0)
|
83
88
|
gh (0.15.1)
|
84
89
|
addressable (~> 2.4.0)
|
85
90
|
backports
|
@@ -90,78 +95,68 @@ GEM
|
|
90
95
|
globalid (0.4.2)
|
91
96
|
activesupport (>= 4.2.0)
|
92
97
|
highline (1.7.10)
|
93
|
-
|
94
|
-
i18n (1.7.0)
|
98
|
+
i18n (1.8.10)
|
95
99
|
concurrent-ruby (~> 1.0)
|
96
|
-
json (
|
100
|
+
json (2.5.1)
|
97
101
|
jsonapi-renderer (0.2.2)
|
98
|
-
kaminari (
|
99
|
-
|
100
|
-
|
101
|
-
kaminari-activerecord (= 1.1.1)
|
102
|
-
kaminari-core (= 1.1.1)
|
103
|
-
kaminari-actionview (1.1.1)
|
104
|
-
actionview
|
105
|
-
kaminari-core (= 1.1.1)
|
106
|
-
kaminari-activerecord (1.1.1)
|
107
|
-
activerecord
|
108
|
-
kaminari-core (= 1.1.1)
|
109
|
-
kaminari-core (1.1.1)
|
102
|
+
kaminari (0.17.0)
|
103
|
+
actionpack (>= 3.0.0)
|
104
|
+
activesupport (>= 3.0.0)
|
110
105
|
launchy (2.4.3)
|
111
106
|
addressable (~> 2.3)
|
112
|
-
loofah (2.
|
107
|
+
loofah (2.9.1)
|
113
108
|
crass (~> 1.0.2)
|
114
109
|
nokogiri (>= 1.5.9)
|
115
110
|
mail (2.7.1)
|
116
111
|
mini_mime (>= 0.1.1)
|
117
|
-
marcel (0.
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
minitest (5.13.0)
|
124
|
-
multi_json (1.14.1)
|
112
|
+
marcel (1.0.1)
|
113
|
+
method_source (1.0.0)
|
114
|
+
mini_mime (1.0.3)
|
115
|
+
mini_portile2 (2.5.0)
|
116
|
+
minitest (5.14.4)
|
117
|
+
multi_json (1.15.0)
|
125
118
|
multipart-post (2.1.1)
|
126
119
|
net-http-persistent (2.9.4)
|
127
120
|
net-http-pipeline (1.0.1)
|
128
|
-
nio4r (2.5.
|
129
|
-
nokogiri (1.
|
130
|
-
mini_portile2 (~> 2.
|
121
|
+
nio4r (2.5.7)
|
122
|
+
nokogiri (1.11.3)
|
123
|
+
mini_portile2 (~> 2.5.0)
|
124
|
+
racc (~> 1.4)
|
131
125
|
pusher-client (0.6.2)
|
132
126
|
json
|
133
127
|
websocket (~> 1.0)
|
134
|
-
|
128
|
+
racc (1.5.2)
|
129
|
+
rack (2.2.3)
|
135
130
|
rack-test (1.1.0)
|
136
131
|
rack (>= 1.0, < 3)
|
137
|
-
rails (6.
|
138
|
-
actioncable (= 6.
|
139
|
-
actionmailbox (= 6.
|
140
|
-
actionmailer (= 6.
|
141
|
-
actionpack (= 6.
|
142
|
-
actiontext (= 6.
|
143
|
-
actionview (= 6.
|
144
|
-
activejob (= 6.
|
145
|
-
activemodel (= 6.
|
146
|
-
activerecord (= 6.
|
147
|
-
activestorage (= 6.
|
148
|
-
activesupport (= 6.
|
149
|
-
bundler (>= 1.
|
150
|
-
railties (= 6.
|
132
|
+
rails (6.1.3.1)
|
133
|
+
actioncable (= 6.1.3.1)
|
134
|
+
actionmailbox (= 6.1.3.1)
|
135
|
+
actionmailer (= 6.1.3.1)
|
136
|
+
actionpack (= 6.1.3.1)
|
137
|
+
actiontext (= 6.1.3.1)
|
138
|
+
actionview (= 6.1.3.1)
|
139
|
+
activejob (= 6.1.3.1)
|
140
|
+
activemodel (= 6.1.3.1)
|
141
|
+
activerecord (= 6.1.3.1)
|
142
|
+
activestorage (= 6.1.3.1)
|
143
|
+
activesupport (= 6.1.3.1)
|
144
|
+
bundler (>= 1.15.0)
|
145
|
+
railties (= 6.1.3.1)
|
151
146
|
sprockets-rails (>= 2.0.0)
|
152
147
|
rails-dom-testing (2.0.3)
|
153
148
|
activesupport (>= 4.2.0)
|
154
149
|
nokogiri (>= 1.6)
|
155
150
|
rails-html-sanitizer (1.3.0)
|
156
151
|
loofah (~> 2.3)
|
157
|
-
railties (6.
|
158
|
-
actionpack (= 6.
|
159
|
-
activesupport (= 6.
|
152
|
+
railties (6.1.3.1)
|
153
|
+
actionpack (= 6.1.3.1)
|
154
|
+
activesupport (= 6.1.3.1)
|
160
155
|
method_source
|
161
156
|
rake (>= 0.8.7)
|
162
|
-
thor (
|
157
|
+
thor (~> 1.0)
|
163
158
|
rake (10.1.1)
|
164
|
-
rdoc (6.
|
159
|
+
rdoc (6.3.0)
|
165
160
|
redgreen (1.2.2)
|
166
161
|
rspec (2.99.0)
|
167
162
|
rspec-core (~> 2.99.0)
|
@@ -171,18 +166,17 @@ GEM
|
|
171
166
|
rspec-expectations (2.99.2)
|
172
167
|
diff-lcs (>= 1.1.3, < 2.0)
|
173
168
|
rspec-mocks (2.99.4)
|
174
|
-
sequel (5.
|
175
|
-
sprockets (4.0.
|
169
|
+
sequel (5.43.0)
|
170
|
+
sprockets (4.0.2)
|
176
171
|
concurrent-ruby (~> 1.0)
|
177
172
|
rack (> 1, < 3)
|
178
|
-
sprockets-rails (3.2.
|
173
|
+
sprockets-rails (3.2.2)
|
179
174
|
actionpack (>= 4.0)
|
180
175
|
activesupport (>= 4.0)
|
181
176
|
sprockets (>= 3.0.0)
|
182
|
-
sqlite3 (1.
|
183
|
-
thor (
|
184
|
-
|
185
|
-
travis (1.8.10)
|
177
|
+
sqlite3 (1.4.2)
|
178
|
+
thor (1.1.0)
|
179
|
+
travis (1.8.13)
|
186
180
|
backports
|
187
181
|
faraday (~> 0.9)
|
188
182
|
faraday_middleware (~> 0.9, >= 0.9.1)
|
@@ -193,14 +187,14 @@ GEM
|
|
193
187
|
typhoeus (~> 0.6, >= 0.6.8)
|
194
188
|
typhoeus (0.8.0)
|
195
189
|
ethon (>= 0.8.0)
|
196
|
-
tzinfo (
|
197
|
-
|
198
|
-
websocket (1.2.
|
199
|
-
websocket-driver (0.7.
|
190
|
+
tzinfo (2.0.4)
|
191
|
+
concurrent-ruby (~> 1.0)
|
192
|
+
websocket (1.2.9)
|
193
|
+
websocket-driver (0.7.3)
|
200
194
|
websocket-extensions (>= 0.1.0)
|
201
|
-
websocket-extensions (0.1.
|
202
|
-
will_paginate (3.
|
203
|
-
zeitwerk (2.2
|
195
|
+
websocket-extensions (0.1.5)
|
196
|
+
will_paginate (3.3.0)
|
197
|
+
zeitwerk (2.4.2)
|
204
198
|
|
205
199
|
PLATFORMS
|
206
200
|
ruby
|
@@ -209,19 +203,19 @@ DEPENDENCIES
|
|
209
203
|
active_model_serializers
|
210
204
|
activerecord-jdbc-adapter
|
211
205
|
activerecord-jdbcsqlite3-adapter
|
212
|
-
|
206
|
+
algolia (< 3.0.0)
|
213
207
|
jdbc-sqlite3
|
214
|
-
json (
|
215
|
-
kaminari
|
216
|
-
rails (
|
208
|
+
json (>= 1.5.1)
|
209
|
+
kaminari (< 1)
|
210
|
+
rails (~> 6.1)
|
217
211
|
rake (~> 10.1.0)
|
218
212
|
rdoc
|
219
213
|
redgreen
|
220
214
|
rspec (>= 2.5.0, < 3.0)
|
221
215
|
sequel (>= 4.0)
|
222
|
-
sqlite3 (
|
216
|
+
sqlite3 (~> 1.4.0)
|
223
217
|
travis
|
224
218
|
will_paginate (>= 2.3.15)
|
225
219
|
|
226
220
|
BUNDLED WITH
|
227
|
-
2.
|
221
|
+
2.1.4
|
data/README.md
CHANGED
@@ -6,7 +6,7 @@
|
|
6
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
7
|
|
8
8
|
<p align="center">
|
9
|
-
<a href="https://
|
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
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
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
12
|
<img src="https://img.shields.io/badge/ActiveRecord-yes-blue.svg?style=flat-square" alt="ActiveRecord"></img>
|
@@ -20,6 +20,7 @@
|
|
20
20
|
<a href="https://discourse.algolia.com" target="_blank">Community Forum</a> •
|
21
21
|
<a href="http://stackoverflow.com/questions/tagged/algolia" target="_blank">Stack Overflow</a> •
|
22
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> •
|
23
24
|
<a href="https://www.algolia.com/support" target="_blank">Support</a>
|
24
25
|
</p>
|
25
26
|
|
@@ -82,6 +83,8 @@ You can find the full reference on [Algolia's website](https://www.algolia.com/d
|
|
82
83
|
1. **[Testing](#testing)**
|
83
84
|
* [Notes](#notes)
|
84
85
|
|
86
|
+
1. **[Troubleshooting](#troubleshooting)**
|
87
|
+
* [Frequently asked questions](#frequently-asked-questions)
|
85
88
|
|
86
89
|
|
87
90
|
|
@@ -1181,4 +1184,11 @@ end
|
|
1181
1184
|
```
|
1182
1185
|
|
1183
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.
|
1184
1194
|
|
data/algoliasearch-rails.gemspec
CHANGED
@@ -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
|
-
"
|
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
|
-
"
|
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<
|
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<
|
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<
|
94
|
+
s.add_dependency(%q<algolia>, ["< 3.0.0"])
|
95
95
|
end
|
96
96
|
end
|
97
97
|
|
data/lib/algoliasearch-rails.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
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
|
@@ -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,
|
@@ -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[:
|
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[:
|
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[:
|
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[:
|
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,16 +246,12 @@ module AlgoliaSearch
|
|
248
246
|
v = get_setting(k)
|
249
247
|
settings[k] = v if !v.nil?
|
250
248
|
end
|
251
|
-
|
252
|
-
|
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
|
+
|
250
|
+
if !@options[:replica]
|
258
251
|
settings[:replicas] = additional_indexes.select { |opts, s| opts[:replica] }.map do |opts, s|
|
259
252
|
name = opts[:index_name]
|
260
253
|
name = "#{name}_#{Rails.env.to_s}" if opts[:per_environment]
|
254
|
+
name = "virtual(#{name})" if opts[:virtual]
|
261
255
|
name
|
262
256
|
end
|
263
257
|
settings.delete(:replicas) if settings[:replicas].empty?
|
@@ -266,27 +260,20 @@ module AlgoliaSearch
|
|
266
260
|
end
|
267
261
|
|
268
262
|
def add_index(index_name, options = {}, &block)
|
269
|
-
raise ArgumentError.new('Cannot specify additional index on a replica index') if @options[:
|
263
|
+
raise ArgumentError.new('Cannot specify additional index on a replica index') if @options[:replica]
|
270
264
|
raise ArgumentError.new('No block given') if !block_given?
|
271
265
|
raise ArgumentError.new('Options auto_index and auto_remove cannot be set on nested indexes') if options[:auto_index] || options[:auto_remove]
|
272
266
|
@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
267
|
options[:index_name] = index_name
|
275
268
|
@additional_indexes[options] = IndexSettings.new(options, &block)
|
276
269
|
end
|
277
270
|
|
278
271
|
def add_replica(index_name, options = {}, &block)
|
279
|
-
raise ArgumentError.new('Cannot specify additional replicas on a replica index') if @options[:
|
272
|
+
raise ArgumentError.new('Cannot specify additional replicas on a replica index') if @options[:replica]
|
280
273
|
raise ArgumentError.new('No block given') if !block_given?
|
281
274
|
add_index(index_name, options.merge({ :replica => true, :primary_settings => self }), &block)
|
282
275
|
end
|
283
276
|
|
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
277
|
def additional_indexes
|
291
278
|
@additional_indexes || {}
|
292
279
|
end
|
@@ -304,11 +291,11 @@ module AlgoliaSearch
|
|
304
291
|
# are correctly logged or thrown depending on the `raise_on_failure` option
|
305
292
|
class SafeIndex
|
306
293
|
def initialize(name, raise_on_failure)
|
307
|
-
@index =
|
294
|
+
@index = AlgoliaSearch.client.init_index(name)
|
308
295
|
@raise_on_failure = raise_on_failure.nil? || raise_on_failure
|
309
296
|
end
|
310
297
|
|
311
|
-
::Algolia::Index.instance_methods(false).each do |m|
|
298
|
+
::Algolia::Search::Index.instance_methods(false).each do |m|
|
312
299
|
define_method(m) do |*args, &block|
|
313
300
|
SafeIndex.log_or_throw(m, @raise_on_failure) do
|
314
301
|
@index.send(m, *args, &block)
|
@@ -329,7 +316,7 @@ module AlgoliaSearch
|
|
329
316
|
SafeIndex.log_or_throw(:get_settings, @raise_on_failure) do
|
330
317
|
begin
|
331
318
|
@index.get_settings(*args)
|
332
|
-
rescue Algolia::
|
319
|
+
rescue Algolia::AlgoliaHttpError => e
|
333
320
|
return {} if e.code == 404 # not fatal
|
334
321
|
raise e
|
335
322
|
end
|
@@ -339,7 +326,7 @@ module AlgoliaSearch
|
|
339
326
|
# expose move as well
|
340
327
|
def self.move_index(old_name, new_name)
|
341
328
|
SafeIndex.log_or_throw(:move_index, true) do
|
342
|
-
|
329
|
+
AlgoliaSearch.client.move_index(old_name, new_name)
|
343
330
|
end
|
344
331
|
end
|
345
332
|
|
@@ -511,7 +498,7 @@ module AlgoliaSearch
|
|
511
498
|
algolia_configurations.each do |options, settings|
|
512
499
|
next if algolia_indexing_disabled?(options)
|
513
500
|
index = algolia_ensure_init(options, settings)
|
514
|
-
next if options[:
|
501
|
+
next if options[:replica]
|
515
502
|
last_task = nil
|
516
503
|
|
517
504
|
algolia_find_in_batches(batch_size) do |group|
|
@@ -531,7 +518,7 @@ module AlgoliaSearch
|
|
531
518
|
end
|
532
519
|
last_task = index.save_objects(objects)
|
533
520
|
end
|
534
|
-
index.wait_task(last_task["taskID"]) if last_task and (synchronous || options[:synchronous])
|
521
|
+
index.wait_task(last_task.raw_response["taskID"]) if last_task and (synchronous || options[:synchronous])
|
535
522
|
end
|
536
523
|
nil
|
537
524
|
end
|
@@ -541,7 +528,7 @@ module AlgoliaSearch
|
|
541
528
|
return if algolia_without_auto_index_scope
|
542
529
|
algolia_configurations.each do |options, settings|
|
543
530
|
next if algolia_indexing_disabled?(options)
|
544
|
-
next if options[:
|
531
|
+
next if options[:replica]
|
545
532
|
|
546
533
|
# fetch the master settings
|
547
534
|
master_index = algolia_ensure_init(options, settings)
|
@@ -549,8 +536,6 @@ module AlgoliaSearch
|
|
549
536
|
master_settings.merge!(JSON.parse(settings.to_settings.to_json)) # convert symbols to strings
|
550
537
|
|
551
538
|
# remove the replicas of the temporary index
|
552
|
-
master_settings.delete :slaves
|
553
|
-
master_settings.delete 'slaves'
|
554
539
|
master_settings.delete :replicas
|
555
540
|
master_settings.delete 'replicas'
|
556
541
|
|
@@ -562,7 +547,7 @@ module AlgoliaSearch
|
|
562
547
|
tmp_settings = settings.dup
|
563
548
|
|
564
549
|
if options[:check_settings] == false
|
565
|
-
|
550
|
+
@client.copy_index!(src_index_name, tmp_index_name, %w(settings synonyms rules))
|
566
551
|
tmp_index = SafeIndex.new(tmp_index_name, !!options[:raise_on_failure])
|
567
552
|
else
|
568
553
|
tmp_index = algolia_ensure_init(tmp_options, tmp_settings, master_settings)
|
@@ -578,7 +563,7 @@ module AlgoliaSearch
|
|
578
563
|
end
|
579
564
|
|
580
565
|
move_task = SafeIndex.move_index(tmp_index.name, src_index_name)
|
581
|
-
master_index.wait_task(move_task["taskID"]) if synchronous || options[:synchronous]
|
566
|
+
master_index.wait_task(move_task.raw_response["taskID"]) if synchronous || options[:synchronous]
|
582
567
|
end
|
583
568
|
nil
|
584
569
|
end
|
@@ -587,8 +572,6 @@ module AlgoliaSearch
|
|
587
572
|
algolia_configurations.each do |options, settings|
|
588
573
|
if options[:primary_settings] && options[:inherit]
|
589
574
|
primary = options[:primary_settings].to_settings
|
590
|
-
primary.delete :slaves
|
591
|
-
primary.delete 'slaves'
|
592
575
|
primary.delete :replicas
|
593
576
|
primary.delete 'replicas'
|
594
577
|
final_settings = primary.merge(settings.to_settings)
|
@@ -598,7 +581,7 @@ module AlgoliaSearch
|
|
598
581
|
|
599
582
|
index = SafeIndex.new(algolia_index_name(options), true)
|
600
583
|
task = index.set_settings(final_settings)
|
601
|
-
index.wait_task(task["taskID"]) if synchronous
|
584
|
+
index.wait_task(task.raw_response["taskID"]) if synchronous
|
602
585
|
end
|
603
586
|
end
|
604
587
|
|
@@ -606,9 +589,9 @@ module AlgoliaSearch
|
|
606
589
|
algolia_configurations.each do |options, settings|
|
607
590
|
next if algolia_indexing_disabled?(options)
|
608
591
|
index = algolia_ensure_init(options, settings)
|
609
|
-
next if options[:
|
592
|
+
next if options[:replica]
|
610
593
|
task = index.save_objects(objects.map { |o| settings.get_attributes(o).merge 'objectID' => algolia_object_id_of(o, options) })
|
611
|
-
index.wait_task(task["taskID"]) if synchronous || options[:synchronous]
|
594
|
+
index.wait_task(task.raw_response["taskID"]) if synchronous || options[:synchronous]
|
612
595
|
end
|
613
596
|
end
|
614
597
|
|
@@ -618,13 +601,13 @@ module AlgoliaSearch
|
|
618
601
|
next if algolia_indexing_disabled?(options)
|
619
602
|
object_id = algolia_object_id_of(object, options)
|
620
603
|
index = algolia_ensure_init(options, settings)
|
621
|
-
next if options[:
|
604
|
+
next if options[:replica]
|
622
605
|
if algolia_indexable?(object, options)
|
623
606
|
raise ArgumentError.new("Cannot index a record with a blank objectID") if object_id.blank?
|
624
607
|
if synchronous || options[:synchronous]
|
625
|
-
index.
|
608
|
+
index.save_object!(settings.get_attributes(object).merge 'objectID' => algolia_object_id_of(object, options))
|
626
609
|
else
|
627
|
-
index.
|
610
|
+
index.save_object(settings.get_attributes(object).merge 'objectID' => algolia_object_id_of(object, options))
|
628
611
|
end
|
629
612
|
elsif algolia_conditional_index?(options) && !object_id.blank?
|
630
613
|
# remove non-indexable objects
|
@@ -645,7 +628,7 @@ module AlgoliaSearch
|
|
645
628
|
algolia_configurations.each do |options, settings|
|
646
629
|
next if algolia_indexing_disabled?(options)
|
647
630
|
index = algolia_ensure_init(options, settings)
|
648
|
-
next if options[:
|
631
|
+
next if options[:replica]
|
649
632
|
if synchronous || options[:synchronous]
|
650
633
|
index.delete_object!(object_id)
|
651
634
|
else
|
@@ -659,8 +642,8 @@ module AlgoliaSearch
|
|
659
642
|
algolia_configurations.each do |options, settings|
|
660
643
|
next if algolia_indexing_disabled?(options)
|
661
644
|
index = algolia_ensure_init(options, settings)
|
662
|
-
next if options[:
|
663
|
-
synchronous || options[:synchronous] ? index.
|
645
|
+
next if options[:replica]
|
646
|
+
synchronous || options[:synchronous] ? index.clear_objects! : index.clear_objects
|
664
647
|
@algolia_indexes[settings] = nil
|
665
648
|
end
|
666
649
|
nil
|
@@ -669,8 +652,6 @@ module AlgoliaSearch
|
|
669
652
|
def algolia_raw_search(q, params = {})
|
670
653
|
index_name = params.delete(:index) ||
|
671
654
|
params.delete('index') ||
|
672
|
-
params.delete(:slave) ||
|
673
|
-
params.delete('slave') ||
|
674
655
|
params.delete(:replica) ||
|
675
656
|
params.delete('replica')
|
676
657
|
index = algolia_index(index_name)
|
@@ -735,13 +716,11 @@ module AlgoliaSearch
|
|
735
716
|
def algolia_search_for_facet_values(facet, text, params = {})
|
736
717
|
index_name = params.delete(:index) ||
|
737
718
|
params.delete('index') ||
|
738
|
-
params.delete(:slave) ||
|
739
|
-
params.delete('slave') ||
|
740
719
|
params.delete(:replica) ||
|
741
720
|
params.delete('replicas')
|
742
721
|
index = algolia_index(index_name)
|
743
722
|
query = Hash[params.map { |k, v| [k.to_s, v.to_s] }]
|
744
|
-
index.
|
723
|
+
index.search_for_facet_values(facet, text, query)['facetHits']
|
745
724
|
end
|
746
725
|
|
747
726
|
# deprecated (renaming)
|
@@ -770,7 +749,7 @@ module AlgoliaSearch
|
|
770
749
|
# Loop over each index to see if a attribute used in records has changed
|
771
750
|
algolia_configurations.each do |options, settings|
|
772
751
|
next if algolia_indexing_disabled?(options)
|
773
|
-
next if options[:
|
752
|
+
next if options[:replica]
|
774
753
|
return true if algolia_object_id_changed?(object, options)
|
775
754
|
settings.get_attribute_names(object).each do |k|
|
776
755
|
return true if algolia_attribute_changed?(object, k)
|
@@ -815,13 +794,10 @@ module AlgoliaSearch
|
|
815
794
|
options[:check_settings] = true if options[:check_settings].nil?
|
816
795
|
|
817
796
|
if !algolia_indexing_disabled?(options) && options[:check_settings] && algoliasearch_settings_changed?(current_settings, index_settings)
|
818
|
-
used_slaves = !current_settings.nil? && !current_settings['slaves'].nil?
|
819
797
|
replicas = index_settings.delete(:replicas) ||
|
820
|
-
index_settings.delete('replicas')
|
821
|
-
|
822
|
-
|
823
|
-
index_settings[used_slaves ? :slaves : :replicas] = replicas unless replicas.nil? || options[:inherit]
|
824
|
-
@algolia_indexes[settings].set_settings(index_settings)
|
798
|
+
index_settings.delete('replicas')
|
799
|
+
index_settings[:replicas] = replicas unless replicas.nil? || options[:inherit]
|
800
|
+
@algolia_indexes[settings].set_settings!(index_settings)
|
825
801
|
end
|
826
802
|
|
827
803
|
@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
|
-
|
13
|
+
:user_agent => "Algolia for Rails (#{AlgoliaSearch::VERSION}); Rails (#{Rails::VERSION::STRING})"
|
10
14
|
)
|
11
|
-
|
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
|
-
|
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
|
|
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 |
|
33
|
-
|
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 =
|
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
|
data/spec/utilities_spec.rb
CHANGED
@@ -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.
|
4
|
+
version: 2.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Algolia
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-07-21 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:
|
28
|
+
name: algolia
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 1.26.0
|
34
31
|
- - "<"
|
35
32
|
- !ruby/object:Gem::Version
|
36
|
-
version:
|
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.26.0
|
44
38
|
- - "<"
|
45
39
|
- !ruby/object:Gem::Version
|
46
|
-
version:
|
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
|
-
-
|
116
|
+
- CHANGELOG.MD
|
123
117
|
- LICENSE
|
124
118
|
- README.md
|
125
119
|
files:
|
126
120
|
- ".document"
|
127
121
|
- ".rspec"
|
128
122
|
- ".travis.yml"
|
129
|
-
-
|
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,8 @@ 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.
|
192
|
-
signing_key:
|
185
|
+
rubygems_version: 3.0.6
|
186
|
+
signing_key:
|
193
187
|
specification_version: 4
|
194
188
|
summary: AlgoliaSearch integration to your favorite ORM
|
195
189
|
test_files: []
|