我需要根据环境设置独角兽的端口。像这样:
#config/unicorn.rb
if Rails.env.production?
listen 8080, :tcp_nopush => true
elsif Rails.env.staging?
listen 3001, :tcp_nopush => true
end
上面的代码返回此错误:
[out :: 172.30.1.24] config/unicorn.rb:32:in `reload': uninitialized constant Unicorn::Configurator::Rails (NameError)
如何根据环境更改端口?
泰!
答案 0 :(得分:2)
尝试检查环境变量
environment = ENV['RACK_ENV'] || ENV['RAILS_ENV'] || 'production'
答案 1 :(得分:0)
您需要加载Rails环境才能访问Rails.env:
# config/unicorn.rb
require File.dirname(__FILE__)+'/application'
port = case Rails.env
when 'production' then 8080
when 'staging' then 3001
else 3000
end
listen port, :tcp_nopush => true
答案 2 :(得分:0)
看起来您可能遇到命名空间查找问题。您的代码正在Unicorn::Configurator
的上下文中进行评估,并且您在条件(Rails
部分)中对if Rails.env
进行了“裸字常量查找”。您可以使用::Rails
来强制进行顶级查找:
if ::Rails.env.production?
# etc.
end
希望有所帮助。