1

新しいBonsai ElasticSearch heroku アドオンをセットアップしようとしていますが、今まではローカルの開発マシンで検索を実行できました。Heroku にデプロイするとすぐに、同じ検索がサイレントに失敗するか、Rails ロガーは失敗しません。500 Internal Server Errorが発生している間に何かをログに記録します。これは、失敗したクエリ中の関連する Heroku ログです (明らかなエラーは見つかりませんでした): https://gist.github.com/2867221

それをトラブルシューティングする方法についてのアドバイスを探しています。たとえばTire.configure { logger 'elasticsearch.log', :level => 'debug' }、次のように Bonsai イニシャライザ config/initializers/bonsai.rbを設定します。

Tire.configure { logger 'elasticsearch.log', :level => 'debug' }
if ENV['BONSAI_INDEX_URL']
  Tire.configure do
    url "http://index.bonsai.io"
  end
  BONSAI_INDEX_NAME = ENV['BONSAI_INDEX_URL'][/[^\/]+$/]
else
  app_name = Rails.application.class.parent_name.underscore.dasherize
  app_env = Rails.env
  BONSAI_INDEX_NAME = "#{app_name}-#{app_env}"
end

ただし、ファイルにログオンします。これは、ローカルには適していますが、展開後にアクセスできません。

Bonsai ElasticSearch は非常に新しいオン テスト アドオンです。Heroku にデプロイして成功した経験のある方がいらっしゃいましたら、フィードバックやアドバイスをいただけないでしょうか。

アップデート

ロガー logger $stdout, :level => 'debug' を Tire.configure に設定すると、heroku は検索に失敗しているときに何かをログに記録できるようになります。

2012-06-04T21:36:26+00:00 heroku[router]: GET gitwatcher.com/categories?utf8=%E2%9C%93&query=Asynchronous+Web+Frameworks dyno=web.1 queue=0 wait=0ms service=32ms status=500 bytes=728
2012-06-04T21:36:26+00:00 heroku[nginx]: 93.34.212.216 - - [04/Jun/2012:21:36:26 +0000] "GET /categories?utf8=%E2%9C%93&query=Asynchronous+Web+Frameworks HTTP/1.1" 500 728 "http://gitwatcher.com/categories" "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:12.0) Gecko/20100101 Firefox/12.0" gitwatcher.com
2012-06-04T21:36:26+00:00 app[web.1]: # 2012-06-04 21:36:26:387 [_search] (["123456789"])
2012-06-04T21:36:26+00:00 app[web.1]: #
2012-06-04T21:36:26+00:00 app[web.1]: curl -X GET "http://index.bonsai.io/123456789/category/_search?load=true&pretty=true" -d '{"query":{"query_string":{"query":"Asynchronous Web Frameworks"}}}'
2012-06-04T21:36:26+00:00 app[web.1]:
2012-06-04T21:36:26+00:00 app[web.1]: # 2012-06-04 21:36:26:387 [200] (1 msec)
2012-06-04T21:36:26+00:00 app[web.1]:

... https://github.com/karmi/tire/issues/365に開かれた問題の詳細を参照してください

4

1 に答える 1

1

追跡の目的で、GitHubタイヤの問題に投稿した解決策をここ(猫と過去)に報告します:

DEFINETLY WORKS BY:
  1)  dropping out `to_indexed_json` from Category MongoID model ( at the opposit of README indication )
  2)  removing and re-adding Bonsai.io Heroku add-on
  3)  reindexing ElasticSearch by running `heroku run:detached rake environment tire:import CLASS='Category'`

...実際、rake environment tire:import CLASS ='Category' FORCE = trueを実行した場合、Bonsaiが許可した操作のため、Heroku/Bonsai.ioでは機能しません。

  2012-06-11T20:39:30+00:00 app[run.1]: curl -X DELETE http://index.bonsai.io/my-fake-index-11223344
  2012-06-11T20:39:30+00:00 app[run.1]: # 2012-06-11 20:39:30:749 [401]
  2012-06-11T20:39:30+00:00 app[run.1]: #
  2012-06-11T20:39:30+00:00 app[run.1]: # "{\"error\": \"Not authorized: Some endpoints are admin-only, ask support@onemorecloud.com.\"}\n"

最終的にダーティなデータをリセット/再インデックス付けする場合よりも、Bonsaiアドオンを削除して再作成するしかありません。

  heroku addons:remove bonsai:test
  heroku addons:add bonsai:test

そうは言っても、私は本当に汚いデータを持っていました:

  BSON::InvalidObjectId (illegal ObjectId format: LAm-hNglS5mbrMzDlVVHCQ):
  app/controllers/categories_controller.rb:25:in `index'

他のケースと比較するために完全なgemスタックが必要な場合は、https ://gist.github.com/2912881にあります。

于 2012-06-11T22:04:23.600 に答える