首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >设置: Rails 3.1中具有一个“临时”环境的不同临时服务器的主机

设置: Rails 3.1中具有一个“临时”环境的不同临时服务器的主机
EN

Stack Overflow用户
提问于 2011-11-04 00:40:56
回答 3查看 909关注 0票数 0

我在capistrano中设置了3个独立的临时服务器(在某些时候可能会有更多)。例如:

代码语言:javascript
复制
staging.example.com
staging2.example.com
staging3.example.com

但是,每个文件的capfile指定了相同的环境:

代码语言:javascript
复制
set :rails_env, 'staging'

..。在``config/environment/staging.rb中,我必须定义默认的url选项:

代码语言:javascript
复制
config.action_mailer.default_url_options = { host: 'staging.example.com' }

不幸的是,这最终会导致在某些时候使用错误的服务器。例如,当在staging2上测试时,你可能会收到一封在url中设置了"staging“的电子邮件……不假思索地点击它,然后你就到了错误的服务器上。

我不想为每个临时服务器添加单独的环境文件,因为有时可能会有相当多的环境文件,而且这是每个服务器唯一不同的更改,因为它是主机名。

有没有办法在不为每个暂存主机使用单独的环境文件的情况下解决此问题?是否可以使用capistrano的:web设置作为主机url?

代码语言:javascript
复制
role :web, "staging2.example.com"
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-10 07:39:13

我最终使用了一个从每个服务器上的yml文件加载的APP_CONFIG变量,如以下相关问题中所述:Re-source .bashrc when restarting unicorn?

此外,APP_CONFIG最初的想法来自于Railscast #226.

票数 0
EN

Stack Overflow用户

发布于 2011-11-04 08:46:08

也许您可以在部署期间使用cap编辑staging.rb文件。可以使用sed在中编辑主机名,也可以简单地将action_mailer行附加到末尾。

另一种选择是:确保您的主机名设置正确,并让服务器在启动时填写:

代码语言:javascript
复制
config.action_mailer.default_url_options = { host: `hostname` }

我不认为cap是用来处理这种特殊情况的。

票数 1
EN

Stack Overflow用户

发布于 2011-11-04 07:38:29

您是否正在生成电子邮件作为控制器操作的结果?您可以使用请求中的HTTP_HOST标头,并相应地在电子邮件中写入链接。

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

https://stackoverflow.com/questions/7998588

复制
相关文章

相似问题

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