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 7 def perform
  8 + saved_locale = FastGettext.locale
  9 + FastGettext.locale = locale
  10 +
4 11 comment = Comment.find(comment_id)
5 12 comment.send(method)
  13 + FastGettext.locale = saved_locale
6 14 rescue ActiveRecord::RecordNotFound
7 15 # just ignore non-existing comments
8 16 end
... ...
test/unit/comment_handler_test.rb
... ... @@ -21,4 +21,14 @@ class CommentHandlerTest &lt; ActiveSupport::TestCase
21 21 handler.perform
22 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 34 end
... ...