reactive-ruby 0.7.25 → 0.7.26

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: de348153ef3143a695778ae38f71ab3282402a13
4
- data.tar.gz: 3113b14b3394988d09b200057c893e1e1effaaf0
3
+ metadata.gz: aea6849b4c9284445c1e8d1313fc53310f8758c7
4
+ data.tar.gz: f7082d055c5dcb39bf7a43187b2b9feb3105518f
5
5
  SHA512:
6
- metadata.gz: a498ef58657f9adba73020225353168ca8ce45e5bfae520c74f0ad0c7daa5d959a38e69e47193925abf8052cc3894c202963cd966cee4c62cf9339cc77d8f4ee
7
- data.tar.gz: fd08e5a0b645aec16359f31d760c2a4ef914a7761ca31bee14c784d836dbe67c4f0da9290931f1e8c560b7d62d75c7278c2bfc6aa33eb6e44723536c1e4b540f
6
+ metadata.gz: 498495741c08b7e4f8928491c283c48d4e4eb0c9941ac95441013f1261bb6e1299346e26ee9d3df806b214782c8e34065d0c4805899f13b7f7aef4258f3c31c4
7
+ data.tar.gz: bce4a6ba733275e0bf39b61203a2c4878021038f88dd35b4e417e732dc7bf0f6b7f5c60a683360c2dee96d0dab9d9db9867f0da52ebd2771a50715a536ccd12e
data/.travis.yml CHANGED
@@ -3,3 +3,6 @@ rvm:
3
3
  - 1.9.3
4
4
  - 2.0.0
5
5
  - 2.1
6
+ script:
7
+ - bundle exec rake test_app
8
+ - bundle exec rake
data/Gemfile CHANGED
@@ -1,5 +1,7 @@
1
1
  source 'https://rubygems.org'
2
2
  group :development, :test do
3
- gem 'react-rails', github: 'catprintlabs/react-rails', branch: 'isomorphic-methods-support'
3
+ gem 'therubyracer', platforms: :ruby
4
+ gem 'rails'
5
+ gem 'react-rails'
4
6
  end
5
7
  gemspec
data/Gemfile.lock CHANGED
@@ -1,19 +1,7 @@
1
- GIT
2
- remote: git://github.com/catprintlabs/react-rails.git
3
- revision: 98a8d903a51065c8e3ffedeb094d72a2e9883176
4
- branch: isomorphic-methods-support
5
- specs:
6
- react-rails (1.0.0)
7
- coffee-script-source (~> 1.8)
8
- connection_pool
9
- execjs
10
- rails (>= 3.2)
11
- tilt
12
-
13
1
  PATH
14
2
  remote: .
15
3
  specs:
16
- reactive-ruby (0.7.23)
4
+ reactive-ruby (0.7.25)
17
5
  opal
18
6
  opal-activesupport (>= 0.2.0)
19
7
  opal-browser
@@ -57,6 +45,10 @@ GEM
57
45
  thread_safe (~> 0.3, >= 0.3.4)
58
46
  tzinfo (~> 1.1)
59
47
  arel (6.0.3)
48
+ babel-source (5.8.26)
49
+ babel-transpiler (0.7.0)
50
+ babel-source (>= 4.0, < 6)
51
+ execjs (~> 2.0)
60
52
  builder (3.2.2)
61
53
  coffee-script-source (1.9.1.1)
62
54
  connection_pool (2.2.0)
@@ -72,6 +64,7 @@ GEM
72
64
  railties (>= 4.2.0)
73
65
  thor (>= 0.14, < 2.0)
74
66
  json (1.8.3)
67
+ libv8 (3.16.14.11)
75
68
  loofah (2.0.3)
76
69
  nokogiri (>= 1.5.9)
77
70
  mail (2.6.3)
@@ -133,6 +126,14 @@ GEM
133
126
  rake (>= 0.8.7)
134
127
  thor (>= 0.18.1, < 2.0)
135
128
  rake (10.4.2)
129
+ react-rails (1.3.1)
130
+ babel-transpiler (>= 0.7.0)
131
+ coffee-script-source (~> 1.8)
132
+ connection_pool
133
+ execjs
134
+ rails (>= 3.2)
135
+ tilt
136
+ ref (2.0.0)
136
137
  rspec-core (3.3.2)
137
138
  rspec-support (~> 3.3.0)
138
139
  rspec-expectations (3.3.1)
@@ -162,9 +163,13 @@ GEM
162
163
  activesupport (>= 3.0)
163
164
  sprockets (>= 2.8, < 4.0)
164
165
  sqlite3 (1.3.10)
166
+ therubyracer (0.12.2)
167
+ libv8 (~> 3.16.14.0)
168
+ ref
165
169
  thor (0.19.1)
166
170
  thread_safe (0.3.5)
167
171
  tilt (2.0.1)
172
+ timecop (0.7.1)
168
173
  tzinfo (1.2.2)
169
174
  thread_safe (~> 0.1)
170
175
 
@@ -174,12 +179,12 @@ PLATFORMS
174
179
  DEPENDENCIES
175
180
  opal-rails
176
181
  opal-rspec
182
+ rails
177
183
  rake
178
- react-rails!
184
+ react-rails
179
185
  reactive-ruby!
180
186
  rspec-rails
181
187
  sinatra
182
188
  sqlite3
183
-
184
- BUNDLED WITH
185
- 1.10.6
189
+ therubyracer
190
+ timecop
data/README.md CHANGED
@@ -159,7 +159,7 @@ To run the above examples project yourself:
159
159
  ## Testing
160
160
 
161
161
  1. Run `bundle exec rake test_app` to generate a dummy test app.
162
- 2. `bundle exec rspec`
162
+ 2. `bundle exec rake`
163
163
 
164
164
  ## Contributions
165
165
 
data/Rakefile CHANGED
@@ -2,11 +2,16 @@ require 'bundler'
2
2
  Bundler.require
3
3
  Bundler::GemHelper.install_tasks
4
4
 
5
- begin
6
- require 'rspec/core/rake_task'
7
- RSpec::Core::RakeTask.new(:spec)
8
- task default: :spec
9
- rescue LoadError
5
+
6
+ require 'rspec/core/rake_task'
7
+ require 'opal/rspec/rake_task'
8
+
9
+ RSpec::Core::RakeTask.new('ruby:rspec')
10
+ Opal::RSpec::RakeTask.new('opal:rspec')
11
+
12
+ task :test do
13
+ Rake::Task['ruby:rspec'].invoke
14
+ # Rake::Task['opal:rspec'].invoke
10
15
  end
11
16
 
12
17
  require 'generators/reactive_ruby/test_app/test_app_generator'
@@ -16,3 +21,5 @@ task :test_app do
16
21
  puts "Setting up test app database..."
17
22
  system("bundle exec rake db:drop db:create db:migrate > #{File::NULL}")
18
23
  end
24
+
25
+ task default: [ :test ]
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ../..
3
3
  specs:
4
- reactive-ruby (0.7.23)
4
+ reactive-ruby (0.7.25)
5
5
  opal
6
6
  opal-activesupport (>= 0.2.0)
7
7
  opal-browser
@@ -1,8 +1,8 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  gem 'therubyracer', platforms: :ruby
4
- gem 'react-rails', git: "https://github.com/catprintlabs/react-rails.git", :branch => 'isomorphic-methods-support' # you need this branch of react-rails
5
- gem 'opal-rails'
4
+ gem 'react-rails' #, git: "https://github.com/catprintlabs/react-rails.git", :branch => 'isomorphic-methods-support' # you need this branch of react-rails
5
+ gem 'opal-rails'
6
6
  # integrates opal with sprockets etc
7
7
  gem 'reactive-ruby', path: "../.."
8
8
 
@@ -48,4 +48,3 @@ group :development, :test do
48
48
  # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
49
49
  gem 'spring'
50
50
  end
51
-
@@ -1,21 +1,9 @@
1
- GIT
2
- remote: https://github.com/catprintlabs/react-rails.git
3
- revision: 98a8d903a51065c8e3ffedeb094d72a2e9883176
4
- branch: isomorphic-methods-support
5
- specs:
6
- react-rails (1.0.0)
7
- coffee-script-source (~> 1.8)
8
- connection_pool
9
- execjs
10
- rails (>= 3.2)
11
- tilt
12
-
13
1
  PATH
14
2
  remote: ../..
15
3
  specs:
16
- reactive-ruby (0.7.13)
4
+ reactive-ruby (0.7.25)
17
5
  opal
18
- opal-activesupport
6
+ opal-activesupport (>= 0.2.0)
19
7
  opal-browser
20
8
 
21
9
  GEM
@@ -57,6 +45,10 @@ GEM
57
45
  thread_safe (~> 0.3, >= 0.3.4)
58
46
  tzinfo (~> 1.1)
59
47
  arel (6.0.3)
48
+ babel-source (5.8.26)
49
+ babel-transpiler (0.7.0)
50
+ babel-source (>= 4.0, < 6)
51
+ execjs (~> 2.0)
60
52
  binding_of_caller (0.7.2)
61
53
  debug_inspector (>= 0.0.1)
62
54
  builder (3.2.2)
@@ -89,18 +81,18 @@ GEM
89
81
  nokogiri (>= 1.5.9)
90
82
  mail (2.6.3)
91
83
  mime-types (>= 1.16, < 3)
92
- mime-types (2.6.1)
84
+ mime-types (2.6.2)
93
85
  mini_portile (0.6.2)
94
- minitest (5.8.0)
86
+ minitest (5.8.1)
95
87
  multi_json (1.11.2)
96
88
  nokogiri (1.6.6.2)
97
89
  mini_portile (~> 0.6.0)
98
- opal (0.8.0)
90
+ opal (0.8.1)
99
91
  hike (~> 1.2)
100
92
  sourcemap (~> 0.1.0)
101
93
  sprockets (~> 3.1)
102
94
  tilt (>= 1.4)
103
- opal-activesupport (0.1.0)
95
+ opal-activesupport (0.2.0)
104
96
  opal (>= 0.5.0, < 1.0.0)
105
97
  opal-browser (0.2.0)
106
98
  opal
@@ -116,7 +108,7 @@ GEM
116
108
  rails (>= 3.2, < 5.0)
117
109
  opal-rspec (0.4.3)
118
110
  opal (>= 0.7.0, < 0.9)
119
- paggio (0.2.4)
111
+ paggio (0.2.5)
120
112
  rack (1.6.4)
121
113
  rack-test (0.6.3)
122
114
  rack (>= 1.0)
@@ -146,6 +138,13 @@ GEM
146
138
  thor (>= 0.18.1, < 2.0)
147
139
  rake (10.4.2)
148
140
  rdoc (4.2.0)
141
+ react-rails (1.3.2)
142
+ babel-transpiler (>= 0.7.0)
143
+ coffee-script-source (~> 1.8)
144
+ connection_pool
145
+ execjs
146
+ rails (>= 3.2)
147
+ tilt
149
148
  ref (2.0.0)
150
149
  sass (3.4.18)
151
150
  sass-rails (5.0.3)
@@ -159,9 +158,9 @@ GEM
159
158
  rdoc (~> 4.0)
160
159
  sourcemap (0.1.1)
161
160
  spring (1.3.6)
162
- sprockets (3.3.3)
163
- rack (~> 1.0)
164
- sprockets-rails (2.3.2)
161
+ sprockets (3.4.0)
162
+ rack (> 1, < 3)
163
+ sprockets-rails (2.3.3)
165
164
  actionpack (>= 3.0)
166
165
  activesupport (>= 3.0)
167
166
  sprockets (>= 2.8, < 4.0)
@@ -195,7 +194,7 @@ DEPENDENCIES
195
194
  jquery-rails
196
195
  opal-rails
197
196
  rails (= 4.2.3)
198
- react-rails!
197
+ react-rails
199
198
  reactive-ruby!
200
199
  sass-rails (~> 5.0)
201
200
  sdoc (~> 0.4.0)
@@ -1,9 +1,9 @@
1
1
  PATH
2
2
  remote: ../..
3
3
  specs:
4
- reactive-ruby (0.7.13)
4
+ reactive-ruby (0.7.25)
5
5
  opal
6
- opal-activesupport
6
+ opal-activesupport (>= 0.2.0)
7
7
  opal-browser
8
8
 
9
9
  GEM
@@ -15,14 +15,14 @@ GEM
15
15
  sourcemap (~> 0.1.0)
16
16
  sprockets (~> 3.1)
17
17
  tilt (>= 1.4)
18
- opal-activesupport (0.1.0)
18
+ opal-activesupport (0.2.0)
19
19
  opal (>= 0.5.0, < 1.0.0)
20
20
  opal-browser (0.2.0)
21
21
  opal
22
22
  paggio
23
23
  opal-jquery (0.4.0)
24
24
  opal (>= 0.7.0, < 0.9.0)
25
- paggio (0.2.4)
25
+ paggio (0.2.5)
26
26
  rack (1.6.4)
27
27
  rack-protection (1.5.3)
28
28
  rack
@@ -0,0 +1,11 @@
1
+ module Components
2
+ class HelloWorld
3
+ include React::Component
4
+
5
+ def render
6
+ div do
7
+ "Hello, World!".span
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,14 @@
1
+ module Components
2
+ class Todo
3
+ include React::Component
4
+ export_component
5
+
6
+ params do
7
+ requires :todo
8
+ end
9
+
10
+ def render
11
+ li { "#{params[:todo]}" }
12
+ end
13
+ end
14
+ end
@@ -1,7 +1,7 @@
1
1
  require 'rails/generators/rails/app/app_generator'
2
2
 
3
3
  module ReactiveRuby
4
- class TestAppGenerator < Rails::Generators::Base
4
+ class TestAppGenerator < ::Rails::Generators::Base
5
5
  def self.source_paths
6
6
  paths = self.superclass.source_paths
7
7
  paths << File.expand_path('../templates', __FILE__)
@@ -19,7 +19,7 @@ module ReactiveRuby
19
19
  opts[:skip_bundle] = true
20
20
 
21
21
  puts "Generating Test Rails Application..."
22
- invoke Rails::Generators::AppGenerator,
22
+ invoke ::Rails::Generators::AppGenerator,
23
23
  [ File.expand_path(test_app_path, destination_root) ], opts
24
24
  end
25
25
 
@@ -30,6 +30,10 @@ module ReactiveRuby
30
30
  "#{test_app_path}/app/assets/javascripts/application.rb", force: true
31
31
  template 'assets/javascripts/components.rb',
32
32
  "#{test_app_path}/app/views/components.rb", force: true
33
+ template 'views/components/hello_world.rb',
34
+ "#{test_app_path}/app/views/components/hello_world.rb", force: true
35
+ template 'views/components/todo.rb',
36
+ "#{test_app_path}/app/views/components/todo.rb", force: true
33
37
  end
34
38
 
35
39
  def clean_superfluous_files
data/lib/reactive-ruby.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  if RUBY_ENGINE == 'opal'
2
2
  require "sources/react.js"
3
3
  require "reactive-ruby/top_level"
4
- require "reactive-ruby/component"
4
+ require "reactive-ruby/component"
5
5
  require "reactive-ruby/element"
6
6
  require "reactive-ruby/event"
7
7
  require "reactive-ruby/version"
@@ -12,14 +12,12 @@ if RUBY_ENGINE == 'opal'
12
12
  require "reactive-ruby/state"
13
13
  require "reactive-ruby/isomorphic_helpers"
14
14
  require "rails-helpers/top_level_rails_component"
15
-
16
15
  else
17
16
  require "opal"
18
- require "opal-rails"
19
17
  require "opal-browser"
20
- require "reactive-ruby/version"
21
18
  require "opal-activesupport"
22
- require "rails-helpers/react_component"
19
+ require "reactive-ruby/version"
20
+ require "reactive-ruby/rails" if defined?(Rails)
23
21
  require "reactive-ruby/isomorphic_helpers"
24
22
  require "reactive-ruby/serializers"
25
23
 
@@ -0,0 +1,42 @@
1
+ module ReactiveRuby
2
+ class ComponentLoader
3
+ attr_reader :v8_context
4
+ private :v8_context
5
+
6
+ def initialize(v8_context)
7
+ @v8_context = v8_context
8
+ end
9
+
10
+ def load(file = components)
11
+ return true if loaded?
12
+ !!v8_context.eval(opal(file))
13
+ end
14
+
15
+ def load!(file = components)
16
+ return true if loaded?
17
+ self.load(file)
18
+ ensure
19
+ raise "No react.rb components found in #{components}.rb" unless loaded?
20
+ end
21
+
22
+ def loaded?
23
+ !!v8_context.eval('Opal.React')
24
+ end
25
+
26
+ private
27
+
28
+ def components
29
+ # Make this configurable at some point
30
+ 'components'
31
+ end
32
+
33
+ def opal(file)
34
+ Opal::Processor.load_asset_code(assets, file)
35
+ rescue # What exception is being caught here?
36
+ end
37
+
38
+ def assets
39
+ ::Rails.application.assets
40
+ end
41
+ end
42
+ end
@@ -1,21 +1,17 @@
1
1
  module React
2
-
3
2
  module IsomorphicHelpers
4
-
5
3
  def self.included(base)
6
4
  base.extend(ClassMethods)
7
5
  end
8
-
6
+
9
7
  if RUBY_ENGINE != 'opal'
10
-
11
8
  def self.load_context(ctx, controller, name = nil)
12
9
  puts "************************** React Server Context Initialized #{name} *********************************************"
13
- @context = Context.new("#{controller.object_id}-#{Time.now.to_i}", ctx, controller, name)
10
+ @context = Context.new("#{controller.object_id}-#{Time.now.to_i}", ctx, controller, name)
14
11
  end
15
-
16
12
  else
17
-
18
- def self.load_context(unique_id = nil, name = nil) # can be called on the client to force re-initialization for testing purposes
13
+ def self.load_context(unique_id = nil, name = nil)
14
+ # can be called on the client to force re-initialization for testing purposes
19
15
  if !unique_id or !@context or @context.unique_id != unique_id
20
16
  if on_opal_server?
21
17
  message = "************************ React Prerendering Context Initialized #{name} ***********************"
@@ -23,13 +19,12 @@ module React
23
19
  message = "************************ React Browser Context Initialized ****************************"
24
20
  end
25
21
  log(message)
26
- @context = Context.new(unique_id)
22
+ @context = Context.new(unique_id)
27
23
  end
28
24
  @context
29
25
  end
30
-
31
26
  end
32
-
27
+
33
28
  def self.log(message, message_type = :info)
34
29
  message = [message] unless message.is_a? Array
35
30
  if message_type == :info
@@ -46,41 +41,37 @@ module React
46
41
  `console.error.apply(console, message)`
47
42
  end
48
43
  end
49
-
44
+
50
45
  if RUBY_ENGINE != 'opal'
51
-
52
46
  def self.on_opal_server?
53
47
  false
54
48
  end
55
-
49
+
56
50
  def self.on_opal_client?
57
51
  false
58
52
  end
59
-
60
53
  else
61
-
62
54
  def self.on_opal_server?
63
55
  `typeof window.document === 'undefined'`
64
56
  end
65
-
57
+
66
58
  def self.on_opal_client?
67
59
  !on_opal_server?
68
60
  end
69
-
70
61
  end
71
-
62
+
72
63
  def log(*args)
73
64
  IsomorphicHelpers.log(*args)
74
65
  end
75
-
66
+
76
67
  def on_opal_server?
77
- IsomorphicHelpers.on_opal_server?
68
+ self.class.on_opal_server?
78
69
  end
79
-
70
+
80
71
  def on_opal_client?
81
- IsomorphicHelpers.on_opal_client?
72
+ self.class.on_opal_client?
82
73
  end
83
-
74
+
84
75
  def self.prerender_footers
85
76
  footer = Context.prerender_footer_blocks.collect { |block| block.call }.join("\n")
86
77
  if RUBY_ENGINE != 'opal'
@@ -89,88 +80,78 @@ module React
89
80
  end
90
81
  footer
91
82
  end
92
-
83
+
93
84
  class Context
94
-
95
85
  attr_reader :controller
96
86
  attr_reader :unique_id
97
-
87
+
98
88
  def self.before_first_mount_blocks
99
89
  @before_first_mount_blocks ||= []
100
90
  end
101
-
91
+
102
92
  def self.prerender_footer_blocks
103
93
  @prerender_footer_blocks ||= []
104
94
  end
105
-
95
+
106
96
  def initialize(unique_id, ctx = nil, controller = nil, name = nil)
107
97
  @unique_id = unique_id
108
- if RUBY_ENGINE != 'opal'
98
+ if RUBY_ENGINE != 'opal'
109
99
  @controller = controller
110
- @ctx = ctx
100
+ @ctx = ctx
111
101
  ctx["ServerSideIsomorphicMethods"] = self
112
102
  send_to_opal(:load_context, @unique_id, name)
113
103
  end
114
- self.class.before_first_mount_blocks.each { |block| block.call(self) }
104
+ self.class.before_first_mount_blocks.each { |block| block.call(self) }
115
105
  end
116
-
106
+
117
107
  def eval(js)
118
108
  @ctx.eval(js) if @ctx
119
109
  end
120
-
110
+
121
111
  def send_to_opal(method, *args)
112
+ return unless @ctx
122
113
  args = [1] if args.length == 0
123
- if @ctx
124
- unless @ctx.eval('Opal.React')
125
- @ctx.eval(Opal::Processor.load_asset_code(::Rails.application.assets, 'components')) rescue nil
126
- raise "No opal-react components found in the components.rb file" unless @ctx.eval('Opal.React')
127
- end
128
- @ctx.eval("Opal.React.IsomorphicHelpers.$#{method}(#{args.collect { |arg| "'#{arg}'"}.join(', ')})")
129
- end
114
+ ::ReactiveRuby::ComponentLoader.new(@ctx).load!
115
+ @ctx.eval("Opal.React.IsomorphicHelpers.$#{method}(#{args.collect { |arg| "'#{arg}'"}.join(', ')})")
130
116
  end
131
-
117
+
132
118
  def self.register_before_first_mount_block(&block)
133
119
  before_first_mount_blocks << block
134
120
  end
135
-
121
+
136
122
  def self.register_prerender_footer_block(&block)
137
123
  prerender_footer_blocks << block
138
124
  end
139
-
140
125
  end
141
-
126
+
142
127
  class IsomorphicProcCall
143
-
144
128
  def result
145
129
  @result.first if @result
146
130
  end
147
-
131
+
148
132
  def initialize(name, block, *args)
149
133
  @name = name
150
134
  block.call(self, *args)
151
135
  @result ||= send_to_server(*args) if IsomorphicHelpers.on_opal_server?
152
136
  end
153
-
137
+
154
138
  def when_on_client(&block)
155
139
  @result = [block.call] if IsomorphicHelpers.on_opal_client?
156
140
  end
157
-
158
- def send_to_server(*args)
141
+
142
+ def send_to_server(*args)
159
143
  if IsomorphicHelpers.on_opal_server?
160
144
  args_as_json = args.to_json
161
- @result = [JSON.parse(`window.ServerSideIsomorphicMethods[#{@name}](#{args_as_json})`)]
145
+ @result = [JSON.parse(`window.ServerSideIsomorphicMethods[#{@name}](#{args_as_json})`)]
162
146
  end
163
147
  end
164
-
148
+
165
149
  def when_on_server(&block)
166
150
  @result = [block.call.to_json] unless IsomorphicHelpers.on_opal_client? or IsomorphicHelpers.on_opal_server?
167
151
  end
168
-
169
152
  end
170
-
171
-
153
+
172
154
  module ClassMethods
173
-
174
155
  def on_opal_server?
175
156
  IsomorphicHelpers.on_opal_server?
176
157
  end
@@ -178,46 +159,38 @@ module React
178
159
  def on_opal_client?
179
160
  IsomorphicHelpers.on_opal_client?
180
161
  end
181
-
162
+
182
163
  def log(*args)
183
164
  IsomorphicHelpers.log(*args)
184
165
  end
185
-
166
+
186
167
  def controller
187
168
  IsomorphicHelpers.context.controller
188
169
  end
189
-
170
+
190
171
  def before_first_mount(&block)
191
172
  React::IsomorphicHelpers::Context.register_before_first_mount_block &block
192
173
  end
193
-
174
+
194
175
  def prerender_footer(&block)
195
176
  React::IsomorphicHelpers::Context.register_prerender_footer_block &block
196
177
  end
197
-
178
+
198
179
  if RUBY_ENGINE != 'opal'
199
-
200
180
  def isomorphic_method(name, &block)
201
181
  React::IsomorphicHelpers::Context.send(:define_method, name) do |args_as_json|
202
182
  React::IsomorphicHelpers::IsomorphicProcCall.new(name, block, *JSON.parse(args_as_json)).result
203
183
  end
204
184
  end
205
-
206
185
  else
207
-
208
186
  require 'json'
209
-
187
+
210
188
  def isomorphic_method(name, &block)
211
189
  self.class.send(:define_method, name) do | *args |
212
190
  React::IsomorphicHelpers::IsomorphicProcCall.new(name, block, *args).result
213
191
  end
214
192
  end
215
-
216
193
  end
217
-
218
-
219
194
  end
220
-
221
195
  end
222
-
223
- end
196
+ end