【发布时间】:2018-02-07 17:55:09
【问题描述】:
当我尝试从 rake 任务中使用 ActionMailer 时,我收到了这个错误:
ActionView::Template::Error: 缺少要链接的主机!请提供 :host 参数、
set default_url_options[:host]或set :only_path为 true
在我的development.rb 我有以下行:
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
此外,如果我输入 development.rb 这个:
config.action_mailer.default_url_options[:host] = 'localhost:3000'
rake 任务工作正常,但服务器因此崩溃:
config/environments/development.rb:20:in block in ': undefined method []=' for nil:NilClass (NoMethodError)
如果我这样做:
config.action_mailer.default_url_options = {}
config.action_mailer.default_url_options[:host] = 'localhost:3000
rake 任务不再起作用。
我很困惑,有什么建议吗?
UPD 我认为这些代码不会有帮助,但就是这样,就这么简单:
耙任务:
task :send_newsletter => :environment do
Receiver.all.each { |receiver|
NewsletterMailer.newsletter(receiver).deliver
}
end
邮寄者:
def newsletter(receiver)
@receiver = receiver
mail(to: receiver.email, subject: "newsletter") do |format|
format.html
end
end
以及带有一些link_to xxx_url 行的视图,显然是导致错误的原因
红宝石版本 2.4.1
导轨 5.1.3
rake 12.0.0(但也尝试了 12.3.0 没有区别)
【问题讨论】:
-
你能发布你的任务吗?
-
什么版本的 Rails?
标签: ruby-on-rails ruby ruby-on-rails-5 rake rake-task