gpt4 book ai didi

ruby-on-rails - ActionMailer::Base.default_url_options线程安全吗?

转载 作者:行者123 更新时间:2023-12-03 13:04:30 26 4
gpt4 key购买 nike

我在ApplicationController(Ruby on Rails 4.1)中有以下代码:

before_action :make_action_mailer_use_request_host_and_protocol

def make_action_mailer_use_request_host_and_protocol
ActionMailer::Base.default_url_options[:protocol] = request.protocol
ActionMailer::Base.default_url_options[:host] = request.host_with_port
ActionMailer::Base.asset_host = "#{request.protocol}#{request.host_with_port}"
end

它是线程安全的吗?考虑场景:
  • 服务器开始处理对主机foo.example.com的请求。它为ActionMailer设置主机。
  • 服务器完成对第一个请求的处理之前,主机bar.example.com收到了另一个请求。服务器将ActionMailer主机设置为bar.example.com。
  • 执行将返回第一个请求。现在服务器发送电子邮件。电子邮件中的主机是foo.example.com还是bar.example.com?
  • 最佳答案

    不幸的是,上述方法不是线程安全的,因此您概述的方案将是有问题的。

    当前在 Controller 中创建default_url_options方法为the most idiomatic (and thread-safe) way to accomplish this

    我发现西蒙妮·卡莱蒂(Simone Carletti)的actionmailer_with_request gem是您似乎要面对的问题的理想解决方案。

    关于ruby-on-rails - ActionMailer::Base.default_url_options线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33638373/

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