Module: Blocks::Sdk

Defined in:
lib/blocks/sdk.rb,
lib/blocks/sdk/version.rb,
lib/blocks/sdk/base_client.rb,
lib/blocks/sdk/rails/routes.rb,
lib/blocks/sdk/configuration.rb,
lib/blocks/sdk/rails/railtie.rb,
lib/blocks/sdk/service_manager.rb,
lib/blocks/sdk/cache/memory_cache.rb,
lib/blocks/sdk/rails/i18n_backend.rb,
lib/blocks/sdk/clients/translations_client.rb,
lib/blocks/sdk/rails/translations_route_mapper.rb,
lib/blocks/sdk/rails/controllers/api/translations_controller.rb,
lib/blocks/sdk/rails/controllers/translations_webhooks_controller.rb

Defined Under Namespace

Modules: Cache, Clients, Rails Classes: BaseClient, Configuration, Error, ServiceManager

Constant Summary collapse

VERSION =
"0.1.0"

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.configurationObject



17
18
19
# File 'lib/blocks/sdk.rb', line 17

def configuration
  @configuration ||= Configuration.new
end

.service_managerObject



31
32
33
# File 'lib/blocks/sdk.rb', line 31

def service_manager
  @service_manager ||= ServiceManager.new
end

Class Method Details

.configObject

Alias for configuration for convenience



22
23
24
# File 'lib/blocks/sdk.rb', line 22

def config
  configuration
end

.configure {|configuration| ... } ⇒ Object

Yields:



26
27
28
29
# File 'lib/blocks/sdk.rb', line 26

def configure
  yield(configuration) if block_given?
  configuration
end

.load_translations_on_bootObject

Load translations into cache on Rails boot This method should be called after Rails initialization It fetches translations for all configured modules and languages



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/blocks/sdk.rb', line 38

def load_translations_on_boot
  return unless defined?(Rails)
  return unless configuration.cache_enabled

  # Get modules and languages from configuration or environment
  modules   = translation_modules
  languages = translation_languages

  modules.each do |module_name|
    languages.each do |language|
      begin
        service_manager.fetch(
          service_name: "translations",
          params: { module_name: module_name, language: language },
          config: {
            base_url: configuration.uilm_base_url,
            project_key: configuration.uilm_project_key
          }
        )
      rescue StandardError => e
        log_error("Failed to load translations for #{module_name} (#{language}): #{e.message}")
      end
    end
  end
end