wedge 0.1.20 → 0.1.21
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/roda/plugins/wedge.rb +2 -6
- data/lib/wedge/middleware.rb +48 -21
- data/lib/wedge/plugins/form.rb +17 -3
- data/lib/wedge/plugins/render.rb +1 -1
- data/lib/wedge/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a265e4fa793983ef66765457cb162508d1c1a5a4
|
4
|
+
data.tar.gz: e0da79dfdac85063881710ecd1266d8d8a5129c2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 03b94e2207a5dc52b91187cb66e89dbff0ce902ffb33f3f7558e4614c9d94635f3260d7c940b12e60977b53b076f01bbca7d2eeb1c01c602005997497df59f58
|
7
|
+
data.tar.gz: 9d80870d1c844e4753daa99e198ca1c80bb58d1649485926b976d4effc7609af976c6868e8553485a0851eb1ba6d4b9897e54961437a2afa0b2a30c1565ac5d5
|
data/lib/roda/plugins/wedge.rb
CHANGED
@@ -2,11 +2,7 @@ class Roda
|
|
2
2
|
module RodaPlugins
|
3
3
|
class WedgePlugin
|
4
4
|
def self.configure(app, opts = false, &block)
|
5
|
-
|
6
|
-
app.use Wedge::Middleware, opts || block
|
7
|
-
else
|
8
|
-
opts.each { |k, v| Wedge.config.send "#{k}=", v }
|
9
|
-
end
|
5
|
+
app.use Wedge::Middleware, opts || block, true
|
10
6
|
end
|
11
7
|
|
12
8
|
module ClassMethods
|
@@ -28,7 +24,7 @@ class Roda
|
|
28
24
|
module RequestMethods
|
29
25
|
def wedge_assets
|
30
26
|
on Wedge.assets_url_regex do
|
31
|
-
run
|
27
|
+
run Wedge::Middleware.scope!(scope)
|
32
28
|
end
|
33
29
|
end
|
34
30
|
end
|
data/lib/wedge/middleware.rb
CHANGED
@@ -1,29 +1,43 @@
|
|
1
1
|
class Wedge
|
2
2
|
class Middleware
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
Wedge.
|
15
|
-
|
16
|
-
|
3
|
+
attr_reader :skip_call
|
4
|
+
|
5
|
+
def initialize(app = false, settings = false, skip_call = false)
|
6
|
+
if settings
|
7
|
+
case settings
|
8
|
+
when Proc
|
9
|
+
Wedge.config.instance_eval &settings
|
10
|
+
else
|
11
|
+
settings.each { |k, v| Wedge.config.send "#{k}=", v }
|
12
|
+
end
|
13
|
+
|
14
|
+
@opal = { server: Wedge::Opal::Server.new { |s|
|
15
|
+
s.prefix = Wedge.config.assets_url
|
16
|
+
s.debug = Wedge.config.debug
|
17
|
+
s.append_path "#{Dir.pwd}/#{Wedge.config.app_dir}"
|
18
|
+
}}
|
19
|
+
|
20
|
+
if Wedge.config.debug
|
21
|
+
@opal[:sprockets] = @opal[:server].sprockets
|
22
|
+
@opal[:maps_prefix] = "#{Wedge.config.assets_url}/__OPAL_SOURCE_MAPS__"
|
23
|
+
@opal[:maps_app] = Opal::SourceMapServer.new @opal[:sprockets], @opal[:maps_prefix]
|
24
|
+
|
25
|
+
Wedge::Opal::Sprockets::SourceMapHeaderPatch.inject! @opal[:maps_prefix]
|
26
|
+
end
|
17
27
|
end
|
28
|
+
|
29
|
+
@app = app
|
30
|
+
@scope = self.class.scope
|
31
|
+
@skip_call = skip_call
|
18
32
|
end
|
19
33
|
|
20
34
|
def call(env)
|
21
|
-
responder = Responder.new(@app, @opal, @scope, env)
|
35
|
+
responder = Responder.new(@app, @opal, @scope, @skip_call, env)
|
22
36
|
responder.respond
|
23
37
|
end
|
24
38
|
|
25
39
|
class << self
|
26
|
-
attr_accessor :scope
|
40
|
+
attr_accessor :scope, :skip_call
|
27
41
|
|
28
42
|
def scope! scope
|
29
43
|
klass = Class.new(self)
|
@@ -37,19 +51,22 @@ class Wedge
|
|
37
51
|
end
|
38
52
|
|
39
53
|
class Responder
|
40
|
-
attr_reader :opal, :scope
|
54
|
+
attr_reader :opal, :scope, :skip_call
|
41
55
|
attr_accessor :app, :env, :wedge_path, :extension
|
42
56
|
|
43
|
-
def initialize(app, opal, scope, env)
|
44
|
-
@app = app; @opal = opal; @scope = (scope || self); @env = env
|
57
|
+
def initialize(app, opal, scope, skip_call, env)
|
58
|
+
@app = app; @opal = opal; @scope = (scope || self); @skip_call = skip_call; @env = env
|
45
59
|
end
|
46
60
|
|
47
61
|
def respond
|
48
62
|
if path =~ Wedge.assets_url_regex
|
49
63
|
@wedge_path, @extension = $1, $2
|
50
|
-
body, headers, status = [], {}, 200
|
51
64
|
|
52
65
|
if extension == 'call'
|
66
|
+
return response.finish if skip_call
|
67
|
+
|
68
|
+
body, headers, status = [], {}, 200
|
69
|
+
|
53
70
|
body_data = request.body.read
|
54
71
|
data = request.params
|
55
72
|
|
@@ -92,7 +109,17 @@ class Wedge
|
|
92
109
|
|
93
110
|
[status, headers, body]
|
94
111
|
else
|
95
|
-
|
112
|
+
if Wedge.config.debug
|
113
|
+
if path[@opal[:maps_prefix]]
|
114
|
+
@opal[:maps_app].call env
|
115
|
+
else
|
116
|
+
e = env.deep_dup
|
117
|
+
e['PATH_INFO'] = env['PATH_INFO'].sub "#{Wedge.config.assets_url}/", ''
|
118
|
+
@opal[:sprockets].call e
|
119
|
+
end
|
120
|
+
else
|
121
|
+
@opal[:server].call env
|
122
|
+
end
|
96
123
|
end
|
97
124
|
else
|
98
125
|
response.finish
|
data/lib/wedge/plugins/form.rb
CHANGED
@@ -171,7 +171,7 @@ class Wedge
|
|
171
171
|
else
|
172
172
|
# issue: OPAL is not using the alias method original_attr_reader
|
173
173
|
# correctly. It's still somehow getting in here when called below.
|
174
|
-
next if %w'_atts _options'.include? att.to_s
|
174
|
+
next if %w'_atts _options _atts_keys'.include? att.to_s
|
175
175
|
###################################################################
|
176
176
|
|
177
177
|
# set empty options if need be
|
@@ -205,7 +205,8 @@ class Wedge
|
|
205
205
|
alias alias_model model_alias
|
206
206
|
end
|
207
207
|
|
208
|
-
original_attr_reader :_atts, :_options
|
208
|
+
original_attr_reader :_atts, :_atts_keys, :_options
|
209
|
+
|
209
210
|
|
210
211
|
# Initialize with a hash of attributes and values.
|
211
212
|
# Extra attributes are discarded.
|
@@ -245,6 +246,7 @@ class Wedge
|
|
245
246
|
atts.each do |key, val|
|
246
247
|
# grab the original key if alias is given
|
247
248
|
key = _aliases.invert[key] || key
|
249
|
+
(@_atts_keys ||= []) << key
|
248
250
|
|
249
251
|
next if (_accessor_options[key] || {})[:form]
|
250
252
|
|
@@ -256,6 +258,18 @@ class Wedge
|
|
256
258
|
end
|
257
259
|
end
|
258
260
|
|
261
|
+
def _with_atts
|
262
|
+
_accessor_options[:with_atts] || []
|
263
|
+
end
|
264
|
+
|
265
|
+
def _without_atts
|
266
|
+
_accessor_options[:without_atts] || []
|
267
|
+
end
|
268
|
+
|
269
|
+
def _keys
|
270
|
+
(_atts_keys + _with_atts).reject { |k| _without_atts.include? k }
|
271
|
+
end
|
272
|
+
|
259
273
|
def _accessors
|
260
274
|
@_accessors ||= (self.class._accessors || IndifferentHash.new).deep_dup
|
261
275
|
end
|
@@ -286,7 +300,7 @@ class Wedge
|
|
286
300
|
_options[:_attributes] = true
|
287
301
|
_options[:_model_attributes] = for_model
|
288
302
|
|
289
|
-
|
303
|
+
_keys.each do |att|
|
290
304
|
opts = _accessor_options[att]
|
291
305
|
if _atts.can_read?(att) && (!opts[:hidden] || opts[:hidden].is_a?(Proc) && !self.instance_exec(&opts[:hidden]))
|
292
306
|
is_form = opts[:form]
|
data/lib/wedge/plugins/render.rb
CHANGED
data/lib/wedge/version.rb
CHANGED