singleton-client-test 0.7.7.1 → 0.7.7.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -16,9 +16,9 @@ module SgtnClient
16
16
  REQUEST_ARGUMENTS = { timeout: 10 }.freeze
17
17
 
18
18
  def initialize(config)
19
- @server_url = config['vip_server']
19
+ @server_url = config.vip_server
20
20
 
21
- product_root = format('i18n/api/v2/translation/products/%s/versions/%s', config['product_name'], config['version'])
21
+ product_root = format('i18n/api/v2/translation/products/%s/versions/%s', config.product_name, config.version)
22
22
 
23
23
  @bundle_url = "#{product_root}/locales/%s/components/%s"
24
24
  @locales_url = "#{product_root}/localelist"
@@ -26,14 +26,14 @@ module SgtnClient
26
26
  end
27
27
 
28
28
  def load_bundle(component, locale)
29
- SgtnClient.logger.debug "[#{method(__callee__).owner}.#{__callee__}] component=#{component}, locale=#{locale}"
29
+ SgtnClient.logger.debug { "[#{method(__callee__).owner}.#{__callee__}] component=#{component}, locale=#{locale}" }
30
30
 
31
31
  messages = query_server(format(@bundle_url, locale, component), ['messages'])
32
32
  messages
33
33
  end
34
34
 
35
35
  def available_bundles
36
- SgtnClient.logger.debug "[#{method(__callee__).owner}.#{__callee__}]"
36
+ SgtnClient.logger.debug { "[#{method(__callee__).owner}.#{__callee__}]" }
37
37
 
38
38
  components_thread = Thread.new { available_components }
39
39
  available_locales.reduce(Set.new) do |bundles, locale|
@@ -4,39 +4,42 @@
4
4
  module SgtnClient
5
5
  module TranslationLoader
6
6
  module SingleLoader
7
- def load_bundle(component, locale)
8
- SgtnClient.logger.debug "[#{__FILE__}][#{__callee__}] component=#{component}, locale=#{locale}"
7
+ def load_bundle(component, locale, sync: true)
8
+ SgtnClient.logger.debug { "[#{__FILE__}][#{__callee__}] component=#{component}, locale=#{locale}" }
9
9
 
10
- @single_bundle_loader ||= single_loader { |c, l| super(c, l) }
11
- id = CacheUtil.get_cachekey(component, locale)
12
- @single_bundle_loader.operate(id, component, locale)&.value
10
+ do_single_load(Common::BundleID.new(component, locale), sync) { super(component, locale) }
13
11
  end
14
12
 
15
- def available_bundles
16
- SgtnClient.logger.debug "[#{__FILE__}][#{__callee__}]"
13
+ def available_bundles(sync: true)
14
+ SgtnClient.logger.debug { "[#{__FILE__}][#{__callee__}]" }
17
15
 
18
- @single_available_bundles_loader ||= single_loader { super }
19
- @single_available_bundles_loader.operate(CONSTS::AVAILABLE_BUNDLES_KEY)&.value
16
+ do_single_load(CONSTS::AVAILABLE_BUNDLES_KEY, sync) { super() }
20
17
  end
21
18
 
22
- private
23
-
24
- def single_loader(&block)
25
- loader = nil
26
- none_alive = proc { |_, thread| thread.nil? }
27
- creator = proc do |id, _, *args|
19
+ def initialize(*args)
20
+ none_alive = proc { |_, thread| thread.nil? || thread.alive? == false }
21
+ creator = proc do |id, &block|
28
22
  Thread.new do
29
- SgtnClient.logger.debug "start single loading #{id}"
23
+ SgtnClient.logger.debug { "start single loading #{id}" }
30
24
  begin
31
- block.call(*args)
25
+ block.call
32
26
  ensure
33
27
  # delete thread from hash after finish
34
- loader.remove_object(id)
28
+ @single_loader.remove_object(id)
35
29
  end
36
30
  end
37
31
  end
38
32
 
39
- loader = SingleOperation.new(none_alive, &creator)
33
+ @single_loader = SingleOperation.new(none_alive, &creator)
34
+
35
+ super
36
+ end
37
+
38
+ private
39
+
40
+ def do_single_load(id, sync, &block)
41
+ thread = @single_loader.operate(id, &block)
42
+ thread&.value if sync
40
43
  end
41
44
  end
42
45
  end
@@ -9,13 +9,13 @@ module SgtnClient
9
9
  module TranslationLoader
10
10
  class Source
11
11
  def initialize(config)
12
- @source_bundle_path = Pathname.new(config['source_bundle'])
12
+ @source_bundle_path = Pathname.new(config.source_bundle)
13
13
  end
14
14
 
15
15
  def load_bundle(component, locale = nil)
16
16
  return if locale && locale != CONSTS::REAL_SOURCE_LOCALE # return when NOT querying source
17
17
 
18
- SgtnClient.logger.debug "[#{method(__callee__).owner}.#{__callee__}] component=#{component}"
18
+ SgtnClient.logger.debug { "[#{method(__callee__).owner}.#{__callee__}] component=#{component}" }
19
19
 
20
20
  total_messages = {}
21
21
 
@@ -35,7 +35,7 @@ module SgtnClient
35
35
  end
36
36
 
37
37
  def available_bundles
38
- SgtnClient.logger.debug "[#{method(__callee__).owner}.#{__callee__}]"
38
+ SgtnClient.logger.debug { "[#{method(__callee__).owner}.#{__callee__}]" }
39
39
 
40
40
  @available_bundles ||= begin
41
41
  @source_bundle_path.children.select(&:directory?).reduce(Set.new) do |bundles, component|
@@ -5,7 +5,7 @@ module SgtnClient
5
5
  module TranslationLoader
6
6
  module SourceComparer
7
7
  def load_bundle(component, locale)
8
- SgtnClient.logger.debug "[#{__FILE__}][#{__callee__}] component=#{component}, locale=#{locale}"
8
+ SgtnClient.logger.debug { "[#{__FILE__}][#{__callee__}] component=#{component}, locale=#{locale}" }
9
9
 
10
10
  # source locale and old source locale don't need comparison because they are bases of comparison
11
11
  real_locale = cache_to_real_map[locale]
@@ -6,6 +6,7 @@
6
6
  module SgtnClient
7
7
  module TranslationLoader # :nodoc:
8
8
  autoload :Cache, 'sgtn-client/loader/cache'
9
+ autoload :CacheFiller, 'sgtn-client/loader/cache'
9
10
  autoload :Chain, 'sgtn-client/loader/chain_loader'
10
11
  autoload :CONSTS, 'sgtn-client/loader/consts'
11
12
  autoload :LoaderFactory, 'sgtn-client/loader/loader_factory'
@@ -1,90 +1,48 @@
1
1
  # Copyright 2022 VMware, Inc.
2
2
  # SPDX-License-Identifier: EPL-2.0
3
3
 
4
- module SgtnClient
5
- LOGFILE_SHIFT_AGE = 4
6
-
7
- autoload :Common, 'sgtn-client/common'
8
- autoload :TranslationLoader, 'sgtn-client/loader'
9
- autoload :SingleOperation, 'sgtn-client/common/single_operation'
10
-
11
- module Core
12
- autoload :Cache, "sgtn-client/core/cache"
13
- end
14
-
15
- autoload :Translation, "sgtn-client/api/translation"
16
- autoload :T, "sgtn-client/api/t"
17
- autoload :Source, "sgtn-client/api/source"
18
- autoload :Config, "sgtn-client/core/config"
19
- autoload :Logging, "sgtn-client/core/logging"
20
- autoload :Exceptions, "sgtn-client/core/exceptions"
21
- autoload :ValidateUtil, "sgtn-client/util/validate-util"
22
- autoload :LocaleUtil, "sgtn-client/util/locale-util"
23
- autoload :CacheUtil, "sgtn-client/util/cache-util"
24
- autoload :StringUtil, "sgtn-client/util/string-util"
25
- autoload :SingletonError, 'sgtn-client/exceptions'
26
- autoload :I18nBackend, "sgtn-client/i18n_backend"
27
-
28
- module Formatters
29
- autoload :PluralFormatter, "sgtn-client/formatters/plurals/plural_formatter"
30
- end
31
-
32
-
33
- class << self
34
- def configure(options = {}, &block)
35
- Config.configure(options, &block)
36
- end
37
-
38
- include Logging
39
- def load(*args)
40
- # load configuration file
41
- begin
42
- Config.load(args[0], args[1])
43
- ValidateUtil.validate_config()
44
- rescue => exception
45
- file = File.open('./error.log', 'a')
46
- file.sync = true
47
- log = Logger.new(file)
48
- log.error exception.message
49
- end
50
-
51
- # create log file
52
- file = './sgtnclient_d.log'
53
- logger.debug "[Client][load]create log file=#{file}"
54
- if args[2] != nil
55
- file = args[2]
56
- end
57
- file = File.open(file, 'a')
58
- file.sync = true
59
- logger = Logger.new(file, LOGFILE_SHIFT_AGE)
60
-
61
- # Set log level for sandbox mode
62
- env = Config.default_environment
63
- mode = Config.configurations[env]["mode"]
64
- logger.debug "[Client][load]set log level, mode=#{mode}"
65
- if mode == 'sandbox'
66
- logger.level = Logger::DEBUG
67
- else
68
- logger.level = Logger::INFO
69
- end
70
-
71
- # initialize cache
72
- disable_cache = Config.configurations[env]["disable_cache"]
73
- logger.debug "[Client][load]cache initialize, disable_cache=#{disable_cache}"
74
- if disable_cache != nil
75
- Core::Cache.initialize(disable_cache)
76
- else
77
- Core::Cache.initialize()
78
- end
79
- end
80
-
81
- def logger
82
- Config.logger
83
- end
84
-
85
- def logger=(log)
86
- Config.logger = log
87
- end
88
- end
89
-
4
+ require 'forwardable'
5
+ require 'yaml'
6
+
7
+ module SgtnClient # :nodoc:
8
+ autoload :Common, 'sgtn-client/common'
9
+ autoload :TranslationLoader, 'sgtn-client/loader'
10
+ autoload :SingleOperation, 'sgtn-client/common/single_operation'
11
+
12
+ module Core # :nodoc:
13
+ autoload :Cache, 'sgtn-client/core/cache'
14
+ end
15
+
16
+ autoload :Translation, 'sgtn-client/api/translation'
17
+ autoload :T, 'sgtn-client/api/t'
18
+ autoload :Source, 'sgtn-client/api/source'
19
+ autoload :Config, 'sgtn-client/core/config'
20
+ autoload :Exceptions, 'sgtn-client/core/exceptions'
21
+ autoload :ValidateUtil, 'sgtn-client/util/validate-util'
22
+ autoload :LocaleUtil, 'sgtn-client/util/locale-util'
23
+ autoload :CacheUtil, 'sgtn-client/util/cache-util'
24
+ autoload :StringUtil, 'sgtn-client/util/string-util'
25
+ autoload :SingletonError, 'sgtn-client/exceptions'
26
+ autoload :I18nBackend, 'sgtn-client/i18n_backend'
27
+
28
+ module Formatters # :nodoc:
29
+ autoload :PluralFormatter, 'sgtn-client/formatters/plurals/plural_formatter'
30
+ end
31
+
32
+ class << self
33
+ extend Forwardable
34
+
35
+ def_delegator Config, :instance, :config
36
+ def_delegators :config, :logger, :logger=
37
+
38
+ def load(config_file, env, log_file = nil)
39
+ configurations = YAML.load(File.read(config_file))
40
+ config_hash = configurations[env]
41
+ raise "Configuration[#{env}] NotFound" unless config_hash
42
+
43
+ config_hash['log_file'] = log_file if log_file
44
+ config.update(config_hash)
45
+ ValidateUtil.validate_config
46
+ end
47
+ end
90
48
  end
@@ -16,20 +16,12 @@ module SgtnClient
16
16
  def self.write_cache(cache_key, items)
17
17
  return nil if items.nil? || items.empty?
18
18
 
19
- env = Config.default_environment
20
- cache_expiry_period = Config.configurations[env]['cache_expiry_period']
19
+ cache_expiry_period = SgtnClient.config.cache_expiry_period
21
20
  # expired after 24 hours
22
21
  cache_expiry_period = 24 * 60 if cache_expiry_period.nil?
23
22
  Core::Cache.put(cache_key, items, cache_expiry_period)
24
23
  end
25
24
 
26
- def self.get_cachekey(component, locale)
27
- env = Config.default_environment
28
- product_name = Config.configurations[env]['product_name']
29
- version = Config.configurations[env]['version'].to_s
30
- product_name + '_' + version + '_' + component + '_' + locale
31
- end
32
-
33
25
  def self.is_expired(cache_item)
34
26
  cache_item[:expiry] < Time.now
35
27
  end
@@ -3,8 +3,10 @@
3
3
  # Copyright 2022 VMware, Inc.
4
4
  # SPDX-License-Identifier: EPL-2.0
5
5
 
6
+ require 'concurrent/map'
7
+
6
8
  module SgtnClient
7
- class LocaleUtil
9
+ class LocaleUtil # :nodoc:
8
10
  MAP_LOCALES = {
9
11
  'zh-cn' => 'zh-hans',
10
12
  'zh-tw' => 'zh-hant',
@@ -12,57 +14,88 @@ module SgtnClient
12
14
  'zh-hant-tw' => 'zh-hant'
13
15
  }.freeze
14
16
  LOCALE_SEPARATOR = '-'
17
+ EN_LOCALE = 'en'
18
+ @locale_match_results = Concurrent::Map.new
19
+ @lowercase_locales_map = Concurrent::Map.new
20
+
21
+ def self.get_best_locale(locale, component)
22
+ component_result = @locale_match_results[component] ||= begin
23
+ components = SgtnClient.config.available_components
24
+ unless components.empty? || components.include?(component)
25
+ raise SingletonError, "component '#{component}' doesn't exist!"
26
+ end
27
+
28
+ Concurrent::Map.new
29
+ end
15
30
 
16
- def self.get_best_locale(locale)
17
- return locale if Config.available_locales.include?(locale)
18
-
19
- return get_fallback_locale if locale.nil?
20
-
21
- locale = locale.to_s
22
- return get_fallback_locale if locale.empty?
23
-
24
- get_best_match(locale.gsub('_', LOCALE_SEPARATOR).downcase)
25
- end
26
-
27
- def self.is_source_locale(locale = nil)
28
- locale == get_source_locale
31
+ component_result[locale] ||= begin
32
+ # component_result.shift if component_result.size >= 50
33
+ if SgtnClient.config.available_locales(component).include?(locale)
34
+ locale
35
+ elsif locale.nil?
36
+ get_fallback_locale
37
+ else
38
+ locale = locale.to_s
39
+ if locale.empty?
40
+ get_fallback_locale
41
+ else
42
+ candidates = lowercase_locales_map(component)
43
+ if candidates.empty?
44
+ locale
45
+ else
46
+ get_best_match(locale.gsub('_', LOCALE_SEPARATOR).downcase, candidates)
47
+ end
48
+ end
49
+ end
50
+ end
29
51
  end
30
52
 
31
- def self.get_best_match(locale)
53
+ def self.get_best_match(locale, candidates)
32
54
  locale = MAP_LOCALES[locale] || locale
33
- lowercase_locales_map[locale] or begin
55
+ candidates[locale] or begin
34
56
  index = locale.rindex(LOCALE_SEPARATOR)
35
57
  return get_fallback_locale if index.nil?
36
58
 
37
- get_best_match(locale[0...index])
59
+ get_best_match(locale[0...index], candidates)
38
60
  end
39
61
  end
40
62
 
41
63
  def self.get_source_locale
42
- 'en'
64
+ EN_LOCALE
43
65
  end
44
66
 
45
67
  def self.get_default_locale
46
- env = Config.default_environment
47
- Config.configurations[env]['default_language']
68
+ EN_LOCALE
48
69
  end
49
70
 
50
71
  def self.get_fallback_locale
51
- @fallback_locale ||= get_default_locale || get_source_locale || 'en'
72
+ locale_fallbacks[0]
73
+ end
74
+
75
+ def self.locale_fallbacks
76
+ @locale_fallbacks ||= [get_default_locale, get_source_locale, EN_LOCALE].uniq(&:to_s) - [nil, '']
52
77
  end
53
78
 
54
- def self.lowercase_locales_map
55
- @lowercase_locales_map ||= Config.available_locales.each_with_object({}) do |locale, memo|
79
+ def self.lowercase_locales_map(component)
80
+ @lowercase_locales_map[component] ||= SgtnClient.config.available_locales(component).each_with_object({}) do |locale, memo|
56
81
  memo[locale.to_s.downcase] = locale
57
82
  end
58
83
  end
59
84
 
60
- def self.reset_available_locales(type)
61
- @lowercase_locales_map = nil if type == :available_locales
85
+ def self.reset_locale_data(type, component = nil)
86
+ return unless type == :available_locales
87
+
88
+ if component.nil?
89
+ @locale_match_results.clear
90
+ @lowercase_locales_map.clear
91
+ else
92
+ @locale_match_results.delete(component)
93
+ @lowercase_locales_map.delete(component)
94
+ end
62
95
  end
63
96
 
64
- Config.add_observer(self, :reset_available_locales)
97
+ SgtnClient.config.add_observer(self, :reset_locale_data)
65
98
 
66
- private_class_method :get_best_match, :lowercase_locales_map, :reset_available_locales
99
+ private_class_method :get_best_match, :lowercase_locales_map, :reset_locale_data
67
100
  end
68
101
  end
@@ -7,6 +7,9 @@ module SgtnClient
7
7
  super(str)
8
8
  @locale = locale
9
9
  end
10
- attr_accessor :locale
10
+
11
+ def localize(locale)
12
+ super(@locale || locale)
13
+ end
11
14
  end
12
- end
15
+ end
@@ -6,31 +6,21 @@ module SgtnClient
6
6
  class ValidateUtil
7
7
 
8
8
  def self.validate_config()
9
- env = Config.default_environment
10
- SgtnClient.logger.debug "[ValidateUtil][validate_config] env = #{env}"
11
- messages = "\n"
9
+ puts "validating config..."
10
+ messages = ""
12
11
 
13
- mode = Config.configurations[env]["mode"]
14
- if mode != 'sandbox' && mode != 'live'
15
- messages = messages + "Configuration[mode] has to be 'sandbox' or 'live'!\n"
12
+ version = SgtnClient.config.version
13
+ SgtnClient.config.version = version.to_s
14
+ if version.to_s !~ /\A(\d+\.)*\d+\z/
15
+ messages = messages + "Configuration[version] has to be standard as '#.#.#, e.g '1.0.0'!\n"
16
16
  end
17
-
18
- #version = Config.configurations[env]["version"]
19
- #if version.is_a? Integer
20
- #messages = messages + "Configuration[version] has to be standard as '#.#.#, e.g '1.0.0'!\n"
21
- #end
22
17
 
23
- cache_expiry_period = Config.configurations[env]["cache_expiry_period"]
18
+ cache_expiry_period = SgtnClient.config.cache_expiry_period
24
19
  if cache_expiry_period != nil && (cache_expiry_period.is_a? Integer) == false
25
20
  messages = messages + "Configuration[cache_expiry_period] has to be a number!\n"
26
21
  end
27
-
28
- disable_cache = Config.configurations[env]["disable_cache"]
29
- if disable_cache != nil && disable_cache != false && disable_cache != true
30
- messages = messages + "Configuration[disable_cache] has to be a 'true' or 'false'!\n"
31
- end
32
-
33
- if messages != "\n"
22
+
23
+ if messages != ""
34
24
  raise Exceptions::MissingConfig.new(messages)
35
25
  end
36
26
  end
@@ -7,8 +7,18 @@ require_relative 'singleton-ruby'
7
7
  module Sgtn # :nodoc:
8
8
  class << self
9
9
  extend Forwardable
10
- def_delegator SgtnClient, :load, :load_config
11
- def_delegators SgtnClient::Translation, :translate, :t, :get_translations, :locale, :locale=
10
+
11
+ # load configurations from a file
12
+ def load_config(config_file, env)
13
+ SgtnClient.load(config_file, env)
14
+ end
15
+
16
+ def_delegator SgtnClient::Config, :instance, :config
17
+ delegate %i[translate t get_translations locale locale=] => SgtnClient::Translation,
18
+ %i[logger product_name version vip_server translation_bundle
19
+ source_bundle cache_expiry_period log_file log_level].flat_map { |m|
20
+ [m, "#{m}=".to_sym]
21
+ } => :config
12
22
  end
13
23
 
14
24
  I18nBackend = SgtnClient::I18nBackend
metadata CHANGED
@@ -1,79 +1,59 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: singleton-client-test
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.7.1
4
+ version: 0.7.7.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - VMware G11n Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-06-23 00:00:00.000000000 Z
11
+ date: 2022-07-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rdoc
14
+ name: concurrent-ruby
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 2.4.2
20
- - - "<"
21
- - !ruby/object:Gem::Version
22
- version: '6.0'
23
- type: :development
19
+ version: '0'
20
+ type: :runtime
24
21
  prerelease: false
25
22
  version_requirements: !ruby/object:Gem::Requirement
26
23
  requirements:
27
24
  - - ">="
28
25
  - !ruby/object:Gem::Version
29
- version: 2.4.2
30
- - - "<"
31
- - !ruby/object:Gem::Version
32
- version: '6.0'
26
+ version: '0'
33
27
  - !ruby/object:Gem::Dependency
34
- name: rspec
28
+ name: faraday
35
29
  requirement: !ruby/object:Gem::Requirement
36
30
  requirements:
37
31
  - - "~>"
38
32
  - !ruby/object:Gem::Version
39
- version: '3.0'
40
- type: :development
33
+ version: '1.10'
34
+ type: :runtime
41
35
  prerelease: false
42
36
  version_requirements: !ruby/object:Gem::Requirement
43
37
  requirements:
44
38
  - - "~>"
45
39
  - !ruby/object:Gem::Version
46
- version: '3.0'
40
+ version: '1.10'
47
41
  - !ruby/object:Gem::Dependency
48
- name: rubocop
49
- requirement: !ruby/object:Gem::Requirement
50
- requirements:
51
- - - ">="
52
- - !ruby/object:Gem::Version
53
- version: '0'
54
- type: :development
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - ">="
59
- - !ruby/object:Gem::Version
60
- version: '0'
61
- - !ruby/object:Gem::Dependency
62
- name: webmock
42
+ name: faraday_middleware
63
43
  requirement: !ruby/object:Gem::Requirement
64
44
  requirements:
65
45
  - - "~>"
66
46
  - !ruby/object:Gem::Version
67
- version: '2.0'
68
- type: :development
47
+ version: '1.2'
48
+ type: :runtime
69
49
  prerelease: false
70
50
  version_requirements: !ruby/object:Gem::Requirement
71
51
  requirements:
72
52
  - - "~>"
73
53
  - !ruby/object:Gem::Version
74
- version: '2.0'
54
+ version: '1.2'
75
55
  - !ruby/object:Gem::Dependency
76
- name: faraday
56
+ name: i18n
77
57
  requirement: !ruby/object:Gem::Requirement
78
58
  requirements:
79
59
  - - ">="
@@ -87,7 +67,7 @@ dependencies:
87
67
  - !ruby/object:Gem::Version
88
68
  version: '0'
89
69
  - !ruby/object:Gem::Dependency
90
- name: faraday_middleware
70
+ name: lumberjack
91
71
  requirement: !ruby/object:Gem::Requirement
92
72
  requirements:
93
73
  - - ">="
@@ -118,16 +98,16 @@ dependencies:
118
98
  name: request_store
119
99
  requirement: !ruby/object:Gem::Requirement
120
100
  requirements:
121
- - - ">="
101
+ - - "~>"
122
102
  - !ruby/object:Gem::Version
123
- version: '0'
103
+ version: '1.0'
124
104
  type: :runtime
125
105
  prerelease: false
126
106
  version_requirements: !ruby/object:Gem::Requirement
127
107
  requirements:
128
- - - ">="
108
+ - - "~>"
129
109
  - !ruby/object:Gem::Version
130
- version: '0'
110
+ version: '1.0'
131
111
  - !ruby/object:Gem::Dependency
132
112
  name: twitter_cldr
133
113
  requirement: !ruby/object:Gem::Requirement
@@ -142,20 +122,6 @@ dependencies:
142
122
  - - "~>"
143
123
  - !ruby/object:Gem::Version
144
124
  version: '6.6'
145
- - !ruby/object:Gem::Dependency
146
- name: i18n
147
- requirement: !ruby/object:Gem::Requirement
148
- requirements:
149
- - - ">="
150
- - !ruby/object:Gem::Version
151
- version: '0'
152
- type: :runtime
153
- prerelease: false
154
- version_requirements: !ruby/object:Gem::Requirement
155
- requirements:
156
- - - ">="
157
- - !ruby/object:Gem::Version
158
- version: '0'
159
125
  description: Singleton Ruby client
160
126
  email: g11n-vip-project@vmware.com
161
127
  executables: []
@@ -178,7 +144,6 @@ files:
178
144
  - lib/sgtn-client/core/cache.rb
179
145
  - lib/sgtn-client/core/config.rb
180
146
  - lib/sgtn-client/core/exceptions.rb
181
- - lib/sgtn-client/core/logging.rb
182
147
  - lib/sgtn-client/exceptions.rb
183
148
  - lib/sgtn-client/formatters/plurals/plural_formatter.rb
184
149
  - lib/sgtn-client/i18n_backend.rb