Commit 5bac7a05a76d1a38dbd733deca77c1e308c3c408

Authored by Joenio Costa
2 parents dffe0249 7fdd7fbf

Merge branch 'delayed_job_locale' into 'master'

CommentHandler delayed job saves the context locale

Delayed jobs didn't have access to the correct locale, and the templates were not being translated. Saving the current locale in the job during the creation solves the problem.

See merge request !942
app/models/comment_handler.rb
1 -class CommentHandler < Struct.new(:comment_id, :method) 1 +class CommentHandler < Struct.new(:comment_id, :method, :locale)
  2 + def initialize(*args)
  3 + super
  4 + self.locale ||= FastGettext.locale
  5 + end
2 6
3 def perform 7 def perform
  8 + saved_locale = FastGettext.locale
  9 + FastGettext.locale = locale
  10 +
4 comment = Comment.find(comment_id) 11 comment = Comment.find(comment_id)
5 comment.send(method) 12 comment.send(method)
  13 + FastGettext.locale = saved_locale
6 rescue ActiveRecord::RecordNotFound 14 rescue ActiveRecord::RecordNotFound
7 # just ignore non-existing comments 15 # just ignore non-existing comments
8 end 16 end
test/unit/comment_handler_test.rb
@@ -21,4 +21,14 @@ class CommentHandlerTest &lt; ActiveSupport::TestCase @@ -21,4 +21,14 @@ class CommentHandlerTest &lt; ActiveSupport::TestCase
21 handler.perform 21 handler.perform
22 end 22 end
23 23
  24 + should 'save locale from creation context and not change current locale' do
  25 + FastGettext.stubs(:locale).returns("pt")
  26 + handler = CommentHandler.new(5, :whatever_method)
  27 +
  28 + FastGettext.stubs(:locale).returns("en")
  29 + assert_equal "pt", handler.locale
  30 +
  31 + handler.perform
  32 + assert_equal "en", FastGettext.locale
  33 + end
24 end 34 end