react_on_rails 1.2.2 → 2.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 (123) hide show
  1. checksums.yaml +4 -4
  2. metadata +5 -126
  3. data/.babelrc +0 -3
  4. data/.coveralls.yml +0 -1
  5. data/.dockerignore +0 -2
  6. data/.eslintignore +0 -5
  7. data/.eslintrc +0 -48
  8. data/.gitignore +0 -26
  9. data/.jscsrc +0 -26
  10. data/.rspec +0 -2
  11. data/.rubocop.yml +0 -70
  12. data/.scss-lint.yml +0 -205
  13. data/.travis.yml +0 -41
  14. data/CHANGELOG.md +0 -42
  15. data/Dockerfile_tests +0 -12
  16. data/Gemfile +0 -38
  17. data/README.md +0 -363
  18. data/Rakefile +0 -5
  19. data/app/assets/javascripts/react_on_rails.js +0 -241
  20. data/app/helpers/react_on_rails_helper.rb +0 -224
  21. data/docker-compose.yml +0 -11
  22. data/docs/LICENSE +0 -21
  23. data/docs/additional_reading/heroku_deployment.md +0 -23
  24. data/docs/additional_reading/manual_installation.md +0 -142
  25. data/docs/additional_reading/node_dependencies_and_npm.md +0 -29
  26. data/docs/additional_reading/optional_configuration.md +0 -34
  27. data/docs/additional_reading/react-and-redux.md +0 -36
  28. data/docs/additional_reading/react_router.md +0 -45
  29. data/docs/additional_reading/server_rendering_tips.md +0 -16
  30. data/docs/additional_reading/tips.md +0 -10
  31. data/docs/additional_reading/webpack.md +0 -46
  32. data/docs/code_of_conduct.md +0 -13
  33. data/docs/coding-style/linters.md +0 -64
  34. data/docs/coding-style/style.md +0 -42
  35. data/docs/contributing.md +0 -62
  36. data/docs/generator_testing.md +0 -20
  37. data/docs/install_and_releasing.md +0 -24
  38. data/docs/sample_generated_js/README.md +0 -4
  39. data/docs/sample_generated_js/client-generated.js +0 -12
  40. data/docs/sample_generated_js/server-generated.js +0 -25
  41. data/lib/generators/USAGE +0 -99
  42. data/lib/generators/react_on_rails/base_generator.rb +0 -198
  43. data/lib/generators/react_on_rails/bootstrap_generator.rb +0 -91
  44. data/lib/generators/react_on_rails/dev_tests_generator.rb +0 -30
  45. data/lib/generators/react_on_rails/generator_errors.rb +0 -15
  46. data/lib/generators/react_on_rails/generator_helper.rb +0 -58
  47. data/lib/generators/react_on_rails/heroku_deployment_generator.rb +0 -30
  48. data/lib/generators/react_on_rails/install_generator.rb +0 -111
  49. data/lib/generators/react_on_rails/js_linters_generator.rb +0 -19
  50. data/lib/generators/react_on_rails/react_no_redux_generator.rb +0 -41
  51. data/lib/generators/react_on_rails/react_with_redux_generator.rb +0 -52
  52. data/lib/generators/react_on_rails/ruby_linters_generator.rb +0 -33
  53. data/lib/generators/react_on_rails/templates/base/base/Procfile.dev.tt +0 -4
  54. data/lib/generators/react_on_rails/templates/base/base/REACT_ON_RAILS.md +0 -16
  55. data/lib/generators/react_on_rails/templates/base/base/app/controllers/hello_world_controller.rb +0 -5
  56. data/lib/generators/react_on_rails/templates/base/base/app/views/hello_world/index.html.erb.tt +0 -5
  57. data/lib/generators/react_on_rails/templates/base/base/client/.babelrc +0 -3
  58. data/lib/generators/react_on_rails/templates/base/base/client/REACT_ON_RAILS_CLIENT_README.md +0 -3
  59. data/lib/generators/react_on_rails/templates/base/base/client/app/bundles/HelloWorld/startup/globals.jsx.tt +0 -5
  60. data/lib/generators/react_on_rails/templates/base/base/client/index.jade +0 -15
  61. data/lib/generators/react_on_rails/templates/base/base/client/npm-shrinkwrap.json +0 -2907
  62. data/lib/generators/react_on_rails/templates/base/base/client/package.json.tt +0 -98
  63. data/lib/generators/react_on_rails/templates/base/base/client/server.js +0 -64
  64. data/lib/generators/react_on_rails/templates/base/base/client/webpack.client.base.config.js.tt +0 -67
  65. data/lib/generators/react_on_rails/templates/base/base/client/webpack.client.hot.config.js.tt +0 -67
  66. data/lib/generators/react_on_rails/templates/base/base/client/webpack.client.rails.config.js +0 -41
  67. data/lib/generators/react_on_rails/templates/base/base/config/initializers/react_on_rails.rb +0 -28
  68. data/lib/generators/react_on_rails/templates/base/base/lib/tasks/assets.rake.tt +0 -26
  69. data/lib/generators/react_on_rails/templates/base/base/lib/tasks/linters.rake.tt +0 -88
  70. data/lib/generators/react_on_rails/templates/base/base/package.json +0 -31
  71. data/lib/generators/react_on_rails/templates/base/server_rendering/client/app/bundles/HelloWorld/startup/serverGlobals.jsx +0 -3
  72. data/lib/generators/react_on_rails/templates/base/server_rendering/client/webpack.server.rails.config.js +0 -40
  73. data/lib/generators/react_on_rails/templates/bootstrap/app/assets/stylesheets/_bootstrap-custom.scss +0 -63
  74. data/lib/generators/react_on_rails/templates/bootstrap/client/assets/stylesheets/_post-bootstrap.scss +0 -10
  75. data/lib/generators/react_on_rails/templates/bootstrap/client/assets/stylesheets/_pre-bootstrap.scss +0 -8
  76. data/lib/generators/react_on_rails/templates/bootstrap/client/assets/stylesheets/_react-on-rails-sass-helper.scss +0 -19
  77. data/lib/generators/react_on_rails/templates/bootstrap/client/bootstrap-sass.config.js +0 -89
  78. data/lib/generators/react_on_rails/templates/dev_tests/.rspec +0 -2
  79. data/lib/generators/react_on_rails/templates/dev_tests/spec/features/hello_world_spec.rb +0 -25
  80. data/lib/generators/react_on_rails/templates/dev_tests/spec/rails_helper.rb +0 -57
  81. data/lib/generators/react_on_rails/templates/dev_tests/spec/simplecov_helper.rb +0 -21
  82. data/lib/generators/react_on_rails/templates/dev_tests/spec/spec_helper.rb +0 -95
  83. data/lib/generators/react_on_rails/templates/heroku_deployment/.buildpacks +0 -2
  84. data/lib/generators/react_on_rails/templates/heroku_deployment/Procfile +0 -1
  85. data/lib/generators/react_on_rails/templates/heroku_deployment/config/puma.rb +0 -15
  86. data/lib/generators/react_on_rails/templates/js_linters/client/.eslintignore +0 -1
  87. data/lib/generators/react_on_rails/templates/js_linters/client/.eslintrc +0 -48
  88. data/lib/generators/react_on_rails/templates/js_linters/client/.jscsrc +0 -18
  89. data/lib/generators/react_on_rails/templates/no_redux/base/client/app/bundles/HelloWorld/components/HelloWorldWidget.jsx +0 -39
  90. data/lib/generators/react_on_rails/templates/no_redux/base/client/app/bundles/HelloWorld/containers/HelloWorld.jsx +0 -33
  91. data/lib/generators/react_on_rails/templates/no_redux/base/client/app/bundles/HelloWorld/startup/HelloWorldAppClient.jsx.tt +0 -12
  92. data/lib/generators/react_on_rails/templates/no_redux/server_rendering/client/app/bundles/HelloWorld/startup/HelloWorldAppServer.jsx +0 -11
  93. data/lib/generators/react_on_rails/templates/redux/base/client/app/bundles/HelloWorld/actions/helloWorldActionCreators.jsx +0 -8
  94. data/lib/generators/react_on_rails/templates/redux/base/client/app/bundles/HelloWorld/components/HelloWorldWidget.jsx +0 -48
  95. data/lib/generators/react_on_rails/templates/redux/base/client/app/bundles/HelloWorld/constants/helloWorldConstants.jsx +0 -8
  96. data/lib/generators/react_on_rails/templates/redux/base/client/app/bundles/HelloWorld/containers/HelloWorld.jsx +0 -43
  97. data/lib/generators/react_on_rails/templates/redux/base/client/app/bundles/HelloWorld/reducers/helloWorldReducer.jsx +0 -21
  98. data/lib/generators/react_on_rails/templates/redux/base/client/app/bundles/HelloWorld/reducers/index.jsx +0 -14
  99. data/lib/generators/react_on_rails/templates/redux/base/client/app/bundles/HelloWorld/startup/HelloWorldAppClient.jsx.tt +0 -21
  100. data/lib/generators/react_on_rails/templates/redux/base/client/app/bundles/HelloWorld/store/helloWorldStore.jsx +0 -35
  101. data/lib/generators/react_on_rails/templates/redux/base/client/app/lib/middlewares/loggerMiddleware.js +0 -20
  102. data/lib/generators/react_on_rails/templates/redux/server_rendering/client/app/bundles/HelloWorld/startup/HelloWorldAppServer.jsx +0 -21
  103. data/lib/generators/react_on_rails/templates/ruby_linters/.rubocop.yml +0 -26
  104. data/lib/generators/react_on_rails/templates/ruby_linters/.scss-lint.yml +0 -205
  105. data/lib/generators/react_on_rails/templates/ruby_linters/lib/tasks/brakeman.rake +0 -17
  106. data/lib/generators/react_on_rails/templates/ruby_linters/lib/tasks/ci.rake +0 -33
  107. data/lib/generators/react_on_rails/templates/ruby_linters/ruby-lint.yml +0 -20
  108. data/lib/react_on_rails.rb +0 -6
  109. data/lib/react_on_rails/configuration.rb +0 -53
  110. data/lib/react_on_rails/engine.rb +0 -7
  111. data/lib/react_on_rails/prerender_error.rb +0 -31
  112. data/lib/react_on_rails/server_rendering_pool.rb +0 -111
  113. data/lib/react_on_rails/version.rb +0 -3
  114. data/rakelib/docker.rake +0 -33
  115. data/rakelib/dummy_apps.rake +0 -29
  116. data/rakelib/example_type.rb +0 -160
  117. data/rakelib/examples.rake +0 -103
  118. data/rakelib/examples_config.yml +0 -19
  119. data/rakelib/lint.rake +0 -37
  120. data/rakelib/run_rspec.rake +0 -65
  121. data/rakelib/task_helpers.rb +0 -44
  122. data/react_on_rails.gemspec +0 -31
  123. data/ruby-lint.yml +0 -24
@@ -1,26 +0,0 @@
1
- # This is the configuration used to check the rubocop source code.
2
- # Check out: https://github.com/bbatsov/rubocop
3
-
4
- AllCops:
5
- Include:
6
- - '**/Rakefile'
7
- - '**/config.ru'
8
- Exclude:
9
- - 'vendor/**/*'
10
- - 'spec/fixtures/**/*'
11
- - 'node_modules/**/*'
12
- - 'db/**/*'
13
- - 'db/schema.rb'
14
- - 'db/seeds.rb'
15
- - 'client/node_modules/**/*'
16
- - 'bin/**/*'
17
- - !ruby/regexp /old_and_unused\.rb$/
18
-
19
- Metrics/LineLength:
20
- Max: 120
21
-
22
- Style/StringLiterals:
23
- EnforcedStyle: double_quotes
24
-
25
- Style/Documentation:
26
- Enabled: false
@@ -1,205 +0,0 @@
1
- # See http://sass-guidelin.es/#zeros
2
-
3
- scss_files:
4
- - 'app/assets/stylesheets/**/*.scss'
5
- - 'client/assets/stylesheets/**/*.scss'
6
-
7
- linters:
8
- # BangFormat:
9
- # enabled: true
10
- # space_before_bang: true
11
- # space_after_bang: false
12
- #
13
- # BorderZero:
14
- # enabled: true
15
- # convention: zero # or `none`
16
- #
17
- ColorKeyword:
18
- enabled: false
19
- ColorVariable:
20
- enabled: false
21
- #
22
- # Comment:
23
- # enabled: true
24
- #
25
- # DebugStatement:
26
- # enabled: true
27
- #
28
- # DeclarationOrder:
29
- # enabled: true
30
- #
31
- # DuplicateProperty:
32
- # enabled: true
33
- #
34
- # ElsePlacement:
35
- # enabled: true
36
- # style: same_line # or 'new_line'
37
- #
38
- # EmptyLineBetweenBlocks:
39
- # enabled: true
40
- # ignore_single_line_blocks: true
41
- #
42
- # EmptyRule:
43
- # enabled: true
44
- #
45
- # FinalNewline:
46
- # enabled: true
47
- # present: true
48
- #
49
- HexLength:
50
- enabled: true
51
- style: long
52
-
53
- HexNotation:
54
- enabled: true
55
- style: uppercase
56
- #
57
- # HexValidation:
58
- # enabled: true
59
- #
60
- IdSelector:
61
- enabled: true
62
- #
63
- # ImportantRule:
64
- # enabled: true
65
- #
66
- # ImportPath:
67
- # enabled: true
68
- # leading_underscore: false
69
- # filename_extension: false
70
- #
71
- # Indentation:
72
- # enabled: true
73
- # allow_non_nested_indentation: false
74
- # character: space # or 'tab'
75
- # width: 2
76
- #
77
- LeadingZero:
78
- enabled: true
79
- style: include_zero
80
- #
81
- # MergeableSelector:
82
- # enabled: true
83
- # force_nesting: true
84
- #
85
- # NameFormat:
86
- # enabled: true
87
- # allow_leading_underscore: true
88
- # convention: hyphenated_lowercase # or 'camel_case', or 'snake_case', or a regex pattern
89
- #
90
- # NestingDepth:
91
- # enabled: true
92
- # max_depth: 3
93
- #
94
- # PlaceholderInExtend:
95
- # enabled: true
96
- #
97
- # PropertyCount:
98
- # enabled: false
99
- # include_nested: false
100
- # max_properties: 10
101
- #
102
- # PropertyUnits:
103
- # enabled: true
104
- # global: [
105
- # 'ch', 'em', 'ex', 'rem', # Font-relative lengths
106
- # 'cm', 'in', 'mm', 'pc', 'pt', 'px', 'q', # Absolute lengths
107
- # 'vh', 'vw', 'vmin', 'vmax', # Viewport-percentage lengths
108
- # 'deg', 'grad', 'rad', 'turn', # Angle
109
- # 'ms', 's', # Duration
110
- # 'Hz', 'kHz', # Frequency
111
- # 'dpi', 'dpcm', 'dppx', # Resolution
112
- # '%', # Other
113
- # ]
114
- # properties: {}
115
- #
116
- # PropertySortOrder:
117
- # enabled: true
118
- # ignore_unspecified: false
119
- # separate_groups: false
120
- #
121
- # PropertySpelling:
122
- # enabled: true
123
- # extra_properties: []
124
- #
125
- # QualifyingElement:
126
- # enabled: true
127
- # allow_element_with_attribute: false
128
- # allow_element_with_class: false
129
- # allow_element_with_id: false
130
- #
131
- # SelectorDepth:
132
- # enabled: true
133
- # max_depth: 3
134
- #
135
- # SelectorFormat:
136
- # enabled: true
137
- # convention: hyphenated_lowercase # or 'strict_BEM', or 'hyphenated_BEM', or 'snake_case', or 'camel_case', or a regex pattern
138
- #
139
- # Shorthand:
140
- # enabled: true
141
- # allowed_shorthands: [1, 2, 3]
142
- #
143
- # SingleLinePerProperty:
144
- # enabled: true
145
- # allow_single_line_rule_sets: true
146
- #
147
- # SingleLinePerSelector:
148
- # enabled: true
149
- #
150
- # SpaceAfterComma:
151
- # enabled: true
152
- #
153
- # SpaceAfterPropertyColon:
154
- # enabled: true
155
- # style: one_space # or 'no_space', or 'at_least_one_space', or 'aligned'
156
- #
157
- # SpaceAfterPropertyName:
158
- # enabled: true
159
- #
160
- # SpaceBeforeBrace:
161
- # enabled: true
162
- # style: space # or 'new_line'
163
- # allow_single_line_padding: false
164
- #
165
- # SpaceBetweenParens:
166
- # enabled: true
167
- # spaces: 0
168
- #
169
- # StringQuotes:
170
- # enabled: true
171
- # style: single_quotes # or double_quotes
172
- #
173
- # TrailingSemicolon:
174
- # enabled: true
175
- #
176
- # TrailingZero:
177
- # enabled: false
178
- #
179
- # UnnecessaryMantissa:
180
- # enabled: true
181
- #
182
- # UnnecessaryParentReference:
183
- # enabled: true
184
- #
185
- # UrlFormat:
186
- # enabled: true
187
- #
188
- # UrlQuotes:
189
- # enabled: true
190
- #
191
- # VariableForProperty:
192
- # enabled: false
193
- # properties: []
194
- #
195
- # VendorPrefix:
196
- # enabled: true
197
- # identifier_list: base
198
- # additional_identifiers: []
199
- # excluded_identifiers: []
200
- #
201
- # ZeroUnit:
202
- # enabled: true
203
- #
204
- # Compass::*:
205
- # enabled: false
@@ -1,17 +0,0 @@
1
- namespace :brakeman do
2
-
3
- desc "Run Brakeman"
4
- task :run, :output_files do |t, args|
5
- require 'brakeman'
6
-
7
- files = args[:output_files].split(' ') if args[:output_files]
8
- Brakeman.run :app_path => ".", :output_files => files, :print_report => true
9
- end
10
-
11
- desc "Check your code with Brakeman"
12
- task :check do
13
- require 'brakeman'
14
- result = Brakeman.run app_path: '.', print_report: true
15
- exit Brakeman::Warnings_Found_Exit_Code unless result.filtered_warnings.empty?
16
- end
17
- end
@@ -1,33 +0,0 @@
1
- if Rails.env.development?
2
- # See tasks/linters.rake
3
-
4
- task :bundle_audit do
5
- puts Rainbow("Running security audit on gems (bundle_audit)").green
6
- Rake::Task["bundle_audit"].invoke
7
- end
8
-
9
- task :security_audit do
10
- puts Rainbow("Running security audit on code (brakeman)").green
11
-
12
- sh "brakeman --exit-on-warn --quiet -A -z"
13
- end
14
-
15
- namespace :ci do
16
- desc "Run all audits and tests"
17
- task all: [:environment, :lint, :spec, :bundle_audit, :security_audit] do
18
- begin
19
- puts Rainbow("PASSED").green
20
- puts ""
21
- rescue Exception => e
22
- puts "#{e}"
23
- puts Rainbow("FAILED").red
24
- puts ""
25
- raise(e)
26
- end
27
- end
28
- end
29
-
30
- task ci: "ci:all"
31
-
32
- task(:default).clear.enhance([:ci])
33
- end
@@ -1,20 +0,0 @@
1
- presenter: syntastic
2
-
3
- directories:
4
- - app
5
- - config
6
- - spec
7
-
8
- ignore_paths:
9
- - client
10
- - node_modules
11
-
12
- analysis_classes:
13
- # - argument_amount
14
- - pedantics
15
- - shadowing_variables
16
- # Too many false positives for these
17
- # - undefined_methods
18
- # - undefined_variables
19
- # - unused_variables
20
- - useless_equality_checks
@@ -1,6 +0,0 @@
1
- require "rails"
2
-
3
- require "react_on_rails/version"
4
- require "react_on_rails/configuration"
5
- require "react_on_rails/server_rendering_pool"
6
- require "react_on_rails/engine"
@@ -1,53 +0,0 @@
1
- module ReactOnRails
2
- def self.configure
3
- yield(configuration)
4
- end
5
-
6
- def self.configuration
7
- @configuration ||= Configuration.new(
8
- server_bundle_js_file: "app/assets/javascripts/generated/server.js",
9
- prerender: false,
10
- replay_console: true,
11
- logging_on_server: true,
12
- generator_function: false,
13
- raise_on_prerender_error: false,
14
- trace: Rails.env.development?,
15
- development_mode: Rails.env.development?,
16
- server_renderer_pool_size: 1,
17
- server_renderer_timeout: 20)
18
- end
19
-
20
- class Configuration
21
- attr_accessor :server_bundle_js_file, :prerender, :replay_console,
22
- :generator_function, :trace, :development_mode,
23
- :logging_on_server, :server_renderer_pool_size,
24
- :server_renderer_timeout, :raise_on_prerender_error
25
-
26
- def initialize(server_bundle_js_file: nil, prerender: nil, replay_console: nil,
27
- generator_function: nil, trace: nil, development_mode: nil,
28
- logging_on_server: nil, server_renderer_pool_size: nil,
29
- server_renderer_timeout: nil, raise_on_prerender_error: nil)
30
- if File.exist?(server_bundle_js_file)
31
- self.server_bundle_js_file = server_bundle_js_file
32
- else
33
- self.server_bundle_js_file = nil
34
- end
35
-
36
- self.prerender = prerender
37
- self.replay_console = replay_console
38
- self.logging_on_server = logging_on_server
39
- self.generator_function = generator_function
40
- if development_mode.nil?
41
- self.development_mode = Rails.env.development?
42
- else
43
- self.development_mode = development_mode
44
- end
45
- self.trace = trace.nil? ? Rails.env.development? : trace
46
- self.raise_on_prerender_error = raise_on_prerender_error
47
-
48
- # Server rendering:
49
- self.server_renderer_pool_size = self.development_mode ? 1 : server_renderer_pool_size
50
- self.server_renderer_timeout = server_renderer_timeout # seconds
51
- end
52
- end
53
- end
@@ -1,7 +0,0 @@
1
- module ReactOnRails
2
- class Engine < ::Rails::Engine
3
- config.to_prepare do
4
- ReactOnRails::ServerRenderingPool.reset_pool
5
- end
6
- end
7
- end
@@ -1,31 +0,0 @@
1
- module ReactOnRails
2
- class PrerenderError < RuntimeError
3
- # err might be nil if JS caught the error
4
- def initialize(component_name: nil, err: nil, props: nil,
5
- js_code: nil, console_messages: nil)
6
- message = "ERROR in SERVER PRERENDERING\n"
7
- if err
8
- message << <<-MSG
9
- Encountered error: \"#{err}\"
10
- MSG
11
- backtrace = err.backtrace.join("\n")
12
- else
13
- backtrace = nil
14
- end
15
- message << <<-MSG
16
- when prerendering #{component_name} with props: #{props}
17
- js_code was:
18
- #{js_code}
19
- MSG
20
-
21
- if console_messages
22
- message << <<-MSG
23
- console messages:
24
- #{console_messages}
25
- MSG
26
- end
27
-
28
- super([message, backtrace].compact.join("\n"))
29
- end
30
- end
31
- end
@@ -1,111 +0,0 @@
1
- require "connection_pool"
2
-
3
- # Based on the react-rails gem.
4
- # None of these methods should be called directly.
5
- # See app/helpers/react_on_rails_helper.rb
6
- module ReactOnRails
7
- class ServerRenderingPool
8
- def self.reset_pool
9
- options = { size: ReactOnRails.configuration.server_renderer_pool_size,
10
- timeout: ReactOnRails.configuration.server_renderer_pool_size }
11
- @js_context_pool = ConnectionPool.new(options) { create_js_context }
12
- end
13
-
14
- def self.reset_pool_if_server_bundle_was_modified
15
- return unless ReactOnRails.configuration.development_mode
16
- file_mtime = File.mtime(ReactOnRails.configuration.server_bundle_js_file)
17
- @server_bundle_timestamp ||= file_mtime
18
- return if @server_bundle_timestamp == file_mtime
19
- ReactOnRails::ServerRenderingPool.reset_pool
20
- @server_bundle_timestamp = file_mtime
21
- end
22
-
23
- # js_code: JavaScript expression that returns a string.
24
- # Returns a Hash:
25
- # html: string of HTML for direct insertion on the page by evaluating js_code
26
- # consoleReplayScript: script for replaying console
27
- # hasErrors: true if server rendering errors
28
- # Note, js_code does not have to be based on React.
29
- # js_code MUST RETURN json stringify Object
30
- # Calling code will probably call 'html_safe' on return value before rendering to the view.
31
- def self.server_render_js_with_console_logging(js_code)
32
- trace_messsage(js_code)
33
- json_string = eval_js(js_code)
34
- result = JSON.parse(json_string)
35
-
36
- if ReactOnRails.configuration.logging_on_server
37
- console_script = result["consoleReplayScript"]
38
- console_script_lines = console_script.split("\n")
39
- console_script_lines = console_script_lines[2..-2]
40
- re = /console\.log\.apply\(console, \["\[SERVER\] (?<msg>.*)"\]\);/
41
- if console_script_lines
42
- console_script_lines.each do |line|
43
- match = re.match(line)
44
- Rails.logger.info { "[react_on_rails] #{match[:msg]}" } if match
45
- end
46
- end
47
- end
48
- result
49
- end
50
-
51
- class << self
52
- private
53
-
54
- def trace_messsage(js_code)
55
- return unless ENV["TRACE_REACT_ON_RAILS"].present?
56
- # Set to anything to print generated code.
57
- puts "Z" * 80
58
- puts "react_renderer.rb: 92"
59
- puts "wrote file tmp/server-generated.js"
60
- File.write("tmp/server-generated.js", js_code)
61
- puts "Z" * 80
62
- end
63
-
64
- def eval_js(js_code)
65
- @js_context_pool.with do |js_context|
66
- result = js_context.eval(js_code)
67
- js_context.eval("console.history = []")
68
- result
69
- end
70
- end
71
-
72
- def create_js_context
73
- server_js_file = ReactOnRails.configuration.server_bundle_js_file
74
- if server_js_file.present? && File.exist?(server_js_file)
75
- bundle_js_code = File.read(server_js_file)
76
- base_js_code = <<-JS
77
- #{console_polyfill}
78
- #{bundle_js_code};
79
- #{::Rails.application.assets['react_on_rails.js']};
80
- JS
81
- ExecJS.compile(base_js_code)
82
- else
83
- if server_js_file.present?
84
- msg = "You specified server rendering JS file: #{server_js_file}, but it cannot be "\
85
- "read. You may set the server_bundle_js_file in your configuration to be \"\" to "\
86
- "avoid this warning"
87
- Rails.logger.warn msg
88
- puts msg
89
- end
90
- ExecJS.compile("")
91
- end
92
- end
93
-
94
- # Reimplement console methods for replaying on the client
95
- def console_polyfill
96
- <<-JS
97
- var console = { history: [] };
98
- ['error', 'log', 'info', 'warn'].forEach(function (level) {
99
- console[level] = function () {
100
- var argArray = Array.prototype.slice.call(arguments);
101
- if (argArray.length > 0) {
102
- argArray[0] = '[SERVER] ' + argArray[0];
103
- }
104
- console.history.push({level: level, arguments: argArray});
105
- };
106
- });
107
- JS
108
- end
109
- end
110
- end
111
- end