从rake任务调用时,语言环境不起作用

时间:2010-12-01 19:52:34

标签: ruby-on-rails rake actionmailer

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

但是,我已经创建了一个从Cronjob(在Heroku中)调用的rake任务。发送这些电子邮件时,我的日期中不会进行任何语言环境转换。

我已经用Google搜索找到了任何解决方案,但无法解决。

任何人都可以帮助我?

感谢。

以下是代码:

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 <no_reply@mysite.com>"
  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 %>

1 个答案:

答案 0 :(得分:1)

解决。

我不知道这是不是最好的方式,但我刚刚在电子邮件html模板的声音中宣布了语言环境:

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