reactive-ruby 0.7.25 → 0.7.26

Sign up to get free protection for your applications and to get access to all the features.
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