我有一个生产服务器和一个临时服务器,在将新功能转移到生产环境之前对其进行测试。登台服务器在物理上与生产服务器不同(具有不同URL的不同主机),但它尽可能地模仿它(即相同的包,相同的宝石等)。
两台服务器上的 Rails.env = 'production'
。
我的问题是,在某些情况下,我需要不同于生产阶段的不同行为。
例如,新功能可能会向用户发送大量电子邮件;但是当我测试它时,我宁愿将它们发送到“测试”电子邮件帐户。
检测我所在服务器的最佳方法是什么?
我想尽可能地“raily”。
非常感谢。
答案 0 :(得分:24)
通常,这就是您使用不同环境的原因。实际上,暂存环境通常非常接近生产环境,但关闭真实电子邮件等事情。
您不仅限于开发/测试/制作 - 您可以在任何您想要的环境下运行。只需创建一个config / environments / staging.rb文件,在那里设置你想要的值,然后用RAILS_ENV = staging启动你的应用程序 - 这就是它的全部内容。通过这种方式,您可以模拟您的生产环境,但是当您在实际上线之前不希望它们处于活动状态时,可根据需要打开或关闭功能。
答案 1 :(得分:-1)
我担心这个答案并不是非常有用。
railsy
方式是让环境在不同环境的配置(资产主机,数据库等)上有所不同。因此,具有虚拟或测试电子邮件地址的用户的不同数据库将是最简单的方法。
如果您通常是从“生产”克隆,我建议您通过script/dbconsole
或script/console
或仅仅通过简单的rake
任务更新所有用户的电子邮件。
如果您想限制/控制功能,那么我建议通过源代码控制来实现,即通过部署不同的修订版。