Skip to content

Commit bcce7ae

Browse files
committed
Store hash in request.env
1 parent 6697515 commit bcce7ae

File tree

2 files changed

+35
-9
lines changed

2 files changed

+35
-9
lines changed

lib/gon.rb

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,26 @@
33

44
module Gon
55
def self.all_variables
6-
request.env[:gon]
6+
@request_env[:gon]
77
end
8+
89
def self.clear
9-
request.env[:gon] = {}
10+
@request_env[:gon] = {}
11+
end
12+
13+
def self.request_env=(request_env)
14+
@request_env = request_env
15+
end
16+
17+
def self.request_env
18+
if defined?(@request_env)
19+
return @request_env
20+
end
1021
end
11-
22+
1223
def self.method_missing(m, *args, &block)
13-
request.env[:gon] ||= {}
14-
24+
@request_env[:gon] ||= {}
25+
1526
if ( m.to_s =~ /=/ )
1627
set_variable(m.to_s.delete('='), args[0])
1728
else
@@ -20,10 +31,10 @@ def self.method_missing(m, *args, &block)
2031
end
2132

2233
def self.get_variable(name)
23-
request.env[:gon][name]
34+
@request_env[:gon][name]
2435
end
2536

2637
def self.set_variable(name, value)
27-
request.env[:gon][name] = value
38+
@request_env[:gon][name] = value
2839
end
2940
end

lib/gon/helpers.rb

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,31 @@ module InstanceMethods
88
def include_gon
99
data = Gon.all_variables
1010

11-
script = "<script>window.Gon = {};"
11+
script = "<script>window.gon = {};"
1212
data.each do |key, val|
13-
script += "Gon." + key.to_s + '=' + val.to_json + ";"
13+
script += "gon." + key.to_s + '=' + val.to_json + ";"
1414
end
1515
script += "</script>"
1616
script.html_safe
1717
end
1818
end
19+
end
20+
21+
module GonHelpers
22+
def self.included base
23+
base.send(:include, InstanceMethods)
24+
end
1925

26+
module InstanceMethods
27+
def gon
28+
if !Gon.request_env || Gon.request_env.object_id != request.env.object_id
29+
Gon.request_env = request.env
30+
end
31+
Gon
32+
end
33+
end
2034
end
2135
end
2236

2337
ActionView::Base.send :include, Gon::Helpers
38+
ActionController::Base.send :include, Gon::GonHelpers

0 commit comments

Comments
 (0)