gpt4 book ai didi

ruby-on-rails - 盆景服务器挂了怎么办?

转载 作者:太空宇宙 更新时间:2023-11-03 18:22:50 25 4
gpt4 key购买 nike

我将 ElasticSearch 与 Tire 结合使用,并将我的应用程序托管在 Heroku 上。

昨晚,当盆景服务器宕机时,我的整个应用程序崩溃了。当我尝试将应用程序部署到 Heroku 时,Tire 尝试连接并创建索引,并抛出错误,因此我不得不将我的 Tire 代码从所有模型移动到 unless 声明:

unless ENV['ES_DISABLED'] 
# Elastic Search
#
include Tire::Model::Search
include Tire::Model::Callbacks
index_name INDEX_NAME

tire.mapping do
indexes :id, :type => 'string', :index => :not_analyzed
indexes :content, analyzer: 'snowball', boost: 100
end
end

当然,我在 Heroku 上将 ES_DISABLED 常量设置为 true

我想为将来出现类似的错误做好准备。有没有更好的方法来避免它们?

最佳答案

嗯,这很奇怪。 Tire 确实会尝试为模型创建一个索引,当它不存在时,但它不会关闭应用程序。

注意我可以这样做:

$ ps aux | grep java
121:karmi 7197 0.0 0.0 2432768 472 s003 R+ 7:37PM 0:00.00 grep java

$ bundle exec rails console
Loading development environment (Rails 3.2.11)
Article
Skipping index creation, cannot connect to Elasticsearch
(The original exception was: #<Errno::ECONNREFUSED: Connection refused - connect(2)>)
=> Article(id: integer, title: string, content: text, author: string, published_on: date, created_at: datetime, updated_at: datetime)
Article.search '*'
Errno::ECONNREFUSED: Connection refused - connect(2)
from /Users/karmi/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/net/http.rb:762:in `initialize'
...
from /Users/karmi/Playground/ElasticSearch/Tire/tire/lib/tire/search.rb:35:in `results'

不应该将您的mapping 等定义包装在begin/rescue 中——相反,您应该在其中包含一个rescue_from 或其他方式通知用户搜索功能不工作的应用程序代码。

关于ruby-on-rails - 盆景服务器挂了怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15228293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com