Allow dynamic sidekiq-web locale paths, for localized extensions, fixes #1261

This commit is contained in:
Mike Perham 2013-10-21 12:07:18 -07:00
parent abed0c94eb
commit ea42d5636c
7 changed files with 46 additions and 8 deletions

View File

@ -1,10 +1,9 @@
HEAD
-----------
- Capistrano version 3 support [#1254, phallstrom]
2.16.0
-----------
- Allow sidekiq-web extensions to add locale paths so extensions
can be localized. [#1261, ondrejbartas]
- Capistrano 3 support [#1254, phallstrom]
- Use Ruby's `resolv-replace` to enable pure Ruby DNS lookups.
This ensures that any DNS resolution that takes place in worker
threads won't lock up the entire VM on MRI. [#1258]

View File

@ -53,6 +53,7 @@ end
begin
require 'active_support/core_ext/hash/keys'
require 'active_support/core_ext/hash/deep_merge'
rescue LoadError
class Hash
def stringify_keys
@ -68,6 +69,22 @@ rescue LoadError
end
self
end if !{}.respond_to?(:symbolize_keys)
def deep_merge(other_hash, &block)
dup.deep_merge!(other_hash, &block)
end if !{}.respond_to?(:deep_merge)
def deep_merge!(other_hash, &block)
other_hash.each_pair do |k,v|
tv = self[k]
if tv.is_a?(Hash) && v.is_a?(Hash)
self[k] = tv.deep_merge(v, &block)
else
self[k] = block && tv ? block.call(k, tv, v) : v
end
end
self
end if !{}.respond_to?(:deep_merge!)
end
end

View File

@ -14,7 +14,7 @@ module Sidekiq
set :root, File.expand_path(File.dirname(__FILE__) + "/../../web")
set :public_folder, Proc.new { "#{root}/assets" }
set :views, Proc.new { "#{root}/views" }
set :locales, Proc.new { "#{root}/locales" }
set :locales, ["#{root}/locales"]
helpers WebHelpers

View File

@ -5,8 +5,13 @@ module Sidekiq
module WebHelpers
def strings
@@strings ||= begin
Dir["#{settings.locales}/*.yml"].inject({}) do |memo, file|
memo.merge(YAML.load(File.open(file)))
# Allow sidekiq-web extensions to add locale paths
# so extensions can be localized
settings.locales.each_with_object({}) do |path,global|
Dir["#{path}/*.yml"].each_with_object(global) do |file,hash|
strs = YAML.load(File.open(file))
hash.deep_merge!(strs)
end
end
end
end

2
test/fixtures/en.yml vendored Normal file
View File

@ -0,0 +1,2 @@
en:
translated_text: 'Changed text from add locals'

View File

@ -282,6 +282,22 @@ class TestWeb < Sidekiq::Test
assert_equal 200, last_response.status
end
Sidekiq::Web.settings.locales << File.join(File.dirname(__FILE__), "fixtures")
it 'can show user defined tab with custom locales' do
begin
Sidekiq::Web.tabs['Custom Tab'] = '/custom'
Sidekiq::Web.get('/custom') do
t('translated_text')
end
get '/custom'
assert_match /Changed text/, last_response.body
ensure
Sidekiq::Web.tabs.delete 'Custom Tab'
end
end
describe 'stats' do
before do
Sidekiq.redis do |conn|

View File

@ -60,5 +60,4 @@ en: # <---- change this to your locale code
OneMonth: 1 month
ThreeMonths: 3 months
SixMonths: 6 months
Batches: Batches
Failures: Failures