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

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

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.describeObject


Info



12
13
14
# File 'lib/nucleon/action/node/cache.rb', line 12

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

Instance Method Details

#argumentsObject




36
37
38
# File 'lib/nucleon/action/node/cache.rb', line 36

def arguments
  [ :name, :value ]
end

#clear_node_cache(node) ⇒ Object




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

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



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

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




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

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



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

def execute
  super do |node, network|
    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



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

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




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

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




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

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