2016-10-05 4 views
1

Я использую Algolia в первый раз и пытаюсь получить переиндексации работать локально, но он бросает ошибку ниже:Поиска Algolia - Невозможно индексировать локально

Algolia::AlgoliaError: API not initialized 

2016-09-30T06:18:00.071Z 50262 TID-oxqk9ev1w WARN: {"class":"Search::SomeWorker","args":[2,false],"retry":5,"queue":"default","jid":"1519b78812e13d6df5fdb6a9","created_at":1475216280.067702,"enqueued_at":1475216280.067759,**"error_message":"API not initialized","error_class":"Algolia::AlgoliaError"**,"failed_at":1475216280.0707068,"retry_count":0} 
**2016-09-30T06:18:00.071Z 50262 TID-oxqk9ev1w WARN: Algolia::AlgoliaError: API not initialized** 
2016-09-30T06:18:00.071Z 50262 TID-oxqk9ev1w WARN: /Users/xxx/.rvm/gems/[email protected]/gems/algoliasearch-1.11.0/lib/algolia/client.rb:657:in `client' 
/Users/xxx/.rvm/gems/[email protected]/gems/algoliasearch-1.11.0/lib/algolia/index.rb:11:in `initialize' 
/Users/xxx/.rvm/gems/[email protected]/gems/algoliasearch-rails-1.15.0/lib/algoliasearch-rails.rb:229:in `new' 
/Users/xxx/.rvm/gems/[email protected]/gems/algoliasearch-rails-1.15.0/lib/algoliasearch-rails.rb:229:in `initialize' 
/Users/xxx/.rvm/gems/[email protected]/gems/algoliasearch-rails-1.15.0/lib/algoliasearch-rails.rb:647:in `new' 
/Users/xxx/.rvm/gems/[email protected]/gems/algoliasearch-rails-1.15.0/lib/algoliasearch-rails.rb:647:in `algolia_ensure_init' 
/Users/xxx/.rvm/gems/[email protected]/gems/algoliasearch-rails-1.15.0/lib/algoliasearch-rails.rb:492:in `block in algolia_index!' 
/Users/xxx/.rvm/gems/[email protected]/gems/algoliasearch-rails-1.15.0/lib/algoliasearch-rails.rb:489:in `each' 
/Users/xxx/.rvm/gems/[email protected]/gems/algoliasearch-rails-1.15.0/lib/algoliasearch-rails.rb:489:in `algolia_index!' 
/Users/xxx/.rvm/gems/[email protected]/gems/algoliasearch-rails-1.15.0/lib/algoliasearch-rails.rb:792:in `algolia_index!' 

У меня не было никаких проблем с подключением к клиенту Algolia как показано ниже:

[1] pry(main)> Algolia::Client.new(application_id: xxx, api_key: xxx) 
=> #<Algolia::Client:0x007fe100329f40 
@api_key="xxx", 
@application_id="xxx", 
@batch_timeout=120, 
@connect_timeout=2, 
@headers= 
    {"X-Algolia-API-Key"=>"xxx", 
    "X-Algolia-Application-Id"=>"xxx", 
    "Content-Type"=>"application/json; charset=utf-8", 
    "User-Agent"=>"Algolia for Ruby 1.11.0"}, 
@hosts=["xxx.algolia.net", "xxx-1.algolianet.com", "xxx-3.algolianet.com", "xxx-2.algolianet.com"], 
@receive_timeout=30, 
@search_hosts=["xxx-dsn.algolia.net", "xxx-2.algolianet.com", "xxx-1.algolianet.com", "xxx-3.algolianet.com"], 
@search_timeout=5, 
@send_timeout=30, 
@ssl=true, 
@ssl_version=nil> 

Любая помощь будет замечательной.

+0

Добра пожаловать в Stack Overflow. Хотя ошибка и вывод pry хороши, нам нужно увидеть минимальный скрипт, который воспроизводит проблему. См. «[Ask]», включая связанные страницы, и «[mcve]». –

ответ

4

Возможно, это связано с тем, что вы используете mixing up the 2 ways, чтобы использовать базовый клиент API Ruby. Существует два способа использования клиента API Algolia Ruby:

  • с шаблоном проектирования singleton (1 глобальный клиент API);
  • или с обычными экземплярами клиента N.

Похоже, здесь вы пытаетесь использовать интеграцию Rails который предполагает, что вы инициализирован основной клиент API глобально (с помощью шаблона проектирования одноплодного).

Использование интеграции Rails, вместо вызова Algolia::Client.new вы должны использовать:

AlgoliaSearch.configuration = { application_id: 'xxx', api_key: 'xxx' } 
# this will call Algolia.init 

Вы можете найти более подробную документацию on GitHub.


Если вы хотите использовать базовый клиент API Ruby без интеграции Rails; Вы можете выбрать между:

Использованием необработанного API клиента Ruby, одноплодным путем:

Algolia.init application_id: 'xxx', api_key: 'xxx' 
index = Algolia::Index.new('myindex') # it will use the API client initialised globally 
index.add_objects(...) 

Использованием необработанного API клиента Ruby, в N экземпляры пути:

client = Algolia::Client.new application_id: 'xxx', api_key: 'xxx' 
index = client.init_index('myindex') 
index.add_objects(...) 
+1

Спасибо Редокс. Это правильно - я пытаюсь использовать интеграцию Rails, и я на самом деле настроить его с 'AlgoliaSearch.configuration = {APPLICATION_ID:«ххх», api_key:«ххх»}' в файле Инициализатора. Поэтому я не понимаю, почему API Algolia все еще не удалось инициализировать. Это происходит только локально, поскольку он правильно инициализируется в моей промежуточной среде. FYI - Ошибка Algolia была замечена в выходе Sidekiq. – user1186842

+0

Странно:/Как вы думаете, ваш работник Sidekiq не загружает полную среду, избегая настройки, которая будет установлена ​​вовремя? – redox

+0

Кроме того, вы помещали это 'AlgoliaSearch.configuration' в файл' config/initializers/algolia.rb'? – redox

Смежные вопросы