react_on_rails 10.0.0 → 11.0.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.
Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/.eslintrc +4 -0
  3. data/.rubocop.yml +2 -2
  4. data/.travis.yml +3 -0
  5. data/CHANGELOG.md +81 -88
  6. data/CONTRIBUTING.md +0 -7
  7. data/Dockerfile_tests +12 -0
  8. data/Gemfile +8 -13
  9. data/NEWS.md +2 -0
  10. data/PROJECTS.md +10 -2
  11. data/README.md +137 -121
  12. data/app/helpers/react_on_rails_helper.rb +1 -533
  13. data/docker-compose.yml +11 -0
  14. data/docs/additional-reading/caching-and-performance.md +4 -0
  15. data/docs/additional-reading/capistrano-deployment.md +18 -0
  16. data/docs/additional-reading/elastic-beanstalk.md +53 -33
  17. data/docs/additional-reading/server-rendering-tips.md +4 -4
  18. data/docs/additional-reading/troubleshooting-when-using-webpacker.md +90 -0
  19. data/docs/api/ruby-api.md +7 -2
  20. data/docs/basics/configuration.md +23 -9
  21. data/docs/basics/i18n.md +4 -0
  22. data/docs/basics/upgrading-react-on-rails.md +181 -0
  23. data/docs/tutorial.md +7 -11
  24. data/lib/generators/react_on_rails/base_generator.rb +6 -3
  25. data/lib/generators/react_on_rails/dev_tests_generator.rb +1 -1
  26. data/lib/generators/react_on_rails/install_generator.rb +1 -1
  27. data/lib/generators/react_on_rails/react_no_redux_generator.rb +1 -1
  28. data/lib/generators/react_on_rails/react_with_redux_generator.rb +2 -2
  29. data/lib/generators/react_on_rails/templates/base/base/app/javascript/bundles/HelloWorld/components/HelloWorld.jsx +1 -1
  30. data/lib/generators/react_on_rails/templates/base/base/config/initializers/react_on_rails.rb +3 -2
  31. data/lib/generators/react_on_rails/templates/dev_tests/spec/simplecov_helper.rb +2 -2
  32. data/lib/react_on_rails/assets_precompile.rb +8 -4
  33. data/lib/react_on_rails/configuration.rb +34 -20
  34. data/lib/react_on_rails/error.rb +4 -0
  35. data/lib/react_on_rails/locales_to_js.rb +2 -2
  36. data/lib/react_on_rails/prerender_error.rb +2 -2
  37. data/lib/react_on_rails/react_on_rails_helper.rb +547 -0
  38. data/lib/react_on_rails/server_rendering_pool/{exec.rb → ruby_embedded_java_script.rb} +37 -40
  39. data/lib/react_on_rails/server_rendering_pool.rb +21 -10
  40. data/lib/react_on_rails/test_helper/webpack_assets_status_checker.rb +2 -2
  41. data/lib/react_on_rails/test_helper.rb +1 -1
  42. data/lib/react_on_rails/utils.rb +14 -52
  43. data/lib/react_on_rails/version.rb +1 -1
  44. data/lib/react_on_rails/version_checker.rb +33 -12
  45. data/lib/react_on_rails/webpacker_utils.rb +42 -0
  46. data/lib/react_on_rails.rb +3 -2
  47. data/package.json +2 -5
  48. data/rakelib/dummy_apps.rake +2 -1
  49. data/rakelib/example_type.rb +1 -1
  50. data/rakelib/examples.rake +3 -2
  51. data/rakelib/lint.rake +3 -2
  52. data/rakelib/node_package.rake +2 -1
  53. data/rakelib/release.rake +4 -5
  54. data/rakelib/run_rspec.rake +3 -4
  55. data/rakelib/task_helpers.rb +1 -1
  56. data/react_on_rails.gemspec +23 -13
  57. data/yarn.lock +3 -39
  58. metadata +75 -49
  59. data/lib/react_on_rails/server_rendering_pool/node.rb +0 -83
  60. data/lib/react_on_rails/test_helper/node_process_launcher.rb +0 -14
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: react_on_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 10.0.0
4
+ version: 11.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Gordon
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-10-17 00:00:00.000000000 Z
11
+ date: 2018-04-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rainbow
14
+ name: addressable
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '2.2'
19
+ version: '0'
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: '2.2'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: connection_pool
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -67,63 +67,63 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: '3.2'
69
69
  - !ruby/object:Gem::Dependency
70
- name: addressable
70
+ name: rainbow
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '0'
75
+ version: '2.2'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ">="
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '0'
82
+ version: '2.2'
83
83
  - !ruby/object:Gem::Dependency
84
- name: rails
84
+ name: awesome_print
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "~>"
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: 5.1.2
89
+ version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - "~>"
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
- version: 5.1.2
96
+ version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: bundler
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '1.10'
103
+ version: '1'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '1.10'
110
+ version: '1'
111
111
  - !ruby/object:Gem::Dependency
112
- name: rake
112
+ name: coveralls
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - "~>"
115
+ - - ">="
116
116
  - !ruby/object:Gem::Version
117
- version: '10.0'
117
+ version: '0'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - "~>"
122
+ - - ">="
123
123
  - !ruby/object:Gem::Version
124
- version: '10.0'
124
+ version: '0'
125
125
  - !ruby/object:Gem::Dependency
126
- name: listen
126
+ name: gem-release
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - ">="
@@ -137,7 +137,7 @@ dependencies:
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
139
  - !ruby/object:Gem::Dependency
140
- name: rspec
140
+ name: generator_spec
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - ">="
@@ -151,7 +151,7 @@ dependencies:
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
153
  - !ruby/object:Gem::Dependency
154
- name: coveralls
154
+ name: listen
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
157
  - - ">="
@@ -165,7 +165,7 @@ dependencies:
165
165
  - !ruby/object:Gem::Version
166
166
  version: '0'
167
167
  - !ruby/object:Gem::Dependency
168
- name: generator_spec
168
+ name: pry
169
169
  requirement: !ruby/object:Gem::Requirement
170
170
  requirements:
171
171
  - - ">="
@@ -179,7 +179,7 @@ dependencies:
179
179
  - !ruby/object:Gem::Version
180
180
  version: '0'
181
181
  - !ruby/object:Gem::Dependency
182
- name: pry
182
+ name: pry-byebug
183
183
  requirement: !ruby/object:Gem::Requirement
184
184
  requirements:
185
185
  - - ">="
@@ -193,7 +193,7 @@ dependencies:
193
193
  - !ruby/object:Gem::Version
194
194
  version: '0'
195
195
  - !ruby/object:Gem::Dependency
196
- name: pry-byebug
196
+ name: pry-doc
197
197
  requirement: !ruby/object:Gem::Requirement
198
198
  requirements:
199
199
  - - ">="
@@ -207,7 +207,7 @@ dependencies:
207
207
  - !ruby/object:Gem::Version
208
208
  version: '0'
209
209
  - !ruby/object:Gem::Dependency
210
- name: pry-stack_explorer
210
+ name: pry-rescue
211
211
  requirement: !ruby/object:Gem::Requirement
212
212
  requirements:
213
213
  - - ">="
@@ -221,7 +221,7 @@ dependencies:
221
221
  - !ruby/object:Gem::Version
222
222
  version: '0'
223
223
  - !ruby/object:Gem::Dependency
224
- name: pry-doc
224
+ name: pry-stack_explorer
225
225
  requirement: !ruby/object:Gem::Requirement
226
226
  requirements:
227
227
  - - ">="
@@ -263,35 +263,35 @@ dependencies:
263
263
  - !ruby/object:Gem::Version
264
264
  version: '0'
265
265
  - !ruby/object:Gem::Dependency
266
- name: pry-rescue
266
+ name: rails
267
267
  requirement: !ruby/object:Gem::Requirement
268
268
  requirements:
269
- - - ">="
269
+ - - "~>"
270
270
  - !ruby/object:Gem::Version
271
- version: '0'
271
+ version: '5.2'
272
272
  type: :development
273
273
  prerelease: false
274
274
  version_requirements: !ruby/object:Gem::Requirement
275
275
  requirements:
276
- - - ">="
276
+ - - "~>"
277
277
  - !ruby/object:Gem::Version
278
- version: '0'
278
+ version: '5.2'
279
279
  - !ruby/object:Gem::Dependency
280
- name: awesome_print
280
+ name: rake
281
281
  requirement: !ruby/object:Gem::Requirement
282
282
  requirements:
283
- - - ">="
283
+ - - "~>"
284
284
  - !ruby/object:Gem::Version
285
- version: '0'
285
+ version: '10.0'
286
286
  type: :development
287
287
  prerelease: false
288
288
  version_requirements: !ruby/object:Gem::Requirement
289
289
  requirements:
290
- - - ">="
290
+ - - "~>"
291
291
  - !ruby/object:Gem::Version
292
- version: '0'
292
+ version: '10.0'
293
293
  - !ruby/object:Gem::Dependency
294
- name: gem-release
294
+ name: rspec
295
295
  requirement: !ruby/object:Gem::Requirement
296
296
  requirements:
297
297
  - - ">="
@@ -304,6 +304,20 @@ dependencies:
304
304
  - - ">="
305
305
  - !ruby/object:Gem::Version
306
306
  version: '0'
307
+ - !ruby/object:Gem::Dependency
308
+ name: rubocop
309
+ requirement: !ruby/object:Gem::Requirement
310
+ requirements:
311
+ - - '='
312
+ - !ruby/object:Gem::Version
313
+ version: 0.55.0
314
+ type: :development
315
+ prerelease: false
316
+ version_requirements: !ruby/object:Gem::Requirement
317
+ requirements:
318
+ - - '='
319
+ - !ruby/object:Gem::Version
320
+ version: 0.55.0
307
321
  description: See README.md
308
322
  email:
309
323
  - justin@shakacode.com
@@ -324,6 +338,7 @@ files:
324
338
  - ".travis.yml"
325
339
  - CHANGELOG.md
326
340
  - CONTRIBUTING.md
341
+ - Dockerfile_tests
327
342
  - Gemfile
328
343
  - Gemfile.rails32
329
344
  - KUDOS.md
@@ -334,10 +349,13 @@ files:
334
349
  - SUMMARY.md
335
350
  - app/helpers/react_on_rails_helper.rb
336
351
  - book.json
352
+ - docker-compose.yml
337
353
  - docs/LICENSE.md
338
354
  - docs/additional-reading/angular-js-integration-migration.md
339
355
  - docs/additional-reading/asset-pipeline.md
340
356
  - docs/additional-reading/babel.md
357
+ - docs/additional-reading/caching-and-performance.md
358
+ - docs/additional-reading/capistrano-deployment.md
341
359
  - docs/additional-reading/code-splitting.md
342
360
  - docs/additional-reading/elastic-beanstalk.md
343
361
  - docs/additional-reading/foreman-issues.md
@@ -357,6 +375,7 @@ files:
357
375
  - docs/additional-reading/rspec-configuration.md
358
376
  - docs/additional-reading/server-rendering-tips.md
359
377
  - docs/additional-reading/tips.md
378
+ - docs/additional-reading/troubleshooting-when-using-webpacker.md
360
379
  - docs/additional-reading/turbolinks.md
361
380
  - docs/additional-reading/updating-dependencies.md
362
381
  - docs/additional-reading/webpack-dev-server.md
@@ -370,6 +389,7 @@ files:
370
389
  - docs/basics/i18n.md
371
390
  - docs/basics/installation-overview.md
372
391
  - docs/basics/migrating-from-react-rails.md
392
+ - docs/basics/upgrading-react-on-rails.md
373
393
  - docs/coding-style/style.md
374
394
  - docs/contributor-info/generator-testing.md
375
395
  - docs/contributor-info/linters.md
@@ -413,23 +433,24 @@ files:
413
433
  - lib/react_on_rails/configuration.rb
414
434
  - lib/react_on_rails/controller.rb
415
435
  - lib/react_on_rails/engine.rb
436
+ - lib/react_on_rails/error.rb
416
437
  - lib/react_on_rails/git_utils.rb
417
438
  - lib/react_on_rails/json_output.rb
418
439
  - lib/react_on_rails/locales_to_js.rb
419
440
  - lib/react_on_rails/prerender_error.rb
420
441
  - lib/react_on_rails/react_component/options.rb
442
+ - lib/react_on_rails/react_on_rails_helper.rb
421
443
  - lib/react_on_rails/server_rendering_pool.rb
422
- - lib/react_on_rails/server_rendering_pool/exec.rb
423
- - lib/react_on_rails/server_rendering_pool/node.rb
444
+ - lib/react_on_rails/server_rendering_pool/ruby_embedded_java_script.rb
424
445
  - lib/react_on_rails/test_helper.rb
425
446
  - lib/react_on_rails/test_helper/ensure_assets_compiled.rb
426
- - lib/react_on_rails/test_helper/node_process_launcher.rb
427
447
  - lib/react_on_rails/test_helper/webpack_assets_compiler.rb
428
448
  - lib/react_on_rails/test_helper/webpack_assets_status_checker.rb
429
449
  - lib/react_on_rails/utils.rb
430
450
  - lib/react_on_rails/version.rb
431
451
  - lib/react_on_rails/version_checker.rb
432
452
  - lib/react_on_rails/version_syntax_converter.rb
453
+ - lib/react_on_rails/webpacker_utils.rb
433
454
  - lib/tasks/assets.rake
434
455
  - lib/tasks/locale.rake
435
456
  - package.json
@@ -455,7 +476,12 @@ homepage: https://github.com/shakacode/react_on_rails
455
476
  licenses:
456
477
  - MIT
457
478
  metadata: {}
458
- post_install_message:
479
+ post_install_message: |2
480
+
481
+ --------------------------------------------------------------------------------
482
+ Email contact@shakacode.com for access to our slack room and information about our "pro support plan"
483
+ which supports better performance, via caching helpers and our node rendering server.
484
+ --------------------------------------------------------------------------------
459
485
  rdoc_options: []
460
486
  require_paths:
461
487
  - lib
@@ -463,7 +489,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
463
489
  requirements:
464
490
  - - ">="
465
491
  - !ruby/object:Gem::Version
466
- version: 2.0.0
492
+ version: 2.1.0
467
493
  required_rubygems_version: !ruby/object:Gem::Requirement
468
494
  requirements:
469
495
  - - ">="
@@ -471,7 +497,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
471
497
  version: '0'
472
498
  requirements: []
473
499
  rubyforge_project:
474
- rubygems_version: 2.6.12
500
+ rubygems_version: 2.6.14
475
501
  signing_key:
476
502
  specification_version: 4
477
503
  summary: Rails with react server rendering with webpack.
@@ -1,83 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ReactOnRails
4
- module ServerRenderingPool
5
- class Node
6
- # This implementation of the rendering pool uses NodeJS to execute javasript code
7
- def self.reset_pool
8
- options = {
9
- size: ReactOnRails.configuration.server_renderer_pool_size,
10
- timeout: ReactOnRails.configuration.server_renderer_timeout
11
- }
12
- @js_context_pool = ConnectionPool.new(options) { create_js_context }
13
- end
14
-
15
- def self.reset_pool_if_server_bundle_was_modified
16
- # No need for this method, the server bundle is automatically reset by node when changes
17
- # Empty implementation to conform to ServerRenderingPool interface
18
- end
19
-
20
- # js_code: JavaScript expression that returns a string.
21
- # Returns a Hash:
22
- # html: string of HTML for direct insertion on the page by evaluating js_code
23
- # consoleReplayScript: script for replaying console
24
- # hasErrors: true if server rendering errors
25
- # Note, js_code does not have to be based on React.
26
- # js_code MUST RETURN json stringify Object
27
- # Calling code will probably call 'html_safe' on return value before rendering to the view.
28
- def self.server_render_js_with_console_logging(js_code)
29
- if trace_react_on_rails?
30
- @file_index ||= 1
31
- trace_messsage(js_code, "tmp/server-generated-#{@file_index % 10}.js")
32
- @file_index += 1
33
- end
34
- json_string = eval_js(js_code)
35
- JSON.parse(json_string)
36
- end
37
-
38
- class << self
39
- private
40
-
41
- def trace_messsage(js_code, file_name = "tmp/server-generated.js", force = false)
42
- return unless trace_react_on_rails? || force
43
- # Set to anything to print generated code.
44
- puts "Z" * 80
45
- puts "react_renderer.rb: 92"
46
- puts "wrote file #{file_name}"
47
- File.write(file_name, js_code)
48
- puts "Z" * 80
49
- end
50
-
51
- def trace_react_on_rails?
52
- ENV["TRACE_REACT_ON_RAILS"].present?
53
- end
54
-
55
- def eval_js(js_code)
56
- eof_symbol = "\r\n\0"
57
- max_int = (2**30 - 1)
58
- @js_context_pool.with do |js_context|
59
- js_context.send(js_code + eof_symbol, 0)
60
- result = ""
61
- while result[-eof_symbol.length..-1] != eof_symbol
62
- result += js_context.recv(max_int)
63
- end
64
- result[0..-eof_symbol.length]
65
- end
66
- end
67
-
68
- def create_js_context
69
- begin
70
- client = UNIXSocket.new("client/node/node.sock")
71
- client.setsockopt(Socket::SOL_SOCKET, Socket::SO_KEEPALIVE, true)
72
- rescue StandardError => e
73
- Rails.logger.error("Unable to connect to socket: client/node/node.sock. \
74
- Make sure node server is up and running.")
75
- Rails.logger.error(e)
76
- raise e
77
- end
78
- client
79
- end
80
- end
81
- end
82
- end
83
- end
@@ -1,14 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ReactOnRails
4
- module TestHelper
5
- def self.launch_node
6
- return unless ReactOnRails.configuration.server_render_method == "NodeJS"
7
-
8
- path = "#{::Rails.root}/client/node"
9
- puts "Launching NodeJS server at #{path}"
10
- system("cd #{path} && yarn start &")
11
- sleep(1)
12
- end
13
- end
14
- end