opal-connect 0.0.8 → 0.0.9
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/opal/connect/plugins/events.rb +2 -1
- data/lib/opal/connect/plugins/html.rb +6 -0
- data/lib/opal/connect/plugins/scope.rb +12 -2
- data/lib/opal/connect/plugins/server.rb +6 -1
- data/lib/opal/connect/rake_task.rb +5 -2
- data/lib/opal/connect/version.rb +1 -1
- data/lib/opal/connect.rb +32 -59
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f88b83b2a3997a5d494b41fedd83777c104a05c9
|
4
|
+
data.tar.gz: 1dcededce0860ec8c3314a74900950c17d862147
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6094189c9f0a4c87911703e7968a42814a4ff6d90871472999f328cbfa9089c21cf7a7e2bef1e1ae40bf26571e6c4ec9b09ee367130fad5c7b83fde56f8a55b6
|
7
|
+
data.tar.gz: 6a7ba6691da29aed4eee614188414680ea040d1408b01caa0c19ddda88282ff9c41af6aede4d94ad40815b7861baf8be45c83a5d08d4cf5d9911bb31127c4dd2
|
@@ -2,6 +2,12 @@ module Opal
|
|
2
2
|
module Connect
|
3
3
|
module ConnectPlugins
|
4
4
|
module Scope
|
5
|
+
def self.configure(connect, options = false)
|
6
|
+
return unless options
|
7
|
+
|
8
|
+
connect.options[:scope] = options
|
9
|
+
end
|
10
|
+
|
5
11
|
module InstanceMethods
|
6
12
|
def scope(new_scope = false)
|
7
13
|
if new_scope
|
@@ -23,8 +29,12 @@ module Opal
|
|
23
29
|
end
|
24
30
|
|
25
31
|
module ClassMethods
|
26
|
-
def scope(
|
27
|
-
|
32
|
+
def scope(new_scope = false, *args)
|
33
|
+
if new_scope
|
34
|
+
@_scope = new(*args).scope(new_scope || Connect.options[:scope])
|
35
|
+
else
|
36
|
+
@_scope
|
37
|
+
end
|
28
38
|
end
|
29
39
|
end
|
30
40
|
end
|
@@ -9,8 +9,11 @@ module Opal
|
|
9
9
|
options = DEFAULT_OPTIONS.merge opts
|
10
10
|
|
11
11
|
namespace name do
|
12
|
-
Opal
|
13
|
-
|
12
|
+
return unless defined? Opal.append_path
|
13
|
+
|
14
|
+
Opal::Connect.write_plugins_file
|
15
|
+
Opal::Connect.write_entry_file
|
16
|
+
|
14
17
|
Opal.append_path Dir.pwd
|
15
18
|
|
16
19
|
opal_file_path = "#{Dir.pwd}/.connect/opal.js"
|
data/lib/opal/connect/version.rb
CHANGED
data/lib/opal/connect.rb
CHANGED
@@ -19,70 +19,24 @@ module Opal
|
|
19
19
|
class << self
|
20
20
|
attr_accessor :pids
|
21
21
|
|
22
|
-
def run(scope, server, opts = {})
|
23
|
-
if ENV['CUTEST']
|
24
|
-
scope.run server
|
25
|
-
else
|
26
|
-
@pids = []
|
27
|
-
options = { env: { RACK_ENV: ENV['RACK_ENV']} }.merge opts
|
28
|
-
|
29
|
-
envs = options[:env].to_a.map { |k, v| "#{k}=#{v}" }.join ' '
|
30
|
-
pids << {
|
31
|
-
name: 'webpack',
|
32
|
-
pid: Process.spawn("#{envs} bundle exec rake webpack:run")
|
33
|
-
}
|
34
|
-
|
35
|
-
if (cutest = Connect.options[:cutest]) && pids.select { |pid| pid[:name] == 'cutest' }.empty?
|
36
|
-
envs = cutest[:env].to_a.map { |k, v| "#{k}=#{v}" }.join ' '
|
37
|
-
pids << {
|
38
|
-
name: 'cutest',
|
39
|
-
pid: Process.spawn("#{envs} #{cutest[:run]}")
|
40
|
-
}
|
41
|
-
end
|
42
|
-
|
43
|
-
scope.send(:at_exit) { quit_pids }
|
44
|
-
|
45
|
-
scope.run server
|
46
|
-
end
|
47
|
-
rescue
|
48
|
-
quit_pids
|
49
|
-
end
|
50
|
-
|
51
|
-
def quit_pids
|
52
|
-
begin
|
53
|
-
while pids.length > 0
|
54
|
-
Process.kill "QUIT", (pids.shift)[:pid]
|
55
|
-
end
|
56
|
-
rescue
|
57
|
-
# process already dead
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
22
|
def options
|
62
|
-
@
|
23
|
+
@_options ||= Connect::ConnectCache.new(
|
63
24
|
hot_reload: false,
|
64
25
|
url: '/connect',
|
65
26
|
plugins: [],
|
66
|
-
setup_ran: false,
|
67
27
|
javascript: [],
|
68
|
-
plugin_requires: []
|
28
|
+
plugin_requires: [],
|
29
|
+
setup_blocks: []
|
69
30
|
)
|
70
31
|
end
|
71
32
|
|
72
|
-
def options=(opts)
|
73
|
-
@options = opts
|
74
|
-
end if RUBY_ENGINE == 'opal'
|
75
|
-
|
76
33
|
def setup(&block)
|
77
34
|
instance_exec(&block) if block_given?
|
78
35
|
|
79
36
|
# make sure we include the default plugins with connect
|
80
37
|
options[:plugins].each { |plug| Connect.plugin plug }
|
81
38
|
|
82
|
-
|
83
|
-
write_plugins_file
|
84
|
-
write_entry_file
|
85
|
-
end
|
39
|
+
options[:setup_blocks].each { |b| Class.new { include Opal::Connect }.new.instance_exec(&b) }
|
86
40
|
end
|
87
41
|
|
88
42
|
def included(klass)
|
@@ -239,7 +193,12 @@ module Opal
|
|
239
193
|
end
|
240
194
|
|
241
195
|
def setup(&block)
|
242
|
-
|
196
|
+
if block_given?
|
197
|
+
@_setup_block = block
|
198
|
+
Connect.options[:setup_blocks] << @_setup_block
|
199
|
+
else
|
200
|
+
@_setup_block
|
201
|
+
end
|
243
202
|
end
|
244
203
|
|
245
204
|
# Load a new plugin into the current class. A plugin can be a module
|
@@ -252,23 +211,31 @@ module Opal
|
|
252
211
|
included = (args.first == :included) ? args.shift : false
|
253
212
|
|
254
213
|
raise ConnectError, "Cannot add a plugin to a frozen Connect class" if RUBY_ENGINE != 'opal' && frozen?
|
214
|
+
|
255
215
|
if plugin.is_a?(Symbol)
|
256
216
|
Connect.options[:plugins] << plugin unless Connect.options[:plugins].include? plugin
|
257
217
|
plugin = ConnectPlugins.load_plugin(plugin)
|
258
218
|
end
|
219
|
+
|
259
220
|
plugin.load_dependencies(self, *args, &block) if !included && plugin.respond_to?(:load_dependencies)
|
221
|
+
|
260
222
|
return unless plugin
|
223
|
+
|
261
224
|
include(plugin::InstanceMethods) if defined?(plugin::InstanceMethods)
|
262
|
-
extend(plugin::ClassMethods)
|
225
|
+
extend(plugin::ClassMethods) if defined?(plugin::ClassMethods)
|
226
|
+
|
263
227
|
unless included
|
264
228
|
Connect.extend(plugin::ConnectClassMethods) if defined?(plugin::ConnectClassMethods)
|
265
229
|
Connect.include(plugin::ConnectInstanceMethods) if defined?(plugin::ConnectInstanceMethods)
|
266
230
|
Connect.instance_exec(plugin, &plugin::ConnectSetup) if defined?(plugin::ConnectSetup)
|
231
|
+
|
267
232
|
unless RUBY_ENGINE == 'opal'
|
268
233
|
Connect.options[:javascript] << plugin::ConnectJavascript if defined?(plugin::ConnectJavascript)
|
269
234
|
end
|
270
235
|
end
|
236
|
+
|
271
237
|
plugin.configure(self, *args, &block) if !included && plugin.respond_to?(:configure)
|
238
|
+
|
272
239
|
nil
|
273
240
|
end
|
274
241
|
|
@@ -307,7 +274,7 @@ module Opal
|
|
307
274
|
|
308
275
|
Opal::Connect.start_events unless $connect_events_started
|
309
276
|
end
|
310
|
-
}
|
277
|
+
} if klass.class.name
|
311
278
|
end
|
312
279
|
|
313
280
|
def write_entry_file(klass = false, method = false, *options)
|
@@ -323,15 +290,23 @@ module Opal
|
|
323
290
|
|
324
291
|
client_options = Base64.encode64 client_options.to_json
|
325
292
|
|
326
|
-
code =
|
327
|
-
|
293
|
+
code = %{
|
294
|
+
options = JSON.parse(Base64.decode64('#{client_options}'));
|
295
|
+
options.each do |key, value|
|
296
|
+
Opal::Connect.options[key] = value
|
297
|
+
end
|
298
|
+
}
|
299
|
+
code = "#{code} Opal::Connect.options[:plugins].each { |plug| Opal::Connect.plugin plug };"
|
300
|
+
|
328
301
|
if Connect.respond_to? :templates
|
329
302
|
templates = Base64.encode64 Connect.templates.hash.to_json
|
330
303
|
code = "#{code} Opal::Connect.templates = JSON.parse(Base64.decode64('#{templates}'));"
|
331
304
|
end
|
305
|
+
|
332
306
|
code = %{#{code} Opal::Connect.server_methods = JSON.parse(
|
333
307
|
Base64.decode64('#{Base64.encode64 Connect.server_methods.to_json}')
|
334
308
|
);}
|
309
|
+
|
335
310
|
code = "#{code} #{Connect.options[:entry]}" if Connect.options[:entry]
|
336
311
|
|
337
312
|
|
@@ -360,6 +335,8 @@ module Opal
|
|
360
335
|
}
|
361
336
|
end
|
362
337
|
|
338
|
+
code = "#{code} Opal::Connect.options[:setup_blocks].each { |b| Class.new { include Opal::Connect }.new.instance_exec(&b) }"
|
339
|
+
|
363
340
|
FileUtils.mkdir_p(File.dirname(path))
|
364
341
|
File.write(path, build(code))
|
365
342
|
end
|
@@ -368,10 +345,6 @@ module Opal
|
|
368
345
|
end
|
369
346
|
end
|
370
347
|
|
371
|
-
if RUBY_ENGINE == 'opal'
|
372
|
-
require ".connect/plugins"
|
373
|
-
end
|
374
|
-
|
375
348
|
extend ConnectPlugins::Base::ClassMethods
|
376
349
|
plugin ConnectPlugins::Base
|
377
350
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: opal-connect
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- cj
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-05-
|
11
|
+
date: 2016-05-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: opal
|