Библиотека Twilio не работает в Rails, но работает вне rails?

#ruby-on-rails #twilio

# #ruby-on-rails #twilio

Вопрос:

Первый постер здесь (будьте осторожны, я провел свое исследование!)

Я новичок в экосистеме Ruby, пришедший с другого языка, но это кажется мне странным. Я добавил библиотеку twilio-ruby в свой Gemfile, выполнил установку пакета / попробовал обновление пакета

пакет показывает twilio-ruby ~/.rvm/gems/ruby-2.1.2/gems/twilio-ruby-3.11.5

Тем не менее, я получаю следующую ошибку при попытке любого из примеров.

Undefined method 'messages' for #<Twilio::REST::Client::Account:0x00000102cea740>

Замените вызовы и т. Д. И т. Д. Ничего не работает. Даже @client.account.sms.messages (устаревшие вызовы).

Я знаком с pry и сделал @client.извлеките self.account.methods.sort, и эти методы / члены класса вообще не присутствуют в модуле.

Так что же работает? ruby test.rb, содержащий:

 @client = Twilio::REST::Client.new '{{removed}}', '{{removed}}'
#@client.pry


p @client.account.messages.create(
  :from => ' 1XXX',
  :to => ' 1XXX',
  :body => 'Hey there!'
)
 

Если я помещу тот же код в начало моего application.rb, вне разделения класса приложения это сработает.

Где еще я пробовал? Контроллеры, модели, автономные классы импортируются и вызываются в controllers/models. Кажется, после загрузки Rails это не работает. Я в таком замешательстве.

Я довольно хорош в отладке, поэтому буду признателен за любые советы в этом направлении!

Версии: Ruby 2.1.2, Rails 4.0.4, twilio-ruby 3.11.5

После каждого вносимого изменения я перезапускаю rails-сервер.

Обновить

 config/application.rb

require 'twilio-ruby'
@client = Twilio::REST::Client.new '{{removed}}', '{{removed}}'
#@client.pry


p @client.account.messages.create(
  :from => ' ',
  :to => ' ',
  :body => 'Hey there!'
)

Bundler.require(:default, Rails.env)

#require 'twilio-ruby'
@client = Twilio::REST::Client.new '{{removed}}', '{{removed}}'
#@client.pry


p @client.account.messages.create(
  :from => ' ',
  :to => ' ',
  :body => 'Hey there!'
)
 

вызов twilio-ruby перед вызовом bundler работает.

вызов twilio-ruby после вызова bundler не работает.

Комментарии:

1. Это определенно странно (и не поддается воспроизведению для меня). Происходит ли это по-прежнему, если вы запускаете пустой проект Rails, добавляя только twilio-ruby драгоценный камень?

2.Работает ли это, если вы раскомментируете сообщение require 'twilio-ruby' после Bundler.requre вызова?

3. Попробуйте с помощью @client.account.sms.messages.create

4. У вас все еще есть эта проблема? Я написал два подробных сообщения в блоге об интеграции Twilio в приложение Rails 4.x: часть 1 и часть 2 .

Ответ №1:

прошло 6 лет, и я делюсь с вами виновником этой проблемы: весна

Я запустил spring stop , и внезапно все загрузилось, как ожидалось.