首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用capistrano multistage更改独角兽端口

使用capistrano multistage更改独角兽端口
EN

Stack Overflow用户
提问于 2013-01-18 00:51:30
回答 3查看 2.9K关注 0票数 1

我需要根据环境设置独角兽的端口。如下所示:

代码语言:javascript
复制
#config/unicorn.rb

if Rails.env.production?
  listen 8080, :tcp_nopush => true
elsif Rails.env.staging?
  listen 3001, :tcp_nopush => true
end

上面的代码返回这个错误:

代码语言:javascript
复制
[out :: 172.30.1.24] config/unicorn.rb:32:in `reload': uninitialized constant Unicorn::Configurator::Rails (NameError)

如何根据环境改变端口?

泰!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-24 07:16:08

尝试检查环境变量

代码语言:javascript
复制
environment = ENV['RACK_ENV'] || ENV['RAILS_ENV'] || 'production'
票数 2
EN

Stack Overflow用户

发布于 2013-01-24 07:41:11

您需要加载Rails环境才能访问Rails.env:

代码语言:javascript
复制
# 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
票数 0
EN

Stack Overflow用户

发布于 2013-01-27 14:19:25

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

代码语言:javascript
复制
if ::Rails.env.production?
  # etc.
end

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14384041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档