class Phaseout::Handler
Attributes
action[R]
controller[R]
default[R]
Public Class Methods
new(controller, action, as_pattern, key_pattern, editable, &block)
click to toggle source
# File lib/phaseout/handler.rb, line 5 def initialize(controller, action, as_pattern, key_pattern, editable, &block) @controller, @action, @as_pattern, @key_pattern, @editable = controller, action, as_pattern, key_pattern, editable @default = Phaseout::SEOFields.new key, as, &block end
Public Instance Methods
as()
click to toggle source
# File lib/phaseout/handler.rb, line 21 def as @as ||= eval_pattern @as_pattern end
call(&action_block)
click to toggle source
# File lib/phaseout/handler.rb, line 10 def call(&action_block) if seo_fields @controller.seo_tags = seo_fields.to_html @controller else @controller.seo_tags = @default.to_html @controller end action_block.call set_blank_field if @controller.status == 200 && @blank_field && @editable true end
class_index_key()
click to toggle source
# File lib/phaseout/handler.rb, line 42 def class_index_key ['action:', @controller.class.name, '#', @action].join.gsub(/\s+/, '_').underscore end
key()
click to toggle source
# File lib/phaseout/handler.rb, line 25 def key @key ||= I18n.transliterate( [ 'seo_key:', @controller.class.name, '#', @action, ':', eval_pattern(@key_pattern) ].join.gsub(/\s+/, '_').underscore ) end
seo_fields()
click to toggle source
# File lib/phaseout/handler.rb, line 29 def seo_fields return @seo_fields if @seo_fields dump = Phaseout.redis.get key if dump.blank? @blank_field = true return nil else @seo_fields = Marshal.load dump @seo_fields.default = @default @seo_fields end end
Protected Instance Methods
eval_pattern(pattern)
click to toggle source
# File lib/phaseout/handler.rb, line 52 def eval_pattern(pattern) pattern.to_s.gsub( /\@([\w\d\.\_])+/ ) do |subpattern| varname, *methods = subpattern.split '.' if @controller.instance_variable_defined? varname.to_sym [ *methods, :to_s ].inject( @controller.instance_variable_get varname.to_sym ) do |result, method| result.public_send method end else '' end end end
set_blank_field()
click to toggle source
# File lib/phaseout/handler.rb, line 47 def set_blank_field Phaseout::SEOAction.new(class_index_key).add key Phaseout::SEOFields.new(key, as).save end