react_on_rails 10.1.4 → 11.0.0.beta.1

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 (40) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1 -1
  3. data/CHANGELOG.md +14 -2
  4. data/CONTRIBUTING.md +0 -7
  5. data/Gemfile +8 -13
  6. data/README.md +5 -4
  7. data/app/helpers/react_on_rails_helper.rb +1 -534
  8. data/docs/additional-reading/caching-and-performance.md +2 -29
  9. data/docs/additional-reading/server-rendering-tips.md +4 -4
  10. data/docs/basics/configuration.md +23 -9
  11. data/docs/basics/i18n.md +4 -0
  12. data/lib/generators/react_on_rails/base_generator.rb +2 -3
  13. data/lib/generators/react_on_rails/dev_tests_generator.rb +1 -1
  14. data/lib/generators/react_on_rails/install_generator.rb +1 -1
  15. data/lib/generators/react_on_rails/react_no_redux_generator.rb +1 -1
  16. data/lib/generators/react_on_rails/react_with_redux_generator.rb +1 -1
  17. data/lib/generators/react_on_rails/templates/base/base/config/initializers/react_on_rails.rb +2 -1
  18. data/lib/generators/react_on_rails/templates/dev_tests/spec/simplecov_helper.rb +2 -2
  19. data/lib/react_on_rails.rb +3 -2
  20. data/lib/react_on_rails/configuration.rb +27 -8
  21. data/lib/react_on_rails/error.rb +4 -0
  22. data/lib/react_on_rails/prerender_error.rb +1 -1
  23. data/lib/react_on_rails/react_on_rails_helper.rb +546 -0
  24. data/lib/react_on_rails/server_rendering_pool.rb +21 -11
  25. data/lib/react_on_rails/server_rendering_pool/{exec.rb → ruby_embedded_java_script.rb} +35 -38
  26. data/lib/react_on_rails/test_helper.rb +1 -1
  27. data/lib/react_on_rails/test_helper/webpack_assets_status_checker.rb +2 -2
  28. data/lib/react_on_rails/utils.rb +12 -73
  29. data/lib/react_on_rails/version.rb +1 -1
  30. data/lib/react_on_rails/version_checker.rb +4 -2
  31. data/lib/react_on_rails/webpacker_utils.rb +42 -0
  32. data/package.json +1 -1
  33. data/rakelib/example_type.rb +1 -1
  34. data/rakelib/examples.rake +1 -1
  35. data/rakelib/release.rake +0 -5
  36. data/rakelib/task_helpers.rb +1 -1
  37. data/react_on_rails.gemspec +12 -9
  38. metadata +30 -13
  39. data/lib/react_on_rails/server_rendering_pool/node.rb +0 -81
  40. data/lib/react_on_rails/test_helper/node_process_launcher.rb +0 -14
@@ -4,7 +4,7 @@ module ReactOnRails
4
4
  module TaskHelpers
5
5
  # Returns the root folder of the react_on_rails gem
6
6
  def gem_root
7
- File.expand_path("../../.", __FILE__)
7
+ File.expand_path("..", __dir__)
8
8
  end
9
9
 
10
10
  # Returns the folder where examples are located
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- lib = File.expand_path("../lib", __FILE__)
3
+ lib = File.expand_path("lib", __dir__)
4
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
5
  require "react_on_rails/version"
6
6
 
@@ -32,7 +32,7 @@ Gem::Specification.new do |s|
32
32
  s.add_dependency "rainbow", "~> 2.2"
33
33
 
34
34
  s.add_development_dependency "awesome_print"
35
- s.add_development_dependency "bundler", "~> 1.10"
35
+ s.add_development_dependency "bundler", "~> 1"
36
36
  s.add_development_dependency "coveralls"
37
37
  s.add_development_dependency "gem-release"
38
38
  s.add_development_dependency "generator_spec"
@@ -44,14 +44,17 @@ Gem::Specification.new do |s|
44
44
  s.add_development_dependency "pry-stack_explorer"
45
45
  s.add_development_dependency "pry-state"
46
46
  s.add_development_dependency "pry-toys"
47
- s.add_development_dependency "rails", "~> 5.1.2"
47
+ s.add_development_dependency "rails", "~> 5.2"
48
+
48
49
  s.add_development_dependency "rake", "~> 10.0"
49
50
  s.add_development_dependency "rspec"
50
-
51
- s.post_install_message = <<~MSG
52
- Email contact@shakacode.com for access to our slack room and information about our "pro support plan"
53
- which supports better performance, via caching helpers and our node rendering server.
54
-
55
- MSG
51
+ s.add_development_dependency "rubocop", "0.55.0"
52
+
53
+ s.post_install_message = '
54
+ --------------------------------------------------------------------------------
55
+ Email contact@shakacode.com for access to our slack room and information about our "pro support plan"
56
+ which supports better performance, via caching helpers and our node rendering server.
57
+ --------------------------------------------------------------------------------
58
+ '
56
59
  end
57
60
  # rubocop:enable Metrics/BlockLength
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: react_on_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 10.1.4
4
+ version: 11.0.0.beta.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Gordon
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-04-12 00:00:00.000000000 Z
11
+ date: 2018-04-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable
@@ -100,14 +100,14 @@ dependencies:
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
112
  name: coveralls
113
113
  requirement: !ruby/object:Gem::Requirement
@@ -268,14 +268,14 @@ dependencies:
268
268
  requirements:
269
269
  - - "~>"
270
270
  - !ruby/object:Gem::Version
271
- version: 5.1.2
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: 5.1.2
278
+ version: '5.2'
279
279
  - !ruby/object:Gem::Dependency
280
280
  name: rake
281
281
  requirement: !ruby/object:Gem::Requirement
@@ -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
@@ -417,23 +431,24 @@ files:
417
431
  - lib/react_on_rails/configuration.rb
418
432
  - lib/react_on_rails/controller.rb
419
433
  - lib/react_on_rails/engine.rb
434
+ - lib/react_on_rails/error.rb
420
435
  - lib/react_on_rails/git_utils.rb
421
436
  - lib/react_on_rails/json_output.rb
422
437
  - lib/react_on_rails/locales_to_js.rb
423
438
  - lib/react_on_rails/prerender_error.rb
424
439
  - lib/react_on_rails/react_component/options.rb
440
+ - lib/react_on_rails/react_on_rails_helper.rb
425
441
  - lib/react_on_rails/server_rendering_pool.rb
426
- - lib/react_on_rails/server_rendering_pool/exec.rb
427
- - lib/react_on_rails/server_rendering_pool/node.rb
442
+ - lib/react_on_rails/server_rendering_pool/ruby_embedded_java_script.rb
428
443
  - lib/react_on_rails/test_helper.rb
429
444
  - lib/react_on_rails/test_helper/ensure_assets_compiled.rb
430
- - lib/react_on_rails/test_helper/node_process_launcher.rb
431
445
  - lib/react_on_rails/test_helper/webpack_assets_compiler.rb
432
446
  - lib/react_on_rails/test_helper/webpack_assets_status_checker.rb
433
447
  - lib/react_on_rails/utils.rb
434
448
  - lib/react_on_rails/version.rb
435
449
  - lib/react_on_rails/version_checker.rb
436
450
  - lib/react_on_rails/version_syntax_converter.rb
451
+ - lib/react_on_rails/webpacker_utils.rb
437
452
  - lib/tasks/assets.rake
438
453
  - lib/tasks/locale.rake
439
454
  - package.json
@@ -459,10 +474,12 @@ homepage: https://github.com/shakacode/react_on_rails
459
474
  licenses:
460
475
  - MIT
461
476
  metadata: {}
462
- post_install_message: |+
477
+ post_install_message: |2
478
+
479
+ --------------------------------------------------------------------------------
463
480
  Email contact@shakacode.com for access to our slack room and information about our "pro support plan"
464
481
  which supports better performance, via caching helpers and our node rendering server.
465
-
482
+ --------------------------------------------------------------------------------
466
483
  rdoc_options: []
467
484
  require_paths:
468
485
  - lib
@@ -473,9 +490,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
473
490
  version: 2.1.0
474
491
  required_rubygems_version: !ruby/object:Gem::Requirement
475
492
  requirements:
476
- - - ">="
493
+ - - ">"
477
494
  - !ruby/object:Gem::Version
478
- version: '0'
495
+ version: 1.3.1
479
496
  requirements: []
480
497
  rubyforge_project:
481
498
  rubygems_version: 2.6.14
@@ -1,81 +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
- result[-eof_symbol.length..-1] != eof_symbol while result += js_context.recv(max_int)
62
- result[0..-eof_symbol.length]
63
- end
64
- end
65
-
66
- def create_js_context
67
- begin
68
- client = UNIXSocket.new("client/node/node.sock")
69
- client.setsockopt(Socket::SOL_SOCKET, Socket::SO_KEEPALIVE, true)
70
- rescue StandardError => e
71
- Rails.logger.error("Unable to connect to socket: client/node/node.sock. \
72
- Make sure node server is up and running.")
73
- Rails.logger.error(e)
74
- raise e
75
- end
76
- client
77
- end
78
- end
79
- end
80
- end
81
- 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