NameError неинициализированная константа ApiAiRuby

Приложение Ruby on Rails, развернутое на Beanstalk, выдает ошибку для API AI / Dialog Flow Gem:

NameError
uninitialized constant MessengerHireController::ApiAiRuby

В моем sidekiq Worker есть следующий код:

dialog_client = ApiAiRuby::Client.new(
  :client_access_token => access_token, 
  :api_session_id => @freelancer.user.id
)
response = dialog_client.text_request msg

Я тестировал его на своем обычном контроллере, и он не работает.

  1. Я перенес его из рабочего в стандартный контроллер.
  2. Он работает на моем локальном компьютере, но не на бобовом стебле
  3. Я запустил консоль rails на beanstalk и попробовал тот же код, и это дало мне ошибку. Я вручную установил gem с gem install 'api-ai-ruby', после чего он перестал выдавать мне NameError на консоли, но все еще не работает в продакшене.
  4. Я проверил с gem list, и гем установлен в производство.

Моя самая большая гипотеза заключается в том, что приложение не может найти установленный драгоценный камень.

Заранее благодарю за помощь.


person Aakash Barot    schedule 20.11.2017    source источник
comment
Как запустить Sidekiq в продакшене? как sidekiq или bundle exec sidekiq? Например, первый способ может не загружать установленные драгоценные камни.   -  person nattfodd    schedule 21.11.2017
comment
Я переместил метод на обычный контроллер, и он по-прежнему выдавал ту же ошибку. Отсюда можно сделать вывод, что проблема не в Worker.   -  person Aakash Barot    schedule 21.11.2017


Ответы (1)


Вам нужно добавить gem 'api-ai-ruby' в свой гем-файл и запустить bundle install, иначе Rails его не загрузит. См. Какая польза от Gemfile в рельсах?

person fangxing    schedule 21.11.2017
comment
Я делал эти вещи. Он работает на моем локальном компьютере, но не на производстве (Beanstalk) - person Aakash Barot; 21.11.2017