了解Rails default_url_options

时间:2014-03-27 15:04:49

标签: ruby configuration ruby-on-rails-4

我有一个项目,在生产中运行正常(Linux + Apache

但我使用WEBrick开发了两台计算机,一台是Mac(localhost:3000),另一台是通过另一台IP的Linux(例如:http://145.xx.xx.20:3000

要使用url_for(之前的include Rails.application.routes.url_helpers),我需要在development.rb中进行配置:

  routes.default_url_options[:host]="http://145.xx.xx.20"
  routes.default_url_options[:port]="3000"

如果我在production.rb中添加相同的配置,它在生产数据库中也可以使用WEBrick rails s -e=production,这对于使用生产数据库进行开发是完美的。

我有两个问题:

在开发中,¿我如何使url_for()返回正确的网址,这取决于我是在一台计算机还是另一台计算机上? ht..p:/ localhost:3000或http://145.xx.xx.20/:3000

  • 在izumeroot响应之后添加:如何在config / development.rb o config / production.rb中获取request.env(Controller)或Rack :: Request.new(env)?获得主持人?

在Apache环境(实际生产)中,似乎忽略了production.rb,因为总是很好。 http://real.ip.production/为什么?

1 个答案:

答案 0 :(得分:1)

我将此用于电子邮件中的正确域名和端口(开发模式)

config.action_mailer.default_url_options = { :host => lambda { |env| Rack::Request.new(env).host }, :port => 3000 }

我认为您需要使用一些这样的想法,但对于 routes.default_url_options