Rails アプリの一部である MongoMapper モデルで検索機能を提供するために、Tire と elasticsearch を使用しています。次の構成 (config/environments/env_name.rb 内) を使用する環境に再デプロイしたときに、このモデルのマッピングが更新されないという問題に遭遇しました。
config.cache_classes = true
クラスだけをリロードしても問題は解決しないようです (おそらく、新しいマッピングは既存のデータと互換性がないのではないでしょうか?)。代わりに、次のことを行う必要がありました。
MyModel.index.delete
<restart the app or reload the class>
MyModel.index.import MyModel.all
a)のより良い方法があるかどうか疑問に思いました。私のモデルコードで定義された最新のマッピングが、各展開後にelasticsearchによって使用されていることを確認しますが、b)。完全なデータセットでインデックスを不必要に再作成するのを避けますか?
通常は Chef を使用してデプロイするので、私が成功裏に使用した 3 つのステップをそれほど問題なく自動化できました。しかし、私はelasticsearchとtireに慣れていないので、両方を誤用しているか、不必要に難しくしている可能性が高いと思いました.