Class: Lolita::I18n::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/lolita-i18n/configuration.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#recording_request_path_infoObject (readonly)

Returns the value of attribute recording_request_path_info.



7
8
9
# File 'lib/lolita-i18n/configuration.rb', line 7

def recording_request_path_info
  @recording_request_path_info
end

#request_path_infoObject

Returns the value of attribute request_path_info.



5
6
7
# File 'lib/lolita-i18n/configuration.rb', line 5

def request_path_info
  @request_path_info
end

#yaml_backendObject

Returns the value of attribute yaml_backend.



5
6
7
# File 'lib/lolita-i18n/configuration.rb', line 5

def yaml_backend
  @yaml_backend
end

Instance Method Details

#backendObject

Lazy create new KeyValue backend with current store.



34
35
36
37
# File 'lib/lolita-i18n/configuration.rb', line 34

def backend
  @backend ||= KeyValueRecorder.new(self.store)
  #@backend ||= ::I18n::Backend::KeyValue.new(self.store)
end

#connectObject



58
59
60
61
62
# File 'lib/lolita-i18n/configuration.rb', line 58

def connect
  unless @connected
    reconnect
  end
end

#disconnectObject



81
82
83
84
85
86
# File 'lib/lolita-i18n/configuration.rb', line 81

def disconnect
  if @connected
    store.client.disconnect
    @connected = false
  end
end

#include_modulesObject

Add modules for SimpleBackend that is used for Yaml translations



93
94
95
96
97
# File 'lib/lolita-i18n/configuration.rb', line 93

def include_modules
  ::I18n::Backend::Simple.send(:include, ::I18n::Backend::Flatten)
  ::I18n::Backend::Simple.send(:include, ::I18n::Backend::Pluralization)
  ::I18n::Backend::Simple.send(:include, ::I18n::Backend::InterpolationCompiler)
end

#initObject



49
50
51
52
53
54
55
56
# File 'lib/lolita-i18n/configuration.rb', line 49

def init
  unless @initialized
    include_modules
    set_yaml_backend
    @initialized = true
    connect
  end
end

#initialize_chainObject

Create chain where new KeyValue backend is first and Yaml backend is second.



45
46
47
# File 'lib/lolita-i18n/configuration.rb', line 45

def initialize_chain
  ::I18n::Backend::Chain.new(self.backend, self.yaml_backend)
end

#load_rails!Object



9
10
11
12
13
# File 'lib/lolita-i18n/configuration.rb', line 9

def load_rails!
  if Lolita.rails?
    require 'lolita-i18n/rails'
  end
end

#load_translationsObject

Load translation from yaml.



40
41
42
# File 'lib/lolita-i18n/configuration.rb', line 40

def load_translations
  @yaml_backend.load_translations
end

#reconnectObject



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/lolita-i18n/configuration.rb', line 64

def reconnect
  unless @initialized
    init
  else
    disconnect
    @connected = begin
      store.client.reconnect
      store.ping
      ::I18n.backend = initialize_chain
      true
    rescue Errno::ECONNREFUSED => e
      warn "Warning: Lolita was unable to connect to Redis DB: #{e}"
      false
    end
  end
end

#set_recording_request_path_infoObject



99
100
101
# File 'lib/lolita-i18n/configuration.rb', line 99

def set_recording_request_path_info
  @recording_request_path_info = true
end

#set_yaml_backendObject



88
89
90
# File 'lib/lolita-i18n/configuration.rb', line 88

def set_yaml_backend
  @yaml_backend ||= ::I18n.backend
end

#storeObject

Rerturn existing store or create new Redis connection without any arguments.



15
16
17
18
19
20
21
# File 'lib/lolita-i18n/configuration.rb', line 15

def store
  unless @store
    warn "Lolita::I18n No store specified. See Lolita::I18n"
    @store = Redis.new
  end
  @store
end

#store=(possible_store) ⇒ Object

Set current store to new Redis connection with given Hash options or accept Redis connection itself.



24
25
26
27
28
29
30
31
# File 'lib/lolita-i18n/configuration.rb', line 24

def store=(possible_store)
  @store = if possible_store.is_a?(Hash)
     Redis.new(possible_store)
   else
     possible_store
   end
  @store
end