Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 根据request.url更改Rails 4 production.rb常量_Ruby_Actionmailer_Production Environment_Ruby On Rails 4.1 - Fatal编程技术网

Ruby 根据request.url更改Rails 4 production.rb常量

Ruby 根据request.url更改Rails 4 production.rb常量,ruby,actionmailer,production-environment,ruby-on-rails-4.1,Ruby,Actionmailer,Production Environment,Ruby On Rails 4.1,请有人给我指出一个正确的方向,我确信这是一个简单的问题,但却让我绕圈子。我有三个领域 网站 .com.au 新西兰公司 我正试图保留一个代码库来进行维护 我已经做了一些手动本地化工作根据url更改标题、联系方式等,使用request.original\u url,剥离相关部分,并在应用程序控制器(站点、电子邮件、电话等)中设置一些常量。 除了production.rb中的我的config.action\u mailer.smtp\u设置之外,一切正常。 这些显然应该更改,以便使用本地化电子

请有人给我指出一个正确的方向,我确信这是一个简单的问题,但却让我绕圈子。我有三个领域

  • 网站

  • .com.au

  • 新西兰公司

    我正试图保留一个代码库来进行维护

  • 我已经做了一些手动本地化工作根据url更改标题、联系方式等,使用
    request.original\u url,剥离相关部分,并在应用程序控制器(站点、电子邮件、电话等)中设置一些常量。

    除了production.rb中的我的
    config.action\u mailer.smtp\u设置之外,一切正常。

    这些显然应该更改,以便使用本地化电子邮件帐户(info@...com或www.com.au等)但是

    在加载环境之前,我无法获取要初始化的常量。这很有道理,为什么它不工作,但我不知道如何修复它

    我试着将它放入初始值设定项应用程序.rb中,并将其设置在production.rb中。如果我将代码移出应用程序控制器的任何位置,我会在请求上得到一个无方法错误

    是否有办法拉出
    邮件设置
    ,使其暴露于变量中?或者是在应用程序启动时加载的
    production.rb
    ,以及之后加载的
    production.rb是否不受最终用户的影响

    此外,即使语言保持不变,我是否应该看看i18n来为这些功能操作站点?或者,对于我想要改变的几个变量来说,这不值得付出努力


    提前感谢。

    由于Ruby中的常量是可变的,所以您可以更改邮件中的常量。

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

    ActionMailer::Base.smtp_settings[:host] = 'yourhostfromrequest'
    

    你知道Ruby中的常数是可变的吗?意思是您可以更改任何已定义的常量?您好-是的,我知道它们可以更改,但它们在推送到生产时显示为未定义。好的,因此我可以将mailer配置转移到每个mailer.rb文件,您知道如何在运行时设置它吗?Rails.application.routes.default\u url\u options[:host]=SITE在我提取url请求之前,不会定义站点变量。这实际上与我的答案相同。例如,您可以为站点定义多个常量。甚至是包含所有站点、电子邮件、电话配置的站点模型。您可以在用户模型中根据请求设置站点id,并使用站点id在邮件中获取所有需要的数据。用户同时访问两个站点的可能性不大。而且它还将帮助您与用户进行任何未来的交互,因为您将已经知道他用于注册的站点。