2

这是我的config/initializers/tire.rb文件:

if Rails.env.production?
 Tire.configure do
  url "http://remoteserver.com:9200"
 end
end

如果我在我的生产服务器上尝试:

bundle exec rake environment tire:import CLASS=Object FORCE=true RAILS_ENV=production

我得到错误:

The original exception was: #<Errno::ECONNREFUSED: Connection refused - connect(2)>

如果我删除这if句话工作正常。

我如何知道轮胎.rb 文件上的 rails 环境?

4

2 回答 2

2

您可以添加轮胎初始化代码,config/environments/production.rb 而不是在轮胎.rb 文件中检查它(移动它时删除轮胎.rb 初始化程序)

我过去做过的另一件事是在http://railscasts.com/episodes/85-yaml-configuration-revised中谈到的 YAML 配置文件。然后你可以像做 database.yml 一样链接你需要的设置。

于 2013-04-08T16:21:02.033 回答
2

Rails 初始化程序 ( config/initializers/tire.rb) 通常是用于 Rails 配置的完美位置。

查看应用程序模板,或者更好的是,使用它生成一个示例应用程序并将其更改为:

Tire.configure do
  url 'http://localhost:9201'
end

您应该看到它正确应用了——当您运行时bundle exec rake environment tire:import:all,您会看到Skipping index creation, cannot connect to Elasticsearch

当然,当你想在 development/production/etc 中对 Elasticsearch URL 进行不同的配置时,最好将其放入环境配置文件中。另一种解决方案是使用ELASTICSEARCH_URL环境变量,该环境变量由 Tyre 开箱即用,用于 Heroku、Bonsai 等。

于 2013-04-09T11:15:30.880 回答