Ruby on rails 使用capistrano多级更改unicorn端口
我需要根据环境设置unicorn的端口。大概是这样的:Ruby on rails 使用capistrano多级更改unicorn端口,ruby-on-rails,ruby-on-rails-3,deployment,capistrano,unicorn,Ruby On Rails,Ruby On Rails 3,Deployment,Capistrano,Unicorn,我需要根据环境设置unicorn的端口。大概是这样的: #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': unini
#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)
如何根据环境改变端口
泰 尝试检查环境变量
environment = ENV['RACK_ENV'] || ENV['RAILS_ENV'] || 'production'
您需要加载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
看起来您可能有名称空间查找问题。您的代码将在
Unicorn::Configurator
的上下文中进行评估,并且您的条件(if Rails.env部分)中有一个Rails
的“裸字常量查找”。您可以使用::Rails
强制执行顶级查找:
if ::Rails.env.production?
# etc.
end
希望有帮助。config/unicorn.rb:34:in
require'**[out::172.30.1.24]:无法从config/unicorn.rb:34:in
reload'@Rodrigo抱歉,我这些天仍然在使用Rails 2。在Rails 3中需要“应用程序”。答案已更新。无法加载此类文件--config/application