1

请有人指出我正确的方向,因为我确定这是一个简单的问题,但导致我绕圈子。我有三个域

  1. .com

  2. .com.au

  3. .co.nz

    我正在尝试保留一个代码库以进行维护。

我已经完成了一些手动本地化工作,以根据 url 更改标题、联系方式等,使用request.original_url and stripping out the relevant parts and setting some constants in the application controller (SITE, EMAIL, TELEPHONE etc).

一切正常,除了我的config.action_mailer.smtp_settings in the production.rb.

这些显然应该改变,因此使用本地化的电子邮件帐户(info@...com 或 .com.au 等)但是

在加载环境之前,我无法初始化常量。为什么它不起作用是完全有道理的,但我不知道如何解决它。

我已经尝试将它放入initializersapplication.rb并将其设置在production.rb本身中。如果我将代码移出应用程序控制器的任何位置,我会在request.original_url上收到 no method 错误。

有没有办法mailer settings让他们暴露在变量中?或者是production.rb在应用程序启动时加载,之后不受最终用户的影响。

此外,即使语言保持不变,我是否应该查看 i18n 来操纵网站以获得这些功能?还是不值得为我想改变的几个变量付出努力。

提前致谢。

4

2 回答 2

1

您可以在运行时更改设置:

ActionMailer::Base.smtp_settings[:host] = 'yourhostfromrequest'
于 2014-03-06T21:04:39.080 回答
0

您可以只更改邮件程序中的常量,因为 Ruby 中的常量是mutable

于 2014-03-06T09:14:13.213 回答