Top Level Namespace

Defined Under Namespace

Modules: Racym

Instance Method Summary collapse

Instance Method Details

#racym(*args) ⇒ Object



3
4
5
6
7
8
9
10
11
# File 'lib/racym.rb', line 3

def racym(*args)
  value = args.map(&:to_s).join('.').split('.').inject(Rails.application.config) { |r, m| r = r.send(m); r }

  if value.is_a?(Proc)
    value.call
  else
    value
  end
end

#racym_set(*args) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/racym.rb', line 13

def racym_set(*args)
  Rails.application.config.racym_cache ||= {}
  
  after = args.pop
  before = racym(*args)
  token = args.map(&:to_s).join('.').split('.').join('.')

  if Rails.application.config.racym_cache[token]
    before = Rails.application.config.racym_cache[token].first
  end

  config_methods = token.split('.')

  config_methods.inject([config_methods.last, Rails.application.config]) do |last_and_rails_config, current_method|
    last, rails_config = last_and_rails_config

    rails_config = if last == current_method
      rails_config.send("#{current_method}=", after)
    else
      rails_config = rails_config.send(current_method)
    end

    [last, rails_config]
  end

  Rails.application.config.racym_cache[token] = [before, after]
end

#racym_undo!Object



41
42
43
44
45
46
47
48
49
50
# File 'lib/racym.rb', line 41

def racym_undo!
  return unless Rails.application.config.racym_cache.is_a? Hash

  Rails.application.config.racym_cache.each do |key, changes|
    config_methods = key.split('.')
    racym_set(key, changes.first)
  end
  
  Rails.application.config.racym_cache = nil
end