从 rake 任务调用时区域设置不起作用

发布于 2024-10-05 02:38:34 字数 1361 浏览 2 评论 0原文

我有一个 Rails 应用程序(2.3.8),我可以使用 ActionMailer 从我的控制器发送电子邮件,没有任何问题。

但是,我创建了一个从 Cronjob(在 Heroku 中)调用的 rake 任务。发送这些电子邮件时,我的日期中不会进行区域设置转换。

我用谷歌搜索找到任何类型的解决方案,但找不到。

有人可以帮助我吗?

谢谢。

下面是代码:

cron.rake:

desc 'This task is called by the Heroku cron add-on'  
task :cron => :environment do  
puts 'Sending diary...'  
hollydays = [6,0] #weekend    
unless hollydays.member?(Time.zone.now.wday) #if is NOT a weekend   
 User.all.each do |user|  
   user.deliver_task_diary
 end  
end  
puts 'done.'  
end  

用户模型方法:

def deliver_task_diary
  TaskMailer.deliver_task_diary(self)
end

TaskMailer 模型中的方法:

def task_diary(user)
  next_five_tasks = user.next_five_tasks
  last_five_tasks = user.last_five_tasks

  recipients "#{user.name} <#{user.email}>"
  from       "My site <[email protected]>"
  subject    "Your daily tasks."
  sent_on    Time.zone.now
  body       :user => user, :next_five_tasks => next_five_tasks, :last_five_tasks => last_five_tasks

我的电子邮件模板的结尾

部分不支持区域设置:

<%=l task.estimated_delivery_date, :format => :short %>

I have a Rails app (2.3.8) where I send emails using ActionMailer from my Controllers, with no problems.

However, I´ve created a rake task to be called from a Cronjob (in Heroku). When those emails are sent, no locale transformations in my dates are made.

I´ve googled to find any kind of solution, but couldn´t.

Anyone can help me?

Thanks.

Here is the code:

cron.rake:

desc 'This task is called by the Heroku cron add-on'  
task :cron => :environment do  
puts 'Sending diary...'  
hollydays = [6,0] #weekend    
unless hollydays.member?(Time.zone.now.wday) #if is NOT a weekend   
 User.all.each do |user|  
   user.deliver_task_diary
 end  
end  
puts 'done.'  
end  

user model method:

def deliver_task_diary
  TaskMailer.deliver_task_diary(self)
end

the method in TaskMailer model:

def task_diary(user)
  next_five_tasks = user.next_five_tasks
  last_five_tasks = user.last_five_tasks

  recipients "#{user.name} <#{user.email}>"
  from       "My site <[email protected]>"
  subject    "Your daily tasks."
  sent_on    Time.zone.now
  body       :user => user, :next_five_tasks => next_five_tasks, :last_five_tasks => last_five_tasks

end

part of my email template that doesn´t locale:

<%=l task.estimated_delivery_date, :format => :short %>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

才能让你更想念 2024-10-12 02:38:34

解决了。

我不知道这是否是最好的方法,但我刚刚在电子邮件 html 模板的开头声明了区域设置:

<% I18n.locale = "pt-BR" %>

Solved.

I don´t know if it´s the best way, but I´ve just declared the locale at the very beging of the email html template:

<% I18n.locale = "pt-BR" %>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文