2013-10-11 3 views
1

Я относительно новичок в Ruby и Programming in General. Я создал это приложение около 6 месяцев назад, которое ищет лучшие твиттер и тенденции Google для вывода файла JSON из самых популярных видеороликов на YouTube. Я развернул его в Heroku и не испытывал никаких проблем, пока twitter api 1 не обновился до api 1.1. 6 месяцев назад, чтобы получить щебетать тенденции, которые работали на местном уровне и в Heroku, мой код выглядит следующим образом ..Twitter Api Клиент: работает локально, но не в Heroku

if trendLocation == nil 
     result = JSON.parse(open("https://api.twitter.com/1/trends/1.json").read) 
    end 

    if trendLocation.to_i == 23424977 
     result = JSON.parse(open("https://api.twitter.com/1/trends/23424977.json").read) 
    end 

    topTen = result.first["trends"] 
    panelArray = Array.new  

(https://api.twitter.com/1/trends/23424977.json) Используется, чтобы быть открытым исходным кодом, который непосредственно дает мне главные тенденции в твиттере (без аутентификации требуется). С тех пор, как обновление API Twitter 1.1 API, ссылка больше не существует, и мне пришлось аутентифицировать мое приложение, чтобы получить тенденции. Теперь каждый раз я призывал твиттер-тенденции в Url, мое приложение падает. Но когда я призываю тренды google, он отлично работает на местном уровне и в Heroku.

Поэтому я загрузил драгоценный камень «twitter» и «oauth» для аутентификации моего приложения с помощью Twitter :: Client. Я изменил свой код на это.

def getPanelsForTwitter(panelMaxCount) 

    client = Twitter::Client.new(
     :consumer_key => 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', 
     :consumer_secret => 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', 
     :oauth_token => 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', 
     :oauth_token_secret => 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' 
    ) 

    usa = client.trends(23424977) 
    world = client.trends(1) 

    trendLocation = params[:woeid] 

    if trendLocation == nil 
     result = world 
    end 

    if trendLocation.to_i == 23424977 
     result = usa 
    end 

    panelArray = Array.new  

end 

Все работает локально и делает все, что нужно делать (например, получить твиттер и тенденции Google, поиск его на YouTube, а также отображать видео результаты). Но когда я подтолкнул его к Heroku, приложение аварийно завершает работу, но не работает, когда я нажимаю или развертываю его в Heroku.

Я побежал журналы Heroku и это то, что я получаю


2013-10-13T19:38:31.623556+00:00 app[web.1]: => Call with -d to detach 
2013-10-13T19:38:31.623556+00:00 app[web.1]: => Ctrl-C to shutdown server 
2013-10-13T19:38:31.631953+00:00 app[web.1]: Exiting 
2013-10-13T19:38:31.635716+00:00 app[web.1]: from /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.9/lib/active_support/dependencies.rb:225:in `require_dependency' 
2013-10-13T19:38:31.635811+00:00 app[web.1]: from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.9/lib/rails/engine.rb:439:in `block (2 levels) in eager_load!' 
2013-10-13T19:38:31.635811+00:00 app[web.1]: from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.9/lib/rails/engine.rb:438:in `block in eager_load!' 
2013-10-13T19:38:31.635716+00:00 app[web.1]: from /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.9/lib/active_support/dependencies.rb:312:in `depend_on' 
2013-10-13T19:38:31.635670+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.9/lib/active_support/dependencies.rb:317:in `rescue in depend_on': No such file to load -- oAuth (LoadError) 
2013-10-13T19:38:31.635811+00:00 app[web.1]: from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.9/lib/rails/engine.rb:438:in `each' 
2013-10-13T19:38:31.635811+00:00 app[web.1]: from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.9/lib/rails/initializable.rb:30:in `instance_exec' 
2013-10-13T19:38:31.635811+00:00 app[web.1]: from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.9/lib/rails/engine.rb:436:in `eager_load!' 
2013-10-13T19:38:31.635811+00:00 app[web.1]: from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.9/lib/rails/engine.rb:436:in `each' 
2013-10-13T19:38:31.635811+00:00 app[web.1]: from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.9/lib/rails/initializable.rb:30:in `run' 
2013-10-13T19:38:31.636008+00:00 app[web.1]: from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.9/lib/rails/initializable.rb:54:in `run_initializers' 
2013-10-13T19:38:31.636008+00:00 app[web.1]: from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.9/lib/rails/application.rb:136:in `initialize!' 
2013-10-13T19:38:31.635811+00:00 app[web.1]: from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.9/lib/rails/initializable.rb:55:in `block in run_initializers' 
2013-10-13T19:38:31.636008+00:00 app[web.1]: from /app/vendor/bundle/ruby/1.9.1/gems/rack-1.4.4/lib/rack/builder.rb:51:in `initialize' 
2013-10-13T19:38:31.636008+00:00 app[web.1]: from /app/config/environment.rb:5:in `<top (required)>' 
2013-10-13T19:38:31.636008+00:00 app[web.1]: from /app/config.ru:3:in `require' 
2013-10-13T19:38:31.636008+00:00 app[web.1]: from /app/config.ru:3:in `block in <main>' 
2013-10-13T19:38:31.636008+00:00 app[web.1]: from /app/vendor/bundle/ruby/1.9.1/gems/rack-1.4.4/lib/rack/builder.rb:51:in `instance_eval' 
2013-10-13T19:38:31.635811+00:00 app[web.1]: from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.9/lib/rails/application/finisher.rb:53:in `block in <module:Finisher>' 
2013-10-13T19:38:31.636008+00:00 app[web.1]: from /app/vendor/bundle/ruby/1.9.1/gems/rack-1.4.4/lib/rack/builder.rb:40:in `eval' 
2013-10-13T19:38:31.635811+00:00 app[web.1]: from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.9/lib/rails/initializable.rb:54:in `each' 
2013-10-13T19:38:31.636008+00:00 app[web.1]: from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.9/lib/rails/commands.rb:50:in `tap' 
2013-10-13T19:38:31.636008+00:00 app[web.1]: from /app/vendor/bundle/ruby/1.9.1/gems/rack-1.4.4/lib/rack/server.rb:200:in `app' 
2013-10-13T19:38:31.636008+00:00 app[web.1]: from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.9/lib/rails/commands/server.rb:46:in `app' 
2013-10-13T19:38:31.636008+00:00 app[web.1]: from /app/vendor/bundle/ruby/1.9.1/gems/rack-1.4.4/lib/rack/server.rb:304:in `wrapped_app' 
2013-10-13T19:38:31.636008+00:00 app[web.1]: from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.9/lib/rails/railtie/configurable.rb:30:in `method_missing' 
2013-10-13T19:38:31.636008+00:00 app[web.1]: from /app/vendor/bundle/ruby/1.9.1/gems/rack-1.4.4/lib/rack/builder.rb:40:in `parse_file' 
2013-10-13T19:38:31.636008+00:00 app[web.1]: from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.9/lib/rails/commands.rb:55:in `block in <top (required)>' 
2013-10-13T19:38:31.636008+00:00 app[web.1]: from /app/config.ru:in `new' 
2013-10-13T19:38:31.636008+00:00 app[web.1]: from /app/config.ru:in `<main>' 
2013-10-13T19:38:31.636437+00:00 app[web.1]: from script/rails:6:in `require' 
2013-10-13T19:38:31.636008+00:00 app[web.1]: from /app/vendor/bundle/ruby/1.9.1/gems/rack-1.4.4/lib/rack/server.rb:254:in `start' 
2013-10-13T19:38:31.636437+00:00 app[web.1]: from script/rails:6:in `<main>' 
2013-10-13T19:38:31.636008+00:00 app[web.1]: from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.9/lib/rails/commands/server.rb:70:in `start' 
2013-10-13T19:38:31.636437+00:00 app[web.1]: from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.9/lib/rails/commands.rb:50:in `<top (required)>' 
2013-10-13T19:38:33.267427+00:00 heroku[web.1]: State changed from starting to crashed 
2013-10-13T19:38:33.252069+00:00 heroku[web.1]: Process exited with status 1 
2013-10-13T19:38:35.105276+00:00 heroku[run.1165]: Awaiting client 
2013-10-13T19:38:35.237705+00:00 heroku[run.1165]: Starting process with command `bundle` 
2013-10-13T19:38:37.592953+00:00 heroku[run.1165]: State changed from starting to complete 
2013-10-13T19:38:37.583575+00:00 heroku[run.1165]: Process exited with status 0 
2013-10-13T19:38:51.535832+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/trends?p=10&v=10&source=gt&woeid=23424977 host=radiant-plains-2608.herokuapp.com fwd="50.129.228.74" dyno= connect= service= status=503 bytes= 
129.228.74" dyno= connect= service= status=503 bytes= 
2013-10-13T19:37:58.326215+00:00 heroku[web.1]: State changed from starting to crashed 

========================== =============================================

Первая ошибка, которую я получаю (3.2.9/lib/active_support/dependencies.rb: 317: в `rescue in depend_on ': нет такого файла для загрузки - oAuth (LoadError)).

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

вот мой gemfile.lock

GEM 
    remote: https://rubygems.org/ 
    specs: 
    actionmailer (3.2.9) 
     actionpack (= 3.2.9) 
     mail (~> 2.4.4) 
    actionpack (3.2.9) 
     activemodel (= 3.2.9) 
     activesupport (= 3.2.9) 
     builder (~> 3.0.0) 
     erubis (~> 2.7.0) 
     journey (~> 1.0.4) 
     rack (~> 1.4.0) 
     rack-cache (~> 1.2) 
     rack-test (~> 0.6.1) 
     sprockets (~> 2.2.1) 
    activemodel (3.2.9) 
     activesupport (= 3.2.9) 
     builder (~> 3.0.0) 
    activerecord (3.2.9) 
     activemodel (= 3.2.9) 
     activesupport (= 3.2.9) 
     arel (~> 3.0.2) 
     tzinfo (~> 0.3.29) 
    activeresource (3.2.9) 
     activemodel (= 3.2.9) 
     activesupport (= 3.2.9) 
    activesupport (3.2.9) 
     i18n (~> 0.6) 
     multi_json (~> 1.0) 
    arel (3.0.2) 
    builder (3.0.4) 
    coffee-rails (3.2.2) 
     coffee-script (>= 2.2.0) 
     railties (~> 3.2.0) 
    coffee-script (2.2.0) 
     coffee-script-source 
     execjs 
    coffee-script-source (1.4.0) 
    erubis (2.7.0) 
    execjs (1.4.0) 
     multi_json (~> 1.0) 
    faraday (0.8.5) 
     multipart-post (~> 1.1) 
    hike (1.2.1) 
    httpauth (0.2.0) 
    i18n (0.6.1) 
    journey (1.0.4) 
    jquery-rails (2.2.0) 
     railties (>= 3.0, < 5.0) 
     thor (>= 0.14, < 2.0) 
    json (1.7.6) 
    jwt (0.1.5) 
     multi_json (>= 1.0) 
    mail (2.4.4) 
     i18n (>= 0.4.0) 
     mime-types (~> 1.16) 
     treetop (~> 1.4.8) 
    mime-types (1.19) 
    multi_json (1.5.0) 
    multi_xml (0.5.3) 
    multipart-post (1.1.5) 
    nokogiri (1.5.6) 
    oauth (0.4.7) 
    oauth2 (0.9.1) 
     faraday (~> 0.8) 
     httpauth (~> 0.1) 
     jwt (~> 0.1.4) 
     multi_json (~> 1.0) 
     multi_xml (~> 0.5) 
     rack (~> 1.2) 
    pg (0.14.1) 
    polyglot (0.3.3) 
    rack (1.4.4) 
    rack-cache (1.2) 
     rack (>= 0.4) 
    rack-ssl (1.3.2) 
     rack 
    rack-test (0.6.2) 
     rack (>= 1.0) 
    rails (3.2.9) 
     actionmailer (= 3.2.9) 
     actionpack (= 3.2.9) 
     activerecord (= 3.2.9) 
     activeresource (= 3.2.9) 
     activesupport (= 3.2.9) 
     bundler (~> 1.0) 
     railties (= 3.2.9) 
    railties (3.2.9) 
     actionpack (= 3.2.9) 
     activesupport (= 3.2.9) 
     rack-ssl (~> 1.3.2) 
     rake (>= 0.8.7) 
     rdoc (~> 3.4) 
     thor (>= 0.14.6, < 2.0) 
    rake (10.0.3) 
    rdoc (3.12) 
     json (~> 1.4) 
    sass (3.2.5) 
    sass-rails (3.2.6) 
     railties (~> 3.2.0) 
     sass (>= 3.1.10) 
     tilt (~> 1.3) 
    simple_oauth (0.2.0) 
    sprockets (2.2.2) 
     hike (~> 1.2) 
     multi_json (~> 1.0) 
     rack (~> 1.0) 
     tilt (~> 1.1, != 1.3.0) 
    sqlite3 (1.3.7) 
    thor (0.17.0) 
    tilt (1.3.3) 
    treetop (1.4.12) 
     polyglot 
     polyglot (>= 0.3.1) 
    twitter (4.8.1) 
     faraday (~> 0.8, < 0.10) 
     multi_json (~> 1.0) 
     simple_oauth (~> 0.2) 
    tzinfo (0.3.35) 
    uglifier (1.3.0) 
     execjs (>= 0.3.0) 
     multi_json (~> 1.0, >= 1.0.2) 
    youtube_it (2.1.13) 
     builder 
     faraday (~> 0.8) 
     nokogiri (~> 1.5.2) 
     oauth (~> 0.4.4) 
     oauth2 (~> 0.6) 
     simple_oauth (>= 0.1.5) 

PLATFORMS 
    ruby 

DEPENDENCIES 
    coffee-rails (~> 3.2.1) 
    jquery-rails 
    oauth 
    pg 
    rails (= 3.2.9) 
    sass-rails (~> 3.2.3) 
    sqlite3 
    twitter (>= 4.8.1) 
    uglifier (>= 1.0.3) 
    youtube_it 

Все матчи, когда я запускаю список драгоценных камней на месте, и когда я бегу Heroku запустить список драгоценных камней. Я попытался удалить «twitter» и «oauth» драгоценные камни, переустановить его и запустить установку пакета, но все еще имея ту же проблему.

В этом текущем состоянии мое приложение работает только локально и не работает в Heroku (live) вообще, даже когда Im пытается получить только тенденции Google. Все приложение сработает.

Когда я откатился до шести месяцев назад в Heroku, приложение только терпит крах, когда Im называет что-то из твиттера. Все остальное работает в Хереку.

Это заставляет меня поверить, что это проблема с развертыванием Heroku, когда он пытается прочитать gemfile. Правильно? Я что-то пропустил? есть ли другие драгоценные камни, которые я мог бы использовать? или это не проблема драгоценного камня?

GitHub: https://github.com/meeks16/webservice

Благодаря

+0

что не работает? что происходит, когда вы развертываете его на героку? можете ли вы опубликовать журналы героя? – rb512

+2

Вы зашли в dev.twitter.com и обновили URL-адрес обратного вызова? Возможно, он перенаправляется на ваш локальный хост после утверждения пользователем. (Я думаю, что ваша библиотека oAuth может дополнительно указать URL-адрес обратного вызова, но если нет, он перенаправит обратно на тот, который вы включили в настройки.) – mahemoff

+0

зарегистрировать 2 приложения в твиттере. 1 для разработки и 1 для вашего живого приложения, а также поставить ключи и секрет в переменные окружения – AJcodez

ответ

1

Спасибо всем за ваш ввод. Наконец нашел, что с этим не так. Это было очень небрежно, но это была простая синтаксическая ошибка. Моя ошибка в журналах Heroku был ..

`rescue in depend_on': No such file to load -- oAuth (LoadError) 

У меня был отдельный temps_controller, что имел требуют «OAuth», что я совершенно забыл о. Жемчужина «oAuth» не существует, она должна была быть «oauth». Вот почему приложение падает при развертывании на герою. Я немного удивился и озадачен, почему он работал локально. Я предполагаю, что localhost более прощает ошибки, подобные этим?

Я действительно должен быть осторожным, когда Im развертывается на реальном сайте. Убедившись, что очистил мой код, удалив все временные файлы, которые я использовал для тестирования. Возможно, избегайте использования в контроллерах. Просто установите необходимый камень.

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

0

Я думаю, что у вас есть некоторые хорошие ответы в комментариях, но вы также можете посмотреть на Twitter Gem, чтобы гарантировать, что Вы не бросать общественности API, где они могут быть скомпрометированы

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