mirror of
https://github.com/mperham/sidekiq.git
synced 2022-11-09 13:52:34 -05:00
Allow dynamic sidekiq-web locale paths, for localized extensions, fixes #1261
This commit is contained in:
parent
abed0c94eb
commit
ea42d5636c
7 changed files with 46 additions and 8 deletions
|
@ -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]
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
2
test/fixtures/en.yml
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
en:
|
||||
translated_text: 'Changed text from add locals'
|
|
@ -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|
|
||||
|
|
|
@ -60,5 +60,4 @@ en: # <---- change this to your locale code
|
|||
OneMonth: 1 month
|
||||
ThreeMonths: 3 months
|
||||
SixMonths: 6 months
|
||||
Batches: Batches
|
||||
Failures: Failures
|
||||
|
|
Loading…
Add table
Reference in a new issue