wedge 0.1.20 → 0.1.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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