react-rails 1.0.0 → 1.1.0
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/README.md +82 -41
- data/lib/assets/javascripts/JSXTransformer.js +15919 -0
- data/lib/assets/react-source/development-with-addons/react.js +21642 -0
- data/lib/assets/react-source/development/react.js +19602 -0
- data/lib/assets/react-source/production-with-addons/react.js +18 -0
- data/lib/assets/react-source/production/react.js +16 -0
- data/lib/generators/templates/component.js.jsx +1 -1
- data/lib/react-rails.rb +1 -2
- data/lib/react/jsx.rb +12 -26
- data/lib/react/jsx/babel_transformer.rb +21 -0
- data/lib/react/jsx/jsx_transformer.rb +33 -0
- data/lib/react/jsx/template.rb +1 -1
- data/lib/react/rails.rb +2 -1
- data/lib/react/rails/asset_variant.rb +19 -0
- data/lib/react/rails/railtie.rb +35 -50
- data/lib/react/rails/version.rb +1 -1
- data/lib/react/rails/view_helper.rb +9 -8
- data/lib/react/server_rendering.rb +33 -0
- data/lib/react/server_rendering/exec_js_renderer.rb +40 -0
- data/lib/react/server_rendering/sprockets_renderer.rb +63 -0
- metadata +109 -44
- data/lib/react/console.rb +0 -30
- data/lib/react/renderer.rb +0 -83
metadata
CHANGED
|
@@ -1,197 +1,253 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: react-rails
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Paul O’Shannessy
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2015-
|
|
11
|
+
date: 2015-07-09 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: appraisal
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
|
-
- -
|
|
17
|
+
- - '>='
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
19
|
version: '0'
|
|
20
20
|
type: :development
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
|
-
- -
|
|
24
|
+
- - '>='
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
26
|
version: '0'
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: bundler
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
|
-
- -
|
|
31
|
+
- - '>='
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
33
|
version: 1.2.2
|
|
34
34
|
type: :development
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
|
-
- -
|
|
38
|
+
- - '>='
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
40
|
version: 1.2.2
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: codeclimate-test-reporter
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - '>='
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '0'
|
|
48
|
+
type: :development
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - '>='
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '0'
|
|
41
55
|
- !ruby/object:Gem::Dependency
|
|
42
56
|
name: coffee-rails
|
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
|
44
58
|
requirements:
|
|
45
|
-
- -
|
|
59
|
+
- - '>='
|
|
46
60
|
- !ruby/object:Gem::Version
|
|
47
61
|
version: '0'
|
|
48
62
|
type: :development
|
|
49
63
|
prerelease: false
|
|
50
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
65
|
requirements:
|
|
52
|
-
- -
|
|
66
|
+
- - '>='
|
|
53
67
|
- !ruby/object:Gem::Version
|
|
54
68
|
version: '0'
|
|
55
69
|
- !ruby/object:Gem::Dependency
|
|
56
70
|
name: es5-shim-rails
|
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
|
58
72
|
requirements:
|
|
59
|
-
- -
|
|
73
|
+
- - '>='
|
|
60
74
|
- !ruby/object:Gem::Version
|
|
61
75
|
version: 2.0.5
|
|
62
76
|
type: :development
|
|
63
77
|
prerelease: false
|
|
64
78
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
79
|
requirements:
|
|
66
|
-
- -
|
|
80
|
+
- - '>='
|
|
67
81
|
- !ruby/object:Gem::Version
|
|
68
82
|
version: 2.0.5
|
|
83
|
+
- !ruby/object:Gem::Dependency
|
|
84
|
+
name: guard
|
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
|
86
|
+
requirements:
|
|
87
|
+
- - '>='
|
|
88
|
+
- !ruby/object:Gem::Version
|
|
89
|
+
version: '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'
|
|
97
|
+
- !ruby/object:Gem::Dependency
|
|
98
|
+
name: guard-minitest
|
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
|
100
|
+
requirements:
|
|
101
|
+
- - '>='
|
|
102
|
+
- !ruby/object:Gem::Version
|
|
103
|
+
version: '0'
|
|
104
|
+
type: :development
|
|
105
|
+
prerelease: false
|
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
107
|
+
requirements:
|
|
108
|
+
- - '>='
|
|
109
|
+
- !ruby/object:Gem::Version
|
|
110
|
+
version: '0'
|
|
69
111
|
- !ruby/object:Gem::Dependency
|
|
70
112
|
name: jbuilder
|
|
71
113
|
requirement: !ruby/object:Gem::Requirement
|
|
72
114
|
requirements:
|
|
73
|
-
- -
|
|
115
|
+
- - '>='
|
|
74
116
|
- !ruby/object:Gem::Version
|
|
75
117
|
version: '0'
|
|
76
118
|
type: :development
|
|
77
119
|
prerelease: false
|
|
78
120
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
121
|
requirements:
|
|
80
|
-
- -
|
|
122
|
+
- - '>='
|
|
81
123
|
- !ruby/object:Gem::Version
|
|
82
124
|
version: '0'
|
|
83
125
|
- !ruby/object:Gem::Dependency
|
|
84
126
|
name: poltergeist
|
|
85
127
|
requirement: !ruby/object:Gem::Requirement
|
|
86
128
|
requirements:
|
|
87
|
-
- -
|
|
129
|
+
- - '>='
|
|
88
130
|
- !ruby/object:Gem::Version
|
|
89
131
|
version: 0.3.3
|
|
90
132
|
type: :development
|
|
91
133
|
prerelease: false
|
|
92
134
|
version_requirements: !ruby/object:Gem::Requirement
|
|
93
135
|
requirements:
|
|
94
|
-
- -
|
|
136
|
+
- - '>='
|
|
95
137
|
- !ruby/object:Gem::Version
|
|
96
138
|
version: 0.3.3
|
|
97
139
|
- !ruby/object:Gem::Dependency
|
|
98
140
|
name: test-unit
|
|
99
141
|
requirement: !ruby/object:Gem::Requirement
|
|
100
142
|
requirements:
|
|
101
|
-
- -
|
|
143
|
+
- - ~>
|
|
102
144
|
- !ruby/object:Gem::Version
|
|
103
145
|
version: '2.5'
|
|
104
146
|
type: :development
|
|
105
147
|
prerelease: false
|
|
106
148
|
version_requirements: !ruby/object:Gem::Requirement
|
|
107
149
|
requirements:
|
|
108
|
-
- -
|
|
150
|
+
- - ~>
|
|
109
151
|
- !ruby/object:Gem::Version
|
|
110
152
|
version: '2.5'
|
|
111
153
|
- !ruby/object:Gem::Dependency
|
|
112
154
|
name: turbolinks
|
|
113
155
|
requirement: !ruby/object:Gem::Requirement
|
|
114
156
|
requirements:
|
|
115
|
-
- -
|
|
157
|
+
- - '>='
|
|
116
158
|
- !ruby/object:Gem::Version
|
|
117
159
|
version: 2.0.0
|
|
118
160
|
type: :development
|
|
119
161
|
prerelease: false
|
|
120
162
|
version_requirements: !ruby/object:Gem::Requirement
|
|
121
163
|
requirements:
|
|
122
|
-
- -
|
|
164
|
+
- - '>='
|
|
123
165
|
- !ruby/object:Gem::Version
|
|
124
166
|
version: 2.0.0
|
|
125
167
|
- !ruby/object:Gem::Dependency
|
|
126
168
|
name: coffee-script-source
|
|
127
169
|
requirement: !ruby/object:Gem::Requirement
|
|
128
170
|
requirements:
|
|
129
|
-
- -
|
|
171
|
+
- - ~>
|
|
130
172
|
- !ruby/object:Gem::Version
|
|
131
173
|
version: '1.8'
|
|
132
174
|
type: :runtime
|
|
133
175
|
prerelease: false
|
|
134
176
|
version_requirements: !ruby/object:Gem::Requirement
|
|
135
177
|
requirements:
|
|
136
|
-
- -
|
|
178
|
+
- - ~>
|
|
137
179
|
- !ruby/object:Gem::Version
|
|
138
180
|
version: '1.8'
|
|
139
181
|
- !ruby/object:Gem::Dependency
|
|
140
182
|
name: connection_pool
|
|
141
183
|
requirement: !ruby/object:Gem::Requirement
|
|
142
184
|
requirements:
|
|
143
|
-
- -
|
|
185
|
+
- - '>='
|
|
144
186
|
- !ruby/object:Gem::Version
|
|
145
187
|
version: '0'
|
|
146
188
|
type: :runtime
|
|
147
189
|
prerelease: false
|
|
148
190
|
version_requirements: !ruby/object:Gem::Requirement
|
|
149
191
|
requirements:
|
|
150
|
-
- -
|
|
192
|
+
- - '>='
|
|
151
193
|
- !ruby/object:Gem::Version
|
|
152
194
|
version: '0'
|
|
153
195
|
- !ruby/object:Gem::Dependency
|
|
154
196
|
name: execjs
|
|
155
197
|
requirement: !ruby/object:Gem::Requirement
|
|
156
198
|
requirements:
|
|
157
|
-
- -
|
|
199
|
+
- - '>='
|
|
158
200
|
- !ruby/object:Gem::Version
|
|
159
201
|
version: '0'
|
|
160
202
|
type: :runtime
|
|
161
203
|
prerelease: false
|
|
162
204
|
version_requirements: !ruby/object:Gem::Requirement
|
|
163
205
|
requirements:
|
|
164
|
-
- -
|
|
206
|
+
- - '>='
|
|
165
207
|
- !ruby/object:Gem::Version
|
|
166
208
|
version: '0'
|
|
167
209
|
- !ruby/object:Gem::Dependency
|
|
168
210
|
name: rails
|
|
169
211
|
requirement: !ruby/object:Gem::Requirement
|
|
170
212
|
requirements:
|
|
171
|
-
- -
|
|
213
|
+
- - '>='
|
|
172
214
|
- !ruby/object:Gem::Version
|
|
173
|
-
version: '3.
|
|
215
|
+
version: '3.2'
|
|
174
216
|
type: :runtime
|
|
175
217
|
prerelease: false
|
|
176
218
|
version_requirements: !ruby/object:Gem::Requirement
|
|
177
219
|
requirements:
|
|
178
|
-
- -
|
|
220
|
+
- - '>='
|
|
179
221
|
- !ruby/object:Gem::Version
|
|
180
|
-
version: '3.
|
|
222
|
+
version: '3.2'
|
|
181
223
|
- !ruby/object:Gem::Dependency
|
|
182
|
-
name:
|
|
224
|
+
name: tilt
|
|
183
225
|
requirement: !ruby/object:Gem::Requirement
|
|
184
226
|
requirements:
|
|
185
|
-
- -
|
|
227
|
+
- - '>='
|
|
186
228
|
- !ruby/object:Gem::Version
|
|
187
|
-
version: '0
|
|
229
|
+
version: '0'
|
|
188
230
|
type: :runtime
|
|
189
231
|
prerelease: false
|
|
190
232
|
version_requirements: !ruby/object:Gem::Requirement
|
|
191
233
|
requirements:
|
|
192
|
-
- -
|
|
234
|
+
- - '>='
|
|
193
235
|
- !ruby/object:Gem::Version
|
|
194
|
-
version: '0
|
|
236
|
+
version: '0'
|
|
237
|
+
- !ruby/object:Gem::Dependency
|
|
238
|
+
name: babel-transpiler
|
|
239
|
+
requirement: !ruby/object:Gem::Requirement
|
|
240
|
+
requirements:
|
|
241
|
+
- - '>='
|
|
242
|
+
- !ruby/object:Gem::Version
|
|
243
|
+
version: 0.7.0
|
|
244
|
+
type: :runtime
|
|
245
|
+
prerelease: false
|
|
246
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
247
|
+
requirements:
|
|
248
|
+
- - '>='
|
|
249
|
+
- !ruby/object:Gem::Version
|
|
250
|
+
version: 0.7.0
|
|
195
251
|
description: Compile your JSX on demand or precompile for production.
|
|
196
252
|
email:
|
|
197
253
|
- paul@oshannessy.com
|
|
@@ -199,25 +255,34 @@ executables: []
|
|
|
199
255
|
extensions: []
|
|
200
256
|
extra_rdoc_files: []
|
|
201
257
|
files:
|
|
202
|
-
-
|
|
203
|
-
- README.md
|
|
258
|
+
- lib/assets/javascripts/JSXTransformer.js
|
|
204
259
|
- lib/assets/javascripts/react_ujs.js.erb
|
|
260
|
+
- lib/assets/react-source/development/react.js
|
|
261
|
+
- lib/assets/react-source/development-with-addons/react.js
|
|
262
|
+
- lib/assets/react-source/production/react.js
|
|
263
|
+
- lib/assets/react-source/production-with-addons/react.js
|
|
205
264
|
- lib/generators/react/component_generator.rb
|
|
206
265
|
- lib/generators/react/install_generator.rb
|
|
207
266
|
- lib/generators/templates/component.js.jsx
|
|
208
|
-
- lib/react
|
|
209
|
-
- lib/react/
|
|
210
|
-
- lib/react/jsx.rb
|
|
267
|
+
- lib/react/jsx/babel_transformer.rb
|
|
268
|
+
- lib/react/jsx/jsx_transformer.rb
|
|
211
269
|
- lib/react/jsx/template.rb
|
|
212
|
-
- lib/react/
|
|
270
|
+
- lib/react/jsx.rb
|
|
271
|
+
- lib/react/rails/asset_variant.rb
|
|
213
272
|
- lib/react/rails/engine.rb
|
|
214
273
|
- lib/react/rails/railtie.rb
|
|
215
274
|
- lib/react/rails/version.rb
|
|
216
275
|
- lib/react/rails/view_helper.rb
|
|
217
|
-
- lib/react/
|
|
276
|
+
- lib/react/rails.rb
|
|
277
|
+
- lib/react/server_rendering/exec_js_renderer.rb
|
|
278
|
+
- lib/react/server_rendering/sprockets_renderer.rb
|
|
279
|
+
- lib/react/server_rendering.rb
|
|
280
|
+
- lib/react-rails.rb
|
|
281
|
+
- README.md
|
|
282
|
+
- LICENSE
|
|
218
283
|
homepage: https://github.com/reactjs/react-rails
|
|
219
284
|
licenses:
|
|
220
|
-
-
|
|
285
|
+
- Apache-2.0
|
|
221
286
|
metadata: {}
|
|
222
287
|
post_install_message:
|
|
223
288
|
rdoc_options: []
|
|
@@ -225,17 +290,17 @@ require_paths:
|
|
|
225
290
|
- lib
|
|
226
291
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
227
292
|
requirements:
|
|
228
|
-
- -
|
|
293
|
+
- - '>='
|
|
229
294
|
- !ruby/object:Gem::Version
|
|
230
295
|
version: '0'
|
|
231
296
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
232
297
|
requirements:
|
|
233
|
-
- -
|
|
298
|
+
- - '>='
|
|
234
299
|
- !ruby/object:Gem::Version
|
|
235
300
|
version: '0'
|
|
236
301
|
requirements: []
|
|
237
302
|
rubyforge_project:
|
|
238
|
-
rubygems_version: 2.
|
|
303
|
+
rubygems_version: 2.0.14
|
|
239
304
|
signing_key:
|
|
240
305
|
specification_version: 4
|
|
241
306
|
summary: React/JSX adapter for the Ruby on Rails asset pipeline.
|
data/lib/react/console.rb
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
module React
|
|
2
|
-
class Console
|
|
3
|
-
def self.polyfill_js
|
|
4
|
-
# Overwrite global `console` object with something that can capture messages
|
|
5
|
-
# to return to client later for debugging
|
|
6
|
-
<<-JS
|
|
7
|
-
var console = { history: [] };
|
|
8
|
-
['error', 'log', 'info', 'warn'].forEach(function (fn) {
|
|
9
|
-
console[fn] = function () {
|
|
10
|
-
console.history.push({level: fn, arguments: Array.prototype.slice.call(arguments)});
|
|
11
|
-
};
|
|
12
|
-
});
|
|
13
|
-
JS
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def self.replay_as_script_js
|
|
17
|
-
<<-JS
|
|
18
|
-
(function (history) {
|
|
19
|
-
if (history && history.length > 0) {
|
|
20
|
-
result += '\\n<scr'+'ipt>';
|
|
21
|
-
history.forEach(function (msg) {
|
|
22
|
-
result += '\\nconsole.' + msg.level + '.apply(console, ' + JSON.stringify(msg.arguments) + ');';
|
|
23
|
-
});
|
|
24
|
-
result += '\\n</scr'+'ipt>';
|
|
25
|
-
}
|
|
26
|
-
})(console.history);
|
|
27
|
-
JS
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
data/lib/react/renderer.rb
DELETED
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
require 'connection_pool'
|
|
2
|
-
|
|
3
|
-
module React
|
|
4
|
-
class Renderer
|
|
5
|
-
|
|
6
|
-
class PrerenderError < RuntimeError
|
|
7
|
-
def initialize(component_name, props, js_message)
|
|
8
|
-
message = ["Encountered error \"#{js_message}\" when prerendering #{component_name} with #{props}",
|
|
9
|
-
js_message.backtrace.join("\n")].join("\n")
|
|
10
|
-
super(message)
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
cattr_accessor :pool
|
|
15
|
-
|
|
16
|
-
def self.setup!(react_js, components_js, replay_console, args={})
|
|
17
|
-
args.assert_valid_keys(:size, :timeout)
|
|
18
|
-
@@react_js = react_js
|
|
19
|
-
@@components_js = components_js
|
|
20
|
-
@@replay_console = replay_console
|
|
21
|
-
@@pool.shutdown{} if @@pool
|
|
22
|
-
reset_combined_js!
|
|
23
|
-
default_pool_options = {:size =>10, :timeout => 20}
|
|
24
|
-
@@pool = ConnectionPool.new(default_pool_options.merge(args)) { self.new }
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
def self.render(component, args={})
|
|
28
|
-
@@pool.with do |renderer|
|
|
29
|
-
renderer.render(component, args)
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
def self.react_props(args={})
|
|
34
|
-
if args.is_a? String
|
|
35
|
-
args
|
|
36
|
-
else
|
|
37
|
-
args.to_json
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
def context
|
|
42
|
-
@context ||= ExecJS.compile(self.class.combined_js)
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
def render(component, args={})
|
|
46
|
-
react_props = React::Renderer.react_props(args)
|
|
47
|
-
jscode = <<-JS
|
|
48
|
-
(function () {
|
|
49
|
-
var result = React.renderToString(React.createElement(#{component}, #{react_props}));
|
|
50
|
-
#{@@replay_console ? React::Console.replay_as_script_js : ''}
|
|
51
|
-
return result;
|
|
52
|
-
})()
|
|
53
|
-
JS
|
|
54
|
-
context.eval(jscode).html_safe
|
|
55
|
-
rescue ExecJS::ProgramError => e
|
|
56
|
-
raise PrerenderError.new(component, react_props, e)
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
private
|
|
61
|
-
|
|
62
|
-
def self.setup_combined_js
|
|
63
|
-
<<-JS
|
|
64
|
-
var global = global || this;
|
|
65
|
-
var self = self || this;
|
|
66
|
-
var window = window || this;
|
|
67
|
-
#{React::Console.polyfill_js}
|
|
68
|
-
#{@@react_js.call};
|
|
69
|
-
React = global.React;
|
|
70
|
-
#{@@components_js.call};
|
|
71
|
-
JS
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
def self.reset_combined_js!
|
|
75
|
-
@@combined_js = setup_combined_js
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
def self.combined_js
|
|
79
|
-
@@combined_js
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
end
|
|
83
|
-
end
|