gpt4 book ai didi

ruby-on-rails - 为什么特定环境不会在这里覆盖 rails 中的 environment.rb?

转载 作者:行者123 更新时间:2023-12-01 09:30:55 24 4
gpt4 key购买 nike

我正在尝试在 Rails 站点的开发环境中工作,我想在其中测试电子邮件发送,但我无法弄清楚为什么在主 environment.rb 中声明属性没有被更具体的 development.rb 覆盖我认为在启动 Rails 应用程序时会加载的文件。

我的理解是,像这样更具体的环境配置文件中的值应该覆盖共享的“environment.rb”配置文件,所以如果我在 config/environment.rb 中声明了一些像这样的电子邮件设置| ...

ActionMailer::Base.smtp_settings = {
:address => 'smtp.hostingcompany.com',
:port => 25,
:domain => 'productiondomain.net',
:authentication => :login,
:user_name => "productiondomainmailer",
:password => "TOP_SEKRIT"
}

... 然后在 config/environments/development.rb 中编码下面应该覆盖 ActionMailer:Base.smtp_settings哈希:

ActionMailer::Base.smtp_settings = {
:domain => 'developmentdomain.net'
}

但是,在开发环境加载app时,还是从script/console检查 ActionMailer::Base.smtp_settings[:domain] 的值,它仍然列为“productiondomain.net”。

为什么会发生这种情况?

最佳答案

为您的开发环境设置配置:

config.action_mailer.smtp_settings =

而不是:

ActionMailer::Base.smtp_settings =

config/environments/development.rb

请注意,在 config/environments/development.rb 中,您需要指定整套设置,而不仅仅是 :domain,因为散列会覆盖现有值,而不是而不是与之合并。

同样,通过将 config.action_mailer.smtp_settings = 放在 Rails::Initializer.run 中,在 config/environments.rb 中设置默认值配置| block 。

关于ruby-on-rails - 为什么特定环境不会在这里覆盖 rails 中的 environment.rb?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1965945/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com