class Gon
Constants
- VERSION
Public Class Methods
all_variables()
click to toggle source
# File lib/gon.rb, line 81 def all_variables current_gon ? current_gon.gon : {} end
clear()
click to toggle source
# File lib/gon.rb, line 85 def clear current_gon.clear if current_gon end
get_variable(name)
click to toggle source
# File lib/gon.rb, line 51 def get_variable(name) current_gon.gon[name] end
global()
click to toggle source
# File lib/gon.rb, line 28 def global Gon::Global end
inspect()
click to toggle source
# File lib/gon.rb, line 100 def inspect 'Gon' end
jbuilder(*args)
click to toggle source
# File lib/gon.rb, line 94 def jbuilder(*args) ensure_template_handler_is_defined data, options = Gon::Jbuilder.handler(args) store_builder_data 'jbuilder', data, options end
merge_variable(name, value)
click to toggle source
# File lib/gon.rb, line 59 def merge_variable(name, value) old_value = all_variables[name] if value.is_a?(Hash) && old_value.is_a?(Hash) value = old_value.deep_merge(value) end set_variable(name, value) end
method_missing(method, *args, &block)
click to toggle source
# File lib/gon.rb, line 36 def method_missing(method, *args, &block) if method.to_s =~ /=$/ if public_method_name?(method) raise 'You can\t use Gon public methods for storing data' end if self == Gon && !current_gon raise 'Assign request-specific gon variables only through `gon` helper, not through Gon constant' end set_variable(method.to_s.delete('='), args[0]) else get_variable(method.to_s) end end
push(data = {}, merge = false)
click to toggle source
# File lib/gon.rb, line 67 def push(data = {}, merge = false) raise 'Object must have each_pair method' unless data.respond_to? :each_pair if merge data.each_pair do |name, value| merge_variable(name.to_s, value) end else data.each_pair do |name, value| set_variable(name.to_s, value) end end end
rabl(*args)
click to toggle source
# File lib/gon.rb, line 89 def rabl(*args) data, options = Gon::Rabl.handler(args) store_builder_data 'rabl', data, options end
set_variable(name, value)
click to toggle source
# File lib/gon.rb, line 55 def set_variable(name, value) current_gon.gon[name] = value end
watch()
click to toggle source
# File lib/gon.rb, line 32 def watch Gon::Watch end
Private Class Methods
current_gon()
click to toggle source
# File lib/gon.rb, line 106 def current_gon RequestStore.store[:gon] end
ensure_template_handler_is_defined()
click to toggle source
JbuilderTemplate will not be defined if jbuilder is required before gon. By loading jbuilder again, JbuilderTemplate will now be defined
# File lib/gon.rb, line 127 def ensure_template_handler_is_defined load 'jbuilder.rb' unless defined?(JbuilderTemplate) end
public_method_name?(method)
click to toggle source
# File lib/gon.rb, line 120 def public_method_name?(method) public_methods.include?(method.to_s[0..-2].to_sym) end
store_builder_data(builder, data, options)
click to toggle source
# File lib/gon.rb, line 110 def store_builder_data(builder, data, options) if options[:as] set_variable(options[:as].to_s, data) elsif data.is_a? Hash data.each { |k, v| set_variable(k, v) } else set_variable(builder, data) end end