opal-connect 0.0.10 → 0.0.11
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/.gitignore +3 -0
- data/Gemfile +8 -0
- data/Makefile +2 -0
- data/Rakefile +8 -0
- data/app/app.rb +21 -0
- data/app/components/example.rb +29 -0
- data/app/config/boot.rb +18 -0
- data/app/config/connect.rb +7 -0
- data/config.ru +3 -0
- data/lib/opal/connect/entry.rb.erb +16 -0
- data/lib/opal/connect/plugins/current_user.rb +1 -1
- data/lib/opal/connect/plugins/dom.rb +12 -1
- data/lib/opal/connect/plugins/events.rb +2 -0
- data/lib/opal/connect/plugins/html.rb +0 -6
- data/lib/opal/connect/plugins/server.rb +6 -0
- data/lib/opal/connect/puts.rb +6 -0
- data/lib/opal/connect/rake_task.rb +24 -17
- data/lib/opal/connect/version.rb +1 -1
- data/lib/opal/connect.rb +55 -137
- data/opal-connect.gemspec +3 -1
- data/package.json +20 -0
- data/webpack.config.js +36 -0
- metadata +28 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f94e4ee7aff0175252749e2f327a3c070bb07427
|
4
|
+
data.tar.gz: 1f4431064a572782d46d161225e72303951a8c40
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9f05e1417b03caa119070db5aa499b20004b0ee07f27317a836de96d14478c9d52e9d670632f2fd93de5ea2249a9d0bda9737bf0f68f3fca3d00e5dcb8963d6b
|
7
|
+
data.tar.gz: f174ea1b0a29f06caf0034fb33dff9d976e5ce73be73a2e46b1f1d7b24eefad89cdba9ce0ba2c56da6213883c432f496b7301e3bec7a6f72941bf39f5cb409fc
|
data/.gitignore
CHANGED
data/Gemfile
CHANGED
@@ -1,4 +1,12 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
2
|
|
3
|
+
gem 'roda', '2.14.0'
|
4
|
+
gem 'thin', '1.6.4'
|
5
|
+
gem 'rack-unreloader', '1.5.0'
|
6
|
+
gem 'rack-livereload'
|
7
|
+
# gem 'opal-rspec', github: 'opal/opal-rspec'
|
8
|
+
gem 'pry'
|
9
|
+
gem 'awesome_print'
|
10
|
+
|
3
11
|
# Specify your gem's dependencies in opal-connect.gemspec
|
4
12
|
gemspec
|
data/Makefile
ADDED
data/Rakefile
CHANGED
data/app/app.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
require_relative 'config/connect'
|
2
|
+
|
3
|
+
class App < Roda
|
4
|
+
plugin :assets,
|
5
|
+
path: '.connect/output',
|
6
|
+
css_dir: '',
|
7
|
+
js_dir: '',
|
8
|
+
group_subdirs: false,
|
9
|
+
gzip: true,
|
10
|
+
js: { connect: [ 'opal.js', 'connect.js' ] }
|
11
|
+
|
12
|
+
use Rack::LiveReload
|
13
|
+
|
14
|
+
route do |r|
|
15
|
+
r.assets
|
16
|
+
|
17
|
+
r.root do
|
18
|
+
Components::Example.scope(self).render :display
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
class App
|
2
|
+
module Components
|
3
|
+
class Example
|
4
|
+
include Opal::Connect
|
5
|
+
|
6
|
+
def display
|
7
|
+
dom.set! html! {
|
8
|
+
html do
|
9
|
+
head do
|
10
|
+
meta charset: 'utf-8'
|
11
|
+
end
|
12
|
+
|
13
|
+
body do
|
14
|
+
div 'Example'
|
15
|
+
end
|
16
|
+
end
|
17
|
+
}
|
18
|
+
|
19
|
+
if RUBY_ENGINE == 'opal'
|
20
|
+
dom.find('body').append 'cow'
|
21
|
+
else
|
22
|
+
dom.find('html').append assets([:js, :connect])
|
23
|
+
end
|
24
|
+
|
25
|
+
dom
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/app/config/boot.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
$:.unshift './app'
|
2
|
+
$:.unshift './lib'
|
3
|
+
|
4
|
+
require 'bundler'
|
5
|
+
Bundler.setup :default, ENV.fetch('RACK_ENV') { 'development' }
|
6
|
+
|
7
|
+
require 'roda'
|
8
|
+
require 'rack/unreloader'
|
9
|
+
require 'rack-livereload'
|
10
|
+
|
11
|
+
class App < Roda; end
|
12
|
+
|
13
|
+
Unreloader = Rack::Unreloader.new(subclasses: %w'Roda Roda::RodaPlugins Opal::Connect Opal::Connect::CLIENT_OPTIONS'){App}
|
14
|
+
|
15
|
+
Unreloader.require './lib/opal/connect.rb'
|
16
|
+
Unreloader.require 'app/config/connect'
|
17
|
+
Unreloader.require 'app'
|
18
|
+
Unreloader.require 'app/components/**/*'
|
data/config.ru
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'opal/connect'
|
2
|
+
|
3
|
+
<% plugins.each do |path| %>
|
4
|
+
require '<%= path %>'
|
5
|
+
<% end %>
|
6
|
+
|
7
|
+
options = JSON.parse(Base64.decode64('<%= client_options %>'))
|
8
|
+
options.each { |key, value| Opal::Connect.options[key] = value }
|
9
|
+
|
10
|
+
<%= entry %>
|
11
|
+
|
12
|
+
<% files.each do |file| %>
|
13
|
+
require '<%= file %>'
|
14
|
+
<% end %>
|
15
|
+
|
16
|
+
Opal::Connect.setup
|
@@ -1,7 +1,11 @@
|
|
1
|
-
if RUBY_ENGINE
|
1
|
+
if RUBY_ENGINE == 'opal'
|
2
|
+
`require("expose?$!expose?jQuery!jquery/dist/jquery.min.js")`;
|
3
|
+
else
|
2
4
|
require 'oga'
|
3
5
|
end
|
4
6
|
|
7
|
+
require 'opal-jquery'
|
8
|
+
|
5
9
|
module Opal
|
6
10
|
module Connect
|
7
11
|
module ConnectPlugins
|
@@ -9,6 +13,11 @@ module Opal
|
|
9
13
|
# A thread safe cache class, offering only #[] and #[]= methods,
|
10
14
|
# each protected by a mutex.
|
11
15
|
module Dom
|
16
|
+
ConnectJavascript = -> do
|
17
|
+
templates = Base64.encode64 Connect.templates.hash.to_json
|
18
|
+
"Opal::Connect.templates = JSON.parse(Base64.decode64('#{templates}'));"
|
19
|
+
end
|
20
|
+
|
12
21
|
module ConnectClassMethods
|
13
22
|
attr_accessor :templates
|
14
23
|
|
@@ -167,6 +176,8 @@ module Opal
|
|
167
176
|
|
168
177
|
def attr(key, value = false)
|
169
178
|
if value
|
179
|
+
value = value.to_s
|
180
|
+
|
170
181
|
if node.respond_to? :set
|
171
182
|
node.set(key, value)
|
172
183
|
else
|
@@ -4,6 +4,8 @@ module Opal
|
|
4
4
|
module Events
|
5
5
|
$connect_events = ConnectCache.new if RUBY_ENGINE == 'opal'
|
6
6
|
|
7
|
+
ConnectJavascript = -> { "Opal::Connect.start_events unless $connect_events_started" }
|
8
|
+
|
7
9
|
module InstanceMethods
|
8
10
|
def connect_event_instance_variables(event, _name, _selector)
|
9
11
|
# gives you access to this, like jquery
|
@@ -2,6 +2,12 @@ module Opal
|
|
2
2
|
module Connect
|
3
3
|
module ConnectPlugins
|
4
4
|
module Server
|
5
|
+
ConnectJavascript = -> do
|
6
|
+
%{Opal::Connect.server_methods = JSON.parse(
|
7
|
+
Base64.decode64('#{Base64.encode64 Connect.server_methods.to_json}')
|
8
|
+
);}
|
9
|
+
end
|
10
|
+
|
5
11
|
module ConnectClassMethods
|
6
12
|
def server_methods
|
7
13
|
@server_methods ||= ConnectCache.new
|
@@ -2,43 +2,50 @@ module Opal
|
|
2
2
|
module Connect
|
3
3
|
class RakeTask
|
4
4
|
include Rake::DSL if defined? Rake::DSL
|
5
|
-
|
6
|
-
DEFAULT_OPTIONS = { port: 8080, host: '0.0.0.0' }
|
5
|
+
STUBS = %w'opal native promise console base64 json'
|
7
6
|
|
8
7
|
def initialize(name = 'webpack', opts = {})
|
9
|
-
options = DEFAULT_OPTIONS.merge opts
|
10
|
-
|
11
8
|
namespace name do
|
12
9
|
return unless defined? Opal.append_path
|
13
10
|
|
14
|
-
Opal::Connect.write_plugins_file
|
15
11
|
Opal::Connect.write_entry_file
|
16
12
|
|
17
13
|
Opal.append_path Dir.pwd
|
18
14
|
|
19
|
-
|
15
|
+
write_opal_file
|
20
16
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
17
|
+
envs = ENV.to_h.merge({
|
18
|
+
BUNDLE_BIN: true,
|
19
|
+
CONNECT_STUBS: STUBS.concat(Opal::Config.stubbed_files.to_a).join(','),
|
20
|
+
OPAL_LOAD_PATH: Opal.paths.join(":"),
|
21
|
+
OPAL_USE_BUNDLER: true
|
22
|
+
}).inject({}) { |env, (k, v)| env[k.to_s] = v.to_s; env }
|
27
23
|
|
28
24
|
desc "Start webpack"
|
29
25
|
task :run do
|
30
|
-
exec(
|
26
|
+
exec(envs, 'webpack --progress --watch')
|
31
27
|
end
|
32
28
|
|
33
29
|
desc "Build webpack"
|
34
30
|
task :build do
|
35
|
-
exec(
|
36
|
-
"OPAL_LOAD_PATH" => Opal.paths.join(":"),
|
37
|
-
"RACK_ENV" => 'production'
|
38
|
-
}, 'webpack --progress')
|
31
|
+
exec(envs, 'webpack --progress')
|
39
32
|
end
|
40
33
|
end
|
41
34
|
end
|
35
|
+
|
36
|
+
def write_opal_file
|
37
|
+
file_path = "#{Dir.pwd}/.connect"
|
38
|
+
version_path = "#{file_path}/opal_version"
|
39
|
+
version = File.exist?(version_path) ? File.read(version_path) : false
|
40
|
+
|
41
|
+
if !File.exist?("#{file_path}/opal.js") || !version || (version && version != Opal::VERSION)
|
42
|
+
builder = Opal::Builder.new
|
43
|
+
build_str = STUBS.map { |stub| "require '#{stub}'" }.join(";")
|
44
|
+
builder.build_str(build_str, '(inline)', { dynamic_require_severity: :ignore })
|
45
|
+
File.write version_path, Opal::VERSION
|
46
|
+
File.write "#{file_path}/opal.js", builder.to_s
|
47
|
+
end
|
48
|
+
end
|
42
49
|
end
|
43
50
|
end
|
44
51
|
end
|
data/lib/opal/connect/version.rb
CHANGED
data/lib/opal/connect.rb
CHANGED
@@ -1,42 +1,43 @@
|
|
1
|
-
require
|
1
|
+
require 'opal'
|
2
2
|
require 'base64'
|
3
|
+
require "opal/connect/version"
|
3
4
|
|
4
5
|
if RUBY_ENGINE == 'opal'
|
5
|
-
|
6
|
-
def puts(*args)
|
7
|
-
require 'console'
|
8
|
-
$console.log(*args)
|
9
|
-
end
|
10
|
-
end
|
6
|
+
require 'opal/connect/puts'
|
11
7
|
else
|
8
|
+
require 'erb'
|
12
9
|
Opal.append_path File.expand_path('../..', __FILE__).untaint
|
13
10
|
end
|
14
11
|
|
15
12
|
module Opal
|
16
13
|
module Connect
|
17
|
-
CLIENT_OPTIONS = %w'url plugins'
|
14
|
+
CLIENT_OPTIONS = %w'url plugins'
|
18
15
|
|
19
16
|
class << self
|
20
17
|
attr_accessor :pids
|
21
18
|
|
22
19
|
def options
|
23
20
|
@_options ||= Connect::ConnectCache.new(
|
24
|
-
|
21
|
+
livereload: false,
|
25
22
|
url: '/connect',
|
26
23
|
plugins: [],
|
27
24
|
javascript: [],
|
28
|
-
|
25
|
+
requires: [],
|
29
26
|
setup_blocks: []
|
30
27
|
)
|
31
28
|
end
|
32
29
|
|
30
|
+
def client_options
|
31
|
+
Connect.options.hash.select { |key, _| CLIENT_OPTIONS.include? key.to_s }
|
32
|
+
end
|
33
|
+
|
33
34
|
def setup(&block)
|
34
35
|
instance_exec(&block) if block_given?
|
35
36
|
|
36
37
|
# make sure we include the default plugins with connect
|
37
38
|
options[:plugins].each { |plug| Connect.plugin plug }
|
38
39
|
|
39
|
-
options[:setup_blocks].each { |b| Class.new { include Opal::Connect }.
|
40
|
+
options[:setup_blocks].each { |b| Class.new { include Opal::Connect }.instance_exec(&b) }
|
40
41
|
end
|
41
42
|
|
42
43
|
def included(klass)
|
@@ -49,33 +50,6 @@ module Opal
|
|
49
50
|
|
50
51
|
Connect.options[:plugins].each { |plug| klass.plugin plug, :included }
|
51
52
|
end
|
52
|
-
|
53
|
-
# We need to wripte a plugins.rb file which has all the plugins required
|
54
|
-
# by the server, so that the client can require them. Opal doesn't handle
|
55
|
-
# dynamically generated imports, which is the reason we make a single file.
|
56
|
-
def write_plugins_file
|
57
|
-
path = "#{Dir.pwd}/.connect/plugins.rb"
|
58
|
-
FileUtils.mkdir_p(File.dirname(path))
|
59
|
-
File.open(path, 'w+') do |file|
|
60
|
-
ConnectPlugins.plugins.each do |name, _|
|
61
|
-
plugins_path = Connect.options[:plugins_path]
|
62
|
-
|
63
|
-
if plugins_path && File.exist?("#{plugins_path}/#{name}.rb")
|
64
|
-
path = "require('#{plugins_path}/#{name}')"
|
65
|
-
path = "`#{path}`" if Connect.options[:hot_reload]
|
66
|
-
file.puts path
|
67
|
-
else
|
68
|
-
file.puts "require('opal/connect/plugins/#{name}')"
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
Connect.options[:plugin_requires].each do |require_path|
|
73
|
-
path = "require('#{require_path}')"
|
74
|
-
path = "`#{path}`" if Connect.options[:hot_reload]
|
75
|
-
file.puts path
|
76
|
-
end
|
77
|
-
end
|
78
|
-
end
|
79
53
|
end
|
80
54
|
|
81
55
|
class ConnectError < StandardError; end
|
@@ -136,8 +110,7 @@ module Opal
|
|
136
110
|
end
|
137
111
|
|
138
112
|
def self.load_plugin(name)
|
139
|
-
|
140
|
-
unless plugin = h[name]
|
113
|
+
unless plugin = @plugins[name]
|
141
114
|
unless RUBY_ENGINE == 'opal'
|
142
115
|
plugins_path = Connect.options[:plugins_path]
|
143
116
|
|
@@ -147,16 +120,17 @@ module Opal
|
|
147
120
|
require "opal/connect/plugins/#{name}"
|
148
121
|
end
|
149
122
|
|
150
|
-
raise ConnectError, "Plugin #{name} did not register itself correctly in
|
123
|
+
raise ConnectError, "Plugin #{name} did not register itself correctly in Opal::Connect::ConnectPlugins" unless plugin = @plugins[name]
|
151
124
|
end
|
152
125
|
end
|
126
|
+
|
153
127
|
plugin
|
154
128
|
end
|
155
129
|
|
156
|
-
# Register the given plugin with
|
130
|
+
# Register the given plugin with Opal::Connect, so that it can be loaded using #plugin
|
157
131
|
# with a symbol. Should be used by plugin files. Example:
|
158
132
|
#
|
159
|
-
#
|
133
|
+
# Opal::Connect::ConnectPlugins.register_plugin(:plugin_name, PluginModule)
|
160
134
|
def self.register_plugin(name, mod)
|
161
135
|
@plugins[name] = mod
|
162
136
|
end
|
@@ -165,24 +139,12 @@ module Opal
|
|
165
139
|
module InstanceMethods
|
166
140
|
if RUBY_ENGINE != 'opal'
|
167
141
|
def render(method, *options, &block)
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
html = "#{public_send(method, *options, &block)}"
|
172
|
-
|
173
|
-
if hl.is_a?(Hash) && file_name = hl[:javascript_file_name]
|
174
|
-
hl = {} unless hl.is_a? Hash
|
175
|
-
hl = { host: 'http://localhost', port: 8080 }.merge hl
|
142
|
+
code = Connect.javascript(self, method, *options)
|
143
|
+
js = Opal::Builder.new.build_str(code, '(inline)').to_s
|
176
144
|
|
177
|
-
|
178
|
-
end
|
179
|
-
|
180
|
-
html
|
181
|
-
else
|
182
|
-
js = Connect.build Connect.javascript(self, method, *options)
|
145
|
+
Connect.write_entry_file(self, method, *options) if Connect.options[:livereload]
|
183
146
|
|
184
|
-
|
185
|
-
end
|
147
|
+
"#{public_send(method, *options, &block)}<script>#{js}</script>"
|
186
148
|
end
|
187
149
|
end
|
188
150
|
end
|
@@ -196,9 +158,9 @@ module Opal
|
|
196
158
|
if block_given?
|
197
159
|
@_setup_block = block
|
198
160
|
Connect.options[:setup_blocks] << @_setup_block
|
199
|
-
else
|
200
|
-
@_setup_block
|
201
161
|
end
|
162
|
+
|
163
|
+
@_setup_block
|
202
164
|
end
|
203
165
|
|
204
166
|
# Load a new plugin into the current class. A plugin can be a module
|
@@ -244,101 +206,57 @@ module Opal
|
|
244
206
|
@files ||= []
|
245
207
|
end
|
246
208
|
|
247
|
-
def
|
248
|
-
builder = Opal::Builder.new
|
249
|
-
|
250
|
-
builder.build_str(code, '(inline)').to_s
|
251
|
-
end
|
252
|
-
|
253
|
-
def javascript(klass, method, *options)
|
209
|
+
def javascript(klass, method, *opts)
|
254
210
|
return unless klass
|
255
211
|
|
256
|
-
js
|
257
|
-
|
258
|
-
|
259
|
-
if javascript.length
|
260
|
-
javascript.uniq.each do |block|
|
261
|
-
js << klass.instance_exec(&block)
|
262
|
-
end
|
263
|
-
end
|
212
|
+
js = []
|
213
|
+
options[:javascript].uniq.each { |block| js << klass.instance_exec(&block) }
|
264
214
|
|
265
215
|
%{
|
266
|
-
#{js.join(';')}
|
267
|
-
|
268
216
|
Document.ready? do
|
217
|
+
#{js.join(';')}
|
269
218
|
klass = #{klass.class.name}.new
|
270
|
-
|
271
|
-
if klass.respond_to?(:#{method})
|
272
|
-
klass.__send__(:#{method}, *JSON.parse(Base64.decode64('#{Base64.encode64 options.to_json}')))
|
273
|
-
end
|
274
|
-
|
275
|
-
Opal::Connect.start_events unless $connect_events_started
|
219
|
+
klass.__send__(:#{method}, *JSON.parse(Base64.decode64('#{Base64.encode64 opts.to_json}'))) if klass.respond_to?(:#{method})
|
276
220
|
end
|
277
|
-
}
|
221
|
+
}
|
278
222
|
end
|
279
223
|
|
280
224
|
def write_entry_file(klass = false, method = false, *options)
|
281
|
-
path
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
client_options = Connect.options.hash.select do |key, _|
|
288
|
-
CLIENT_OPTIONS.include? key.to_s
|
289
|
-
end
|
290
|
-
|
291
|
-
client_options = Base64.encode64 client_options.to_json
|
225
|
+
path = "#{Dir.pwd}/.connect/entry.rb"
|
226
|
+
files = Connect.files.dup.uniq.map { |file| "require '#{file}'" }.join(';')
|
227
|
+
entry = Connect.options[:entry]
|
228
|
+
client_options = Base64.encode64 Connect.client_options.to_json
|
229
|
+
plugins = plugin_paths.dup.map { |plugin_path| plugin_path = "require '#{plugin_path}'" }.join(';')
|
292
230
|
|
293
231
|
code = %{
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
232
|
+
require 'opal/connect'
|
233
|
+
#{plugins}
|
234
|
+
options = JSON.parse(Base64.decode64('#{client_options}'))
|
235
|
+
options.each { |key, value| Opal::Connect.options[key] = value }
|
236
|
+
#{entry}
|
237
|
+
#{files}
|
238
|
+
Opal::Connect.setup
|
298
239
|
}
|
299
|
-
code = "#{code} Opal::Connect.options[:plugins].each { |plug| Opal::Connect.plugin plug };"
|
300
|
-
|
301
|
-
if Connect.respond_to? :templates
|
302
|
-
templates = Base64.encode64 Connect.templates.hash.to_json
|
303
|
-
code = "#{code} Opal::Connect.templates = JSON.parse(Base64.decode64('#{templates}'));"
|
304
|
-
end
|
305
|
-
|
306
|
-
code = %{#{code} Opal::Connect.server_methods = JSON.parse(
|
307
|
-
Base64.decode64('#{Base64.encode64 Connect.server_methods.to_json}')
|
308
|
-
);}
|
309
|
-
|
310
|
-
code = "#{code} #{Connect.options[:entry]}" if Connect.options[:entry]
|
311
|
-
|
312
240
|
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
code << %{
|
317
|
-
`if (module.hot) {`
|
318
|
-
`module.hot.accept()`
|
319
|
-
|
320
|
-
if Opal::Connect.respond_to? :teardown_events
|
321
|
-
Opal::Connect.teardown_events
|
322
|
-
connect_events = $connect_events[Opal::Connect]
|
323
|
-
$connect_events = Opal::Connect::ConnectCache.new
|
324
|
-
|
325
|
-
if connect_events
|
326
|
-
$connect_events[Opal::Connect] = connect_events
|
327
|
-
end
|
241
|
+
FileUtils.mkdir_p(File.dirname(path))
|
242
|
+
File.write(path, code)
|
243
|
+
end
|
328
244
|
|
329
|
-
|
330
|
-
|
245
|
+
def plugin_paths
|
246
|
+
plugins_path = Connect.options[:plugins_path]
|
247
|
+
plugins = []
|
331
248
|
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
249
|
+
ConnectPlugins.plugins.each do |name, _|
|
250
|
+
if plugins_path && File.exist?("#{plugins_path}/#{name}.rb")
|
251
|
+
plugins << "#{plugins_path}/#{name}"
|
252
|
+
else
|
253
|
+
plugins << "opal/connect/plugins/#{name}"
|
254
|
+
end
|
336
255
|
end
|
337
256
|
|
338
|
-
|
257
|
+
Connect.options[:requires].each { |plugin_path| plugins << plugin_path }
|
339
258
|
|
340
|
-
|
341
|
-
File.write(path, build(code))
|
259
|
+
plugins
|
342
260
|
end
|
343
261
|
end
|
344
262
|
end
|
data/opal-connect.gemspec
CHANGED
@@ -18,9 +18,11 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_dependency "opal", ">= 0.
|
21
|
+
spec.add_dependency "opal", ">= 0.10.0.beta3"
|
22
22
|
spec.add_dependency "opal-jquery", ">= 0.4.1"
|
23
23
|
spec.add_dependency "oga", ">= 2.2"
|
24
|
+
|
24
25
|
spec.add_development_dependency "bundler", "~> 1.7"
|
25
26
|
spec.add_development_dependency "rake", "~> 10.0"
|
27
|
+
spec.add_development_dependency "opal-rspec", ">= 0.5.0"
|
26
28
|
end
|
data/package.json
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
{
|
2
|
+
"name": "opal-connect",
|
3
|
+
"version": "0.0.1",
|
4
|
+
"description": "",
|
5
|
+
"main": "index.js",
|
6
|
+
"scripts": {
|
7
|
+
"test": "echo \"Error: no test specified\" && exit 1"
|
8
|
+
},
|
9
|
+
"author": "",
|
10
|
+
"license": "ISC",
|
11
|
+
"devDependencies": {
|
12
|
+
"expose-loader": "^0.7.1",
|
13
|
+
"jquery": "^2.2.3",
|
14
|
+
"livereload": "^0.4.1",
|
15
|
+
"opal-webpack": "1.0.6",
|
16
|
+
"webpack": "2.1.0-beta.7",
|
17
|
+
"webpack-dev-server": "2.0.0-beta",
|
18
|
+
"webpack-livereload-plugin": "^0.8.1"
|
19
|
+
}
|
20
|
+
}
|
data/webpack.config.js
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
const webpack = require('webpack');
|
2
|
+
const path = require("path");
|
3
|
+
const LiveReloadPlugin = require('webpack-livereload-plugin');
|
4
|
+
const stubs = process.env.CONNECT_STUBS.split(',');
|
5
|
+
|
6
|
+
console.log(process.env.OPAL_STUBS)
|
7
|
+
|
8
|
+
module.exports = {
|
9
|
+
entry: {
|
10
|
+
opal: './.connect/opal.js',
|
11
|
+
connect: './.connect/entry.rb',
|
12
|
+
},
|
13
|
+
output: {
|
14
|
+
path: path.resolve(__dirname, ".connect", "output"),
|
15
|
+
filename: '[name].js'
|
16
|
+
},
|
17
|
+
module: {
|
18
|
+
test: /\.rb$/,
|
19
|
+
loaders: [
|
20
|
+
{
|
21
|
+
exclude: /node_modules|\.connect\/(opal|cache)/,
|
22
|
+
loader: "opal-webpack",
|
23
|
+
query: { dynamic_require_severity: 'ignore' }
|
24
|
+
}
|
25
|
+
]
|
26
|
+
},
|
27
|
+
watchOptions: { poll: true },
|
28
|
+
plugins: [
|
29
|
+
new LiveReloadPlugin({ ignore: '.connect' })
|
30
|
+
],
|
31
|
+
opal: {
|
32
|
+
stubs: stubs,
|
33
|
+
cacheDirectory: '.connect/cache'
|
34
|
+
},
|
35
|
+
devtool: 'inline-source-map'
|
36
|
+
}
|
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.11
|
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-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: opal
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 0.10.0.beta3
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.
|
26
|
+
version: 0.10.0.beta3
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: opal-jquery
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,6 +80,20 @@ dependencies:
|
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '10.0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: opal-rspec
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 0.5.0
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 0.5.0
|
83
97
|
description: Connect Opal to Ruby.
|
84
98
|
email:
|
85
99
|
- cjlazell@gmail.com
|
@@ -90,10 +104,17 @@ files:
|
|
90
104
|
- ".gitignore"
|
91
105
|
- Gemfile
|
92
106
|
- LICENSE.txt
|
107
|
+
- Makefile
|
93
108
|
- README.md
|
94
109
|
- Rakefile
|
110
|
+
- app/app.rb
|
111
|
+
- app/components/example.rb
|
112
|
+
- app/config/boot.rb
|
113
|
+
- app/config/connect.rb
|
114
|
+
- config.ru
|
95
115
|
- lib/opal-connect.rb
|
96
116
|
- lib/opal/connect.rb
|
117
|
+
- lib/opal/connect/entry.rb.erb
|
97
118
|
- lib/opal/connect/plugins/abilities.rb
|
98
119
|
- lib/opal/connect/plugins/current_user.rb
|
99
120
|
- lib/opal/connect/plugins/dom.rb
|
@@ -103,9 +124,12 @@ files:
|
|
103
124
|
- lib/opal/connect/plugins/pjax.rb
|
104
125
|
- lib/opal/connect/plugins/scope.rb
|
105
126
|
- lib/opal/connect/plugins/server.rb
|
127
|
+
- lib/opal/connect/puts.rb
|
106
128
|
- lib/opal/connect/rake_task.rb
|
107
129
|
- lib/opal/connect/version.rb
|
108
130
|
- opal-connect.gemspec
|
131
|
+
- package.json
|
132
|
+
- webpack.config.js
|
109
133
|
homepage: ''
|
110
134
|
licenses:
|
111
135
|
- MIT
|