1

我需要根据环境设置独角兽的端口。像这样的东西:

#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)

如何根据环境更改端口?

泰!

4

3 回答 3

2

尝试检查环境变量

environment = ENV['RACK_ENV'] || ENV['RAILS_ENV'] || 'production'
于 2013-01-23T23:16:08.313 回答
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
于 2013-01-23T23:41:10.973 回答
0

看起来您可能有命名空间查找问题。您的代码正在 的上下文中进行评估,并且您的条件(部分)中Unicorn::Configurator有一个“裸词常量查找” 。您可以改为使用以下命令强制进行顶级查找:Railsif Rails.env::Rails

if ::Rails.env.production?
  # etc.
end

希望有帮助。

于 2013-01-27T06:19:24.833 回答