2

私はRubyとプログラミング全般に比較的慣れていません。約 6 か月前にこのアプリを作成しました。このアプリは、Twitter と Google のトップ トレンドを検索して、YouTube で最も人気のあるすべての動画の JSON ファイルを出力します。Heroku にデプロイしましたが、twitter api 1 が api 1.1 に更新されるまで問題はありませんでした。6 か月前、ローカルと heroku で機能する Twitter のトレンドを取得するために、私のコードは次のようになりました。

    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 ) 以前はオープン ソースで、Twitter のトップ トレンドを直接教えてくれました (認証は必要ありません)。Twitter API 1.1 の更新以降、リンクは存在しなくなり、トレンドを取得するにはアプリを認証する必要がありました。現在、URL で Twitter のトレンドを呼び出すたびに、アプリがクラッシュします。しかし、Google トレンドを呼び出すと、ローカルでも Heroku でも問題なく動作します。

そこで、「twitter」と「oauth」gem をダウンロードして、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

すべてがローカルで機能し、必要なすべてのことを行います (Twitter や 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:in `rescue independ_on': No such file to load -- oAuth (LoadError)) です。

だから私は自分の宝石に何か問題があると思っています。ローカルの宝石とherokuの宝石が一致しないと考えています。

ここに私の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

gem list をローカルで実行すると、heroku run gem list を実行すると、すべてが一致します。「twitter」と「oauth」の gem をアンインストールして再インストールし、bundle install を実行しましたが、同じ問題が発生しました。

この現在の状態では、私のアプリはローカルでのみ動作し、Heroku (ライブ) ではまったく動作しません。たとえ Google トレンドのみを取得しようとしてもです。アプリ全体がクラッシュします。

Heroku で 6 か月前にロールバックすると、アプリがクラッシュするのは、Twitter から何かを呼び出したときだけです。それ以外はすべて Heroku で動作します。

これは、gemfile を読み込もうとしているときの Heroku 展開の問題であると私は信じています。右?何か不足していますか?他に使用できる宝石はありますか?それともこれは宝石の問題ではありませんか?

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

ありがとう

4

2 に答える 2

1

ご意見をお寄せいただきありがとうございます。最後に、これの何が問題なのかを見つけました。非常に不注意でしたが、単純な構文エラーでした。herokuログの私のエラーは..

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

完全に忘れていた「oAuth」が必要な別の temps_controller がありました。gem 'oAuth' は存在しません。これは 'oauth' であると想定されていました。これが、heroku にデプロイするとアプリがクラッシュする理由です。なぜそれがローカルで機能したのか、少し驚き、戸惑いました。私は、ローカルホストがこれらのような間違いに対してより寛容であると推測していますか?

ライブ サイトにデプロイするときは、本当に注意が必要です。テストに使用したすべての一時ファイルを削除して、コードを確実にクリーンアップします。コントローラーで require を使用することは避けてください。必要なgemをインストールするだけです。

とても単純でばかげた間違いで、少し時間がかかりましたが、間違いなく多くのことを学びました.

于 2013-10-17T18:37:57.543 に答える
0

コメントにいくつかの良い答えがあると思いますが、Twitter Gemを調べて、公開 API キーが侵害される可能性のある場所に投げ込まないようにすることもできます。

于 2013-10-12T12:03:27.660 に答える