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.
- checksums.yaml +4 -4
- data/.rubocop.yml +1 -1
- data/CHANGELOG.md +14 -2
- data/CONTRIBUTING.md +0 -7
- data/Gemfile +8 -13
- data/README.md +5 -4
- data/app/helpers/react_on_rails_helper.rb +1 -534
- data/docs/additional-reading/caching-and-performance.md +2 -29
- data/docs/additional-reading/server-rendering-tips.md +4 -4
- data/docs/basics/configuration.md +23 -9
- data/docs/basics/i18n.md +4 -0
- data/lib/generators/react_on_rails/base_generator.rb +2 -3
- data/lib/generators/react_on_rails/dev_tests_generator.rb +1 -1
- data/lib/generators/react_on_rails/install_generator.rb +1 -1
- data/lib/generators/react_on_rails/react_no_redux_generator.rb +1 -1
- data/lib/generators/react_on_rails/react_with_redux_generator.rb +1 -1
- data/lib/generators/react_on_rails/templates/base/base/config/initializers/react_on_rails.rb +2 -1
- data/lib/generators/react_on_rails/templates/dev_tests/spec/simplecov_helper.rb +2 -2
- data/lib/react_on_rails.rb +3 -2
- data/lib/react_on_rails/configuration.rb +27 -8
- data/lib/react_on_rails/error.rb +4 -0
- data/lib/react_on_rails/prerender_error.rb +1 -1
- data/lib/react_on_rails/react_on_rails_helper.rb +546 -0
- data/lib/react_on_rails/server_rendering_pool.rb +21 -11
- data/lib/react_on_rails/server_rendering_pool/{exec.rb → ruby_embedded_java_script.rb} +35 -38
- data/lib/react_on_rails/test_helper.rb +1 -1
- data/lib/react_on_rails/test_helper/webpack_assets_status_checker.rb +2 -2
- data/lib/react_on_rails/utils.rb +12 -73
- data/lib/react_on_rails/version.rb +1 -1
- data/lib/react_on_rails/version_checker.rb +4 -2
- data/lib/react_on_rails/webpacker_utils.rb +42 -0
- data/package.json +1 -1
- data/rakelib/example_type.rb +1 -1
- data/rakelib/examples.rake +1 -1
- data/rakelib/release.rake +0 -5
- data/rakelib/task_helpers.rb +1 -1
- data/react_on_rails.gemspec +12 -9
- metadata +30 -13
- data/lib/react_on_rails/server_rendering_pool/node.rb +0 -81
- data/lib/react_on_rails/test_helper/node_process_launcher.rb +0 -14
data/rakelib/task_helpers.rb
CHANGED
data/react_on_rails.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
lib = File.expand_path("
|
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
|
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.
|
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
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
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:
|
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-
|
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
|
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
|
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.
|
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.
|
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/
|
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:
|
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
|