Class: Nucleon::Action::Node::Cache

Inherits:
Object
  • Object
show all
Defined in:
lib/nucleon/action/node/cache.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.describeObject


Info



10
11
12
# File 'lib/nucleon/action/node/cache.rb', line 10

def self.describe
  super(:node, :cache, 600)
end

Instance Method Details

#argumentsObject




34
35
36
# File 'lib/nucleon/action/node/cache.rb', line 34

def arguments
  [ :name, :value ]
end

#clear_node_cache(node) ⇒ Object




118
119
120
121
122
123
124
125
126
127
# File 'lib/nucleon/action/node/cache.rb', line 118

def clear_node_cache(node)
  node.clear_cache
  
  if node.cache.status == code.success
    success("Cached properties cleared", { :i18n => false })
  else
    error("Cached properties could not be cleared", { :i18n => false })
    myself.status = code.cache_save_failed  
  end  
end

#configureObject


Settings



17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/nucleon/action/node/cache.rb', line 17

def configure
  super do
    codes :cache_save_failed
    
    register_str :name
    register_str :value
    
    register_bool :delete
    register_bool :clear     
    
    register_translator :input_format            
    register_translator :format, :json
  end
end

#delete_node_cache(node, name) ⇒ Object




83
84
85
86
87
88
89
90
91
92
# File 'lib/nucleon/action/node/cache.rb', line 83

def delete_node_cache(node, name)
  node.delete_cache_setting(name)
  
  if node.cache.status == code.success
    success("Cached property #{name.join('.')} deleted", { :i18n => false })
  else
    error("Cached property #{name.join('.')} deletion could not be saved", { :i18n => false })
    myself.status = code.cache_save_failed  
  end  
end

#executeObject


Operations



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/nucleon/action/node/cache.rb', line 41

def execute
  super do |node|
    ensure_node(node) do
      if settings.delete(:clear, false)
        clear_node_cache(node)
      elsif ! settings[:name] || settings[:name].empty?
        render_node_cache(node)
      else
        settings[:name]  = settings[:name].split('.')
        settings[:value] = nil if settings[:value].is_a?(String) && settings[:value].empty? 
        
        if settings.delete(:delete, false)
          delete_node_cache(node, settings[:name])                
        elsif ! settings[:value].nil?
          set_node_cache(node, settings[:name], settings[:value])
        else
          render_node_cache_property(node, settings[:name])
        end
      end
    end
  end
end

#render_node_cache(node) ⇒ Object


Sub operations



67
68
69
70
71
# File 'lib/nucleon/action/node/cache.rb', line 67

def render_node_cache(node)
  format        = settings[:format]
  myself.result = node.cache_setting([], {}, :hash)
  render result, :format => format  
end

#render_node_cache_property(node, name) ⇒ Object




75
76
77
78
79
# File 'lib/nucleon/action/node/cache.rb', line 75

def render_node_cache_property(node, name)
  format        = settings[:format]
  myself.result = node.cache_setting(name)
  render result, :format => format 
end

#set_node_cache(node, name, value) ⇒ Object




96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
# File 'lib/nucleon/action/node/cache.rb', line 96

def set_node_cache(node, name, value)
  input_format = settings[:input_format]
  
  value        = Util::Data.value(render(value, { 
    :format => input_format, 
    :silent => true 
  })) if input_format
          
  myself.result = value
      
  node.set_cache_setting(name, value)
  
  if node.cache.status == code.success  
    success("Cached property #{name.join('.')} saved", { :i18n => false })
  else
    error("Cached property #{name.join('.')} could not be saved", { :i18n => false })
    myself.status = code.cache_save_failed  
  end  
end