react_on_rails 11.0.7 → 11.0.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 18af285d5940a9611b5c13665d8e4d8e3500f2b8
4
- data.tar.gz: 05ae472d3a6d8c99c1a78acd6acde45a9ca5363f
2
+ SHA256:
3
+ metadata.gz: 5ed7b1fbb2464837b56060e72a7496e347e4da42218d09256e11b2e30c24e43b
4
+ data.tar.gz: fb7122bd0af170552379b15faeb3bdacd989f8121e7995dd975d9554bd948d93
5
5
  SHA512:
6
- metadata.gz: 1c96204dd51f27506efe54fd42212bc7a9198ce670f1163035399ba74ca4d4ad53eff275325147d157cdf3e65341186226f4d95d609b5c5fa2bcf0eca6486c6f
7
- data.tar.gz: 47872bcdb906c82d937daa97d9c6ad2afa5110293ca8f95db4763086f311e29ce0b32c3d091da72f57aa1a27eebb4287099432b62e4a8b85627bef02f5e4b8c0
6
+ metadata.gz: 2f2cca7b17bf7c7f53d338a51fa01e28bb131712fdba019e058e481993d178995710ef42e3cc063f8617184695abaf1dc444f6161e5ee8a92ed04f4e042a27ed
7
+ data.tar.gz: ebf4448a0ad4316ecc89d893f6a52eecbd23ec62b55ea7e4a615ff15c7c20fabe1964e84224fda00328348e832555ce1dd78ae3782ffd9ee7d0514fdca9adb17
data/.travis.yml CHANGED
@@ -37,9 +37,9 @@ before_install:
37
37
 
38
38
  install:
39
39
  - travis_retry gem install bundler
40
- - travis_retry nvm install 9.11.1
40
+ - travis_retry nvm install 8.11.3
41
41
  - node -v
42
- - travis_retry npm i -g yarn@0.27.5
42
+ - travis_retry npm i -g yarn
43
43
  - travis_retry yarn global add babel-cli
44
44
  - travis_retry bundle install
45
45
  - travis_retry yarn
data/CHANGELOG.md CHANGED
@@ -9,13 +9,28 @@ See [Upgrading React on Rails](./docs/basics/upgrading-react-on-rails.md) for mo
9
9
  Changes since last non-beta release.
10
10
 
11
11
  *Please add entries here for your pull requests that are not yet released.*
12
+ ### [11.0.9] - 2018-05-22
13
+ #### Fixed
14
+ - HashWithIndifferent access for props threw if used for props. [PR 1100](https://github.com/shakacode/react_on_rails/pull/1100) by [justin808](https://github.com/justin808).
15
+ - Test helper for detecting stale bundles did not properly handle the case of a server-bundle.js without a hash.[PR 1102](https://github.com/shakacode/react_on_rails/pull/1102) by [justin808](https://github.com/justin808).
16
+
17
+ ### [11.0.8] - 2018-05-22
18
+ #### Fixed
19
+ - Fix test helper determination of stale assets. [PR 1093](https://github.com/shakacode/react_on_rails/pull/1093) by [justin808](https://github.com/justin808).
12
20
 
13
21
  #### Changed
22
+ - Document how to manually rehydrate XHR-substituted components on client side. [PR 1095](https://github.com/shakacode/react_on_rails/pull/1095) by [hchevalier](https://github.com/hchevalier).
23
+
24
+ ### [11.0.7] - 2018-05-11
25
+ #### Fixed
26
+ - Fix npm publshing. [PR 1090](https://github.com/shakacode/react_on_rails/pull/1090) by [justin808](https://github.com/justin808).
14
27
 
15
28
  ### [11.0.6] - 2018-05-11
29
+ #### Changed
16
30
  - Even more detailed errors for Honeybadger and Sentry when there's a JSON parse error on server rendering. [PR 1086](https://github.com/shakacode/react_on_rails/pull/1086) by [justin808](https://github.com/justin808).
17
31
 
18
32
  ### [11.0.5] - 2018-05-11
33
+ #### Changed
19
34
  - More detailed errors for Honeybadger and Sentry. [PR 1081](https://github.com/shakacode/react_on_rails/pull/1081) by [justin808](https://github.com/justin808).
20
35
 
21
36
  ### [11.0.4] - 2018-05-3
@@ -761,7 +776,10 @@ Best done with Object destructing:
761
776
  ##### Fixed
762
777
  - Fix several generator related issues.
763
778
 
764
- [Unreleased]: https://github.com/shakacode/react_on_rails/compare/11.0.6...master
779
+ [Unreleased]: https://github.com/shakacode/react_on_rails/compare/11.0.9...master
780
+ [11.0.8]: https://github.com/shakacode/react_on_rails/compare/11.0.8...11.0.9
781
+ [11.0.8]: https://github.com/shakacode/react_on_rails/compare/11.0.7...11.0.8
782
+ [11.0.7]: https://github.com/shakacode/react_on_rails/compare/11.0.6...11.0.7
765
783
  [11.0.6]: https://github.com/shakacode/react_on_rails/compare/11.0.5...11.0.6
766
784
  [11.0.5]: https://github.com/shakacode/react_on_rails/compare/11.0.4...11.0.5
767
785
  [11.0.4]: https://github.com/shakacode/react_on_rails/compare/11.0.3...11.0.4
data/README.md CHANGED
@@ -2,19 +2,29 @@
2
2
 
3
3
  *If this projects helps you, please give us a star!*
4
4
 
5
- ## Need Help with Rails + Webpack v4 + React? Want better performance?
5
+ ## React on Rails Pro Released!
6
+ React on Rails Pro provides Node server rendering and other performance enhancements for React on Rails. It's live at [egghead.io](https://egghead.io). See the [React on Rails Pro Docs](https://github.com/shakacode/react_on_rails/wiki).
7
+
6
8
  Aloha, I'm Justin Gordon the creator and maintainer of React on Rails. I offer a [React on Rails Pro Support Plan](http://www.shakacode.com/work/shakacode-pro-support.pdf), and I can help you with:
7
9
  * Optimizing your webpack setup to Webpack v4 for React on Rails.
8
10
  * Upgrading from older React on Rails to newer versions (are using using the new Webpacker setup that avoids the asset pipeline?)
9
11
  * Better performance client and server side.
10
12
  * Efficiently migrating from Angular to React.
11
13
  * Best practices based on 4 years of React on Rails experience.
12
- * Early access to the React on Rails Pro Gem and Node code, including:
13
- * ShakaCode's Node.js rendering server for better performance for server rendering (live at [egghead.io](https://egghead.io/)).
14
- * Performance caching helpers, especially for server rendering
14
+
15
+ From Kyle Maune of Cooper Aerial, May 4, 2018
16
+
17
+ ![image](https://user-images.githubusercontent.com/1118459/40891236-9b0b406e-671d-11e8-80ee-c026dbd1d5a2.png)
18
+
19
+ From Joel Hooks, Co-Founder, Chief Nerd at [egghead.io](https://egghead.io/), January 30, 2017:
20
+
21
+ ![2017-01-30_11-33-59](https://cloud.githubusercontent.com/assets/1118459/22443635/b3549fb4-e6e3-11e6-8ea2-6f589dc93ed3.png)
15
22
 
16
23
  Please [email me](mailto:justin@shakacode.com) for a free half-hour project consultation, on anything from React on Rails to any aspect of web development.
17
24
 
25
+ For more testimonials, see [Live Projects](PROJECTS.md) and [Kudos](./KUDOS.md).
26
+
27
+
18
28
  ----
19
29
 
20
30
  ## React on Rails is based on Webpacker!
@@ -69,15 +79,6 @@ Please [**click to subscribe**](https://app.mailerlite.com/webforms/landing/l1d9
69
79
  * See [Projects](PROJECTS.md) using and [KUDOS](./KUDOS.md) for React on Rails. Please submit yours! Please edit either page or [email us](mailto:contact@shakacode.com) and we'll add your info. We also **love stars** as it helps us attract new users and contributors.
70
80
  * *See [NEWS.md](NEWS.md) for more notes over time.*
71
81
 
72
- ------
73
-
74
- # Testimonials
75
- From Joel Hooks, Co-Founder, Chief Nerd at [egghead.io](https://egghead.io/), January 30, 2017:
76
-
77
- ![2017-01-30_11-33-59](https://cloud.githubusercontent.com/assets/1118459/22443635/b3549fb4-e6e3-11e6-8ea2-6f589dc93ed3.png)
78
-
79
- For more testimonials, see [Live Projects](PROJECTS.md) and [Kudos](./KUDOS.md).
80
-
81
82
  -------
82
83
 
83
84
  # Articles, Videos, and Podcasts
@@ -540,7 +541,10 @@ All options except `props, id, html_options` will inherit from your `react_on_ra
540
541
  + **replay_console:** Default is true. False will disable echoing server-rendering logs to the browser. While this can make troubleshooting server rendering difficult, so long as you have the configuration of `logging_on_server` set to true, you'll still see the errors on the server.
541
542
  + **logging_on_server:** Default is true. True will log JS console messages and errors to the server.
542
543
  + **raise_on_prerender_error:** Default is false. True will throw an error on the server side rendering. Your controller will have to handle the error.
543
-
544
+
545
+ Note: client hydration will not trigger for components rendered through XHR. You will have to handle it with javascript.
546
+ For an example, see [spec/dummy/app/views/pages/xhr_refresh.rb](https://github.com/shakacode/react_on_rails/tree/master/spec/dummy/app/views/pages/xhr_refresh.rb).
547
+
544
548
  ### react_component_hash
545
549
  `react_component_hash` is used to return multiple HTML strings for server rendering, such as for
546
550
  adding meta-tags to a page. It is exactly like react_component except for the following:
@@ -32,3 +32,10 @@ This is necessary because React on Rails attaches itself to the rake assets:prec
32
32
  Requiring `react_on_rails` and including the helper will get rid of any issues where react on rails or react_component is undefined.
33
33
 
34
34
  As far as solving the assets issue, `lib/tasks/assets.rake` in `react_on_rails` would somehow have to know that `react_on_rails` was included in an engine, and decide the path accordingly. This might be impossible, especially in the case of multiple engines using `react_on_rails` in a single application. Another solution would be to detach this rake task from the rails assets:precompile task, and let people use it separately.
35
+
36
+ # Github Issues
37
+
38
+ * [Integration with an engine #342](https://github.com/shakacode/react_on_rails/issues/342)
39
+ * [Feature: target destination option for the install generator #459](https://github.com/shakacode/react_on_rails/issues/459)
40
+ * [Integration with Rails 5 Engines #562](https://github.com/shakacode/react_on_rails/issues/562)
41
+ * [Run inside a Rails engine? #257](https://github.com/shakacode/react_on_rails/issues/257)
@@ -37,7 +37,13 @@ The following `config/react_on_rails.rb` settings **must** match your setup:
37
37
 
38
38
  # Define the files we need to check for webpack compilation when running tests.
39
39
  # Generally, the manifest.json is good enough for this check if using webpacker
40
- config.webpack_generated_files = %w( hello-world-bundle.js )
40
+ config.webpack_generated_files = %w( manifest.json )
41
+
42
+ # OR if you're not hashing the server-bundle.js, then you should include your server-bundle.js in the list.
43
+ # config.webpack_generated_files = %w( server-bundle.js manifest.json )
44
+
45
+ # OR if you're not using webpacker, your setup might look like.
46
+ # config.webpack_generated_files = %w( client-bundle.js server-bundle.js )
41
47
 
42
48
  # If you are using the ReactOnRails::TestHelper.configure_rspec_to_compile_assets(config)
43
49
  # with rspec then this controls what yarn command is run
@@ -58,8 +58,10 @@ ReactOnRails.configure do |config|
58
58
 
59
59
  # Define the files we need to check for webpack compilation when running tests.
60
60
  # The default is `%w( manifest.json )` as will be sufficient for most webpacker builds.
61
+ # However, if you are generated a server bundle that is NOT hashed (present in manifest.json),
62
+ # then include the file in this list like this:
61
63
  #
62
- config.webpack_generated_files = %w( manifest.json )
64
+ config.webpack_generated_files = %w( server-bundle.js manifest.json )
63
65
 
64
66
  # You can optionally add values to your rails_context. See example below for RenderingExtension
65
67
  # config.rendering_extension = RenderingExtension
@@ -75,8 +77,10 @@ ReactOnRails.configure do |config|
75
77
  # JavaScript execution instances which should handle any component requested.
76
78
  #
77
79
  # While you may configure this to be the same as your client bundle file, this file is typically
78
- # different.
79
- #
80
+ # different. Note, be sure to include the exact file name with the ".js" if you are not hashing this file.
81
+ # If you are hashing this file (supposing you are using the same file for client rendering), then
82
+ #
83
+ # you should include a name that matches your bundle name in your webpack config.
80
84
  config.server_bundle_js_file = "server-bundle.js"
81
85
 
82
86
  # If set to true, this forces Rails to reload the server bundle if it is modified
@@ -25,10 +25,10 @@ Reason for doing this: This enables your webpack bundles to bypass the Rails ass
25
25
  #### From version 7 or lower
26
26
 
27
27
  ##### ...while keeping your `client` directory
28
- Unfortunately, this requires quite a few steps:
29
28
  * `.gitignore`: add `/public/webpack/*`
30
29
  * `Gemfile`: bump `react_on_rails` and add `webpacker`
31
- * layout views: anything bundled by webpack will need to be requested by a `javascript_pack_tag` or `stylesheet_pack_tag`
30
+ * layout views: anything bundled by webpack will need to be requested by a `javascript_pack_tag` or `stylesheet_pack_tag`.
31
+ * Search your codebase for javascript_include_tag. Use the
32
32
  * `config/initializers/assets.rb`: we no longer need to modify `Rails.application.config.assets.paths` or append anything to `Rails.application.config.assets.precompile`.
33
33
  * `config/initializers/react_on_rails.rb`:
34
34
  * Delete `config.generated_assets_dir`. Webpacker's config now supplies this information
@@ -3,138 +3,13 @@
3
3
  module ReactOnRails
4
4
  def self.configure
5
5
  yield(configuration)
6
- setup_config_values
6
+ configuration.setup_config_values
7
7
  end
8
8
 
9
9
  DEFAULT_GENERATED_ASSETS_DIR = File.join(%w[public webpack], Rails.env).freeze
10
10
  DEFAULT_SERVER_RENDER_TIMEOUT = 20
11
11
  DEFAULT_POOL_SIZE = 1
12
12
 
13
- def self.setup_config_values
14
- ensure_webpack_generated_files_exists
15
- configure_generated_assets_dirs_deprecation
16
- configure_skip_display_none_deprecation
17
- ensure_generated_assets_dir_present
18
- ensure_server_bundle_js_file_has_no_path
19
- check_i18n_directory_exists
20
- check_i18n_yml_directory_exists
21
- check_server_render_method_is_only_execjs
22
- error_if_using_webpacker_and_generated_assets_dir_not_match_public_output_path
23
- end
24
-
25
- def self.error_if_using_webpacker_and_generated_assets_dir_not_match_public_output_path
26
- return unless ReactOnRails::WebpackerUtils.using_webpacker?
27
-
28
- return if @configuration.generated_assets_dir.blank?
29
-
30
- webpacker_public_output_path = ReactOnRails::WebpackerUtils.webpacker_public_output_path
31
-
32
- if File.expand_path(@configuration.generated_assets_dir) == webpacker_public_output_path.to_s
33
- Rails.logger.warn("You specified /config/initializers/react_on_rails.rb generated_assets_dir "\
34
- "with Webpacker. Remove this line from your configuration file.")
35
- else
36
- msg = <<-MSG.strip_heredoc
37
- Error configuring /config/initializers/react_on_rails.rb: You are using webpacker
38
- and your specified value for generated_assets_dir = #{@configuration.generated_assets_dir}
39
- that does not match the value for public_output_path specified in
40
- webpacker.yml = #{webpacker_public_output_path}. You should remove the configuration
41
- value for "generated_assets_dir" from your config/initializers/react_on_rails.rb file.
42
- MSG
43
- raise ReactOnRails::Error, msg
44
- end
45
- end
46
-
47
- def self.check_server_render_method_is_only_execjs
48
- return if @configuration.server_render_method.blank? ||
49
- @configuration.server_render_method == "ExecJS"
50
-
51
- msg = <<-MSG.strip_heredoc
52
- Error configuring /config/initializers/react_on_rails.rb: invalid value for `config.server_render_method`.
53
- If you wish to use a server render method other than ExecJS, contact justin@shakacode.com
54
- for details.
55
- MSG
56
- raise ReactOnRails::Error, msg
57
- end
58
-
59
- def self.check_i18n_directory_exists
60
- return if @configuration.i18n_dir.nil?
61
- return if Dir.exist?(@configuration.i18n_dir)
62
-
63
- msg = <<-MSG.strip_heredoc
64
- Error configuring /config/initializers/react_on_rails.rb: invalid value for `config.i18n_dir`.
65
- Directory does not exist: #{@configuration.i18n_dir}. Set to value to nil or comment it
66
- out if not using the React on Rails i18n feature.
67
- MSG
68
- raise ReactOnRails::Error, msg
69
- end
70
-
71
- def self.check_i18n_yml_directory_exists
72
- return if @configuration.i18n_yml_dir.nil?
73
- return if Dir.exist?(@configuration.i18n_yml_dir)
74
-
75
- msg = <<-MSG.strip_heredoc
76
- Error configuring /config/initializers/react_on_rails.rb: invalid value for `config.i18n_yml_dir`.
77
- Directory does not exist: #{@configuration.i18n_yml_dir}. Set to value to nil or comment it
78
- out if not using this i18n with React on Rails, or if you want to use all translation files.
79
- MSG
80
- raise ReactOnRails::Error, msg
81
- end
82
-
83
- def self.ensure_generated_assets_dir_present
84
- return if @configuration.generated_assets_dir.present? || ReactOnRails::WebpackerUtils.using_webpacker?
85
-
86
- @configuration.generated_assets_dir = DEFAULT_GENERATED_ASSETS_DIR
87
- Rails.logger.warn "ReactOnRails: Set generated_assets_dir to default: #{DEFAULT_GENERATED_ASSETS_DIR}"
88
- end
89
-
90
- def self.configure_generated_assets_dirs_deprecation
91
- return if @configuration.generated_assets_dirs.blank?
92
-
93
- if ReactOnRails::WebpackerUtils.using_webpacker?
94
- webpacker_public_output_path = ReactOnRails::WebpackerUtils.webpacker_public_output_path
95
- Rails.logger.warn "Error configuring config/initializers/react_on_rails. Define neither the "\
96
- "generated_assets_dirs no the generated_assets_dir when using Webpacker. This is defined by "\
97
- "public_output_path specified in webpacker.yml = #{webpacker_public_output_path}."
98
- return
99
- end
100
-
101
- Rails.logger.warn "[DEPRECATION] ReactOnRails: Use config.generated_assets_dir rather than "\
102
- "generated_assets_dirs"
103
- if @configuration.generated_assets_dir.blank?
104
- @configuration.generated_assets_dir = @configuration.generated_assets_dirs
105
- else
106
- Rails.logger.warn "[DEPRECATION] ReactOnRails. You have both generated_assets_dirs and "\
107
- "generated_assets_dir defined. Define ONLY generated_assets_dir if NOT using Webpacker"\
108
- " and define neither if using Webpacker"
109
- end
110
- end
111
-
112
- def self.ensure_webpack_generated_files_exists
113
- return unless @configuration.webpack_generated_files.empty?
114
-
115
- files = ["hello-world-bundle.js"]
116
- files << @configuration.server_bundle_js_file if @configuration.server_bundle_js_file.present?
117
-
118
- @configuration.webpack_generated_files = files
119
- end
120
-
121
- def self.ensure_server_bundle_js_file_has_no_path
122
- return unless @configuration.server_bundle_js_file.include?(File::SEPARATOR)
123
-
124
- assets_dir = ReactOnRails::Utils.generated_assets_full_path
125
- @configuration.server_bundle_js_file = File.basename(@configuration.server_bundle_js_file)
126
-
127
- Rails.logger_warn do
128
- "[DEPRECATION] ReactOnRails: remove path from server_bundle_js_file in configuration. "\
129
- "All generated files must go in #{assets_dir}. Using file basename #{@configuration.server_bundle_js_file}"
130
- end
131
- end
132
-
133
- def self.configure_skip_display_none_deprecation
134
- return if @configuration.skip_display_none.nil?
135
- Rails.logger.warn "[DEPRECATION] ReactOnRails: remove skip_display_none from configuration."
136
- end
137
-
138
13
  def self.configuration
139
14
  @configuration ||= Configuration.new(
140
15
  node_modules_location: nil,
@@ -214,5 +89,133 @@ module ReactOnRails
214
89
  self.server_render_method = server_render_method
215
90
  self.symlink_non_digested_assets_regex = symlink_non_digested_assets_regex
216
91
  end
92
+
93
+ # on ReactOnRails
94
+ def setup_config_values
95
+ ensure_webpack_generated_files_exists
96
+ configure_generated_assets_dirs_deprecation
97
+ configure_skip_display_none_deprecation
98
+ ensure_generated_assets_dir_present
99
+ ensure_server_bundle_js_file_has_no_path
100
+ check_i18n_directory_exists
101
+ check_i18n_yml_directory_exists
102
+ check_server_render_method_is_only_execjs
103
+ error_if_using_webpacker_and_generated_assets_dir_not_match_public_output_path
104
+ end
105
+
106
+ private
107
+
108
+ def error_if_using_webpacker_and_generated_assets_dir_not_match_public_output_path
109
+ return unless ReactOnRails::WebpackerUtils.using_webpacker?
110
+
111
+ return if generated_assets_dir.blank?
112
+
113
+ webpacker_public_output_path = ReactOnRails::WebpackerUtils.webpacker_public_output_path
114
+
115
+ if File.expand_path(generated_assets_dir) == webpacker_public_output_path.to_s
116
+ Rails.logger.warn("You specified /config/initializers/react_on_rails.rb generated_assets_dir "\
117
+ "with Webpacker. Remove this line from your configuration file.")
118
+ else
119
+ msg = <<-MSG.strip_heredoc
120
+ Error configuring /config/initializers/react_on_rails.rb: You are using webpacker
121
+ and your specified value for generated_assets_dir = #{generated_assets_dir}
122
+ that does not match the value for public_output_path specified in
123
+ webpacker.yml = #{webpacker_public_output_path}. You should remove the configuration
124
+ value for "generated_assets_dir" from your config/initializers/react_on_rails.rb file.
125
+ MSG
126
+ raise ReactOnRails::Error, msg
127
+ end
128
+ end
129
+
130
+ def check_server_render_method_is_only_execjs
131
+ return if server_render_method.blank? ||
132
+ server_render_method == "ExecJS"
133
+
134
+ msg = <<-MSG.strip_heredoc
135
+ Error configuring /config/initializers/react_on_rails.rb: invalid value for `config.server_render_method`.
136
+ If you wish to use a server render method other than ExecJS, contact justin@shakacode.com
137
+ for details.
138
+ MSG
139
+ raise ReactOnRails::Error, msg
140
+ end
141
+
142
+ def check_i18n_directory_exists
143
+ return if i18n_dir.nil?
144
+ return if Dir.exist?(i18n_dir)
145
+
146
+ msg = <<-MSG.strip_heredoc
147
+ Error configuring /config/initializers/react_on_rails.rb: invalid value for `config.i18n_dir`.
148
+ Directory does not exist: #{i18n_dir}. Set to value to nil or comment it
149
+ out if not using the React on Rails i18n feature.
150
+ MSG
151
+ raise ReactOnRails::Error, msg
152
+ end
153
+
154
+ def check_i18n_yml_directory_exists
155
+ return if i18n_yml_dir.nil?
156
+ return if Dir.exist?(i18n_yml_dir)
157
+
158
+ msg = <<-MSG.strip_heredoc
159
+ Error configuring /config/initializers/react_on_rails.rb: invalid value for `config.i18n_yml_dir`.
160
+ Directory does not exist: #{i18n_yml_dir}. Set to value to nil or comment it
161
+ out if not using this i18n with React on Rails, or if you want to use all translation files.
162
+ MSG
163
+ raise ReactOnRails::Error, msg
164
+ end
165
+
166
+ def ensure_generated_assets_dir_present
167
+ return if generated_assets_dir.present? || ReactOnRails::WebpackerUtils.using_webpacker?
168
+
169
+ self.generated_assets_dir = DEFAULT_GENERATED_ASSETS_DIR
170
+ Rails.logger.warn "ReactOnRails: Set generated_assets_dir to default: #{DEFAULT_GENERATED_ASSETS_DIR}"
171
+ end
172
+
173
+ def configure_generated_assets_dirs_deprecation
174
+ return if generated_assets_dirs.blank?
175
+
176
+ if ReactOnRails::WebpackerUtils.using_webpacker?
177
+ webpacker_public_output_path = ReactOnRails::WebpackerUtils.webpacker_public_output_path
178
+ Rails.logger.warn "Error configuring config/initializers/react_on_rails. Define neither the "\
179
+ "generated_assets_dirs no the generated_assets_dir when using Webpacker. This is defined by "\
180
+ "public_output_path specified in webpacker.yml = #{webpacker_public_output_path}."
181
+ return
182
+ end
183
+
184
+ Rails.logger.warn "[DEPRECATION] ReactOnRails: Use config.generated_assets_dir rather than "\
185
+ "generated_assets_dirs"
186
+ if generated_assets_dir.blank?
187
+ self.generated_assets_dir = generated_assets_dirs
188
+ else
189
+ Rails.logger.warn "[DEPRECATION] ReactOnRails. You have both generated_assets_dirs and "\
190
+ "generated_assets_dir defined. Define ONLY generated_assets_dir if NOT using Webpacker"\
191
+ " and define neither if using Webpacker"
192
+ end
193
+ end
194
+
195
+ def ensure_webpack_generated_files_exists
196
+ return unless webpack_generated_files.empty?
197
+
198
+ files = ["hello-world-bundle.js"]
199
+ files << server_bundle_js_file if server_bundle_js_file.present?
200
+
201
+ self.webpack_generated_files = files
202
+ end
203
+
204
+ def ensure_server_bundle_js_file_has_no_path
205
+ return unless server_bundle_js_file.include?(File::SEPARATOR)
206
+
207
+ assets_dir = ReactOnRails::Utils.generated_assets_full_path
208
+ self.server_bundle_js_file = File.basename(server_bundle_js_file)
209
+
210
+ Rails.logger_warn do
211
+ "[DEPRECATION] ReactOnRails: remove path from server_bundle_js_file in configuration. "\
212
+ "All generated files must go in #{assets_dir}. Using file basename #{server_bundle_js_file}"
213
+ end
214
+ end
215
+
216
+ def configure_skip_display_none_deprecation
217
+ return if skip_display_none.nil?
218
+ Rails.logger.warn "[DEPRECATION] ReactOnRails: remove skip_display_none from configuration."
219
+ end
217
220
  end
218
221
  end
@@ -3,6 +3,8 @@
3
3
  # rubocop:disable: Layout/IndentHeredoc
4
4
  module ReactOnRails
5
5
  class PrerenderError < ::ReactOnRails::Error
6
+ # TODO: Consider remove providing original `err` as already have access to `self.cause`
7
+ # http://blog.honeybadger.io/nested-errors-in-ruby-with-exception-cause/
6
8
  attr_reader :component_name, :err, :props, :js_code, :console_messages
7
9
 
8
10
  # err might be nil if JS caught the error
@@ -264,7 +264,7 @@ module ReactOnRails
264
264
 
265
265
  def json_safe_and_pretty(hash_or_string)
266
266
  return "{}" if hash_or_string.nil?
267
- unless hash_or_string.class.in?([Hash, String])
267
+ unless hash_or_string.is_a?(String) || hash_or_string.is_a?(Hash)
268
268
  raise ReactOnRails::Error, "#{__method__} only accepts String or Hash as argument "\
269
269
  "(#{hash_or_string.class} given)."
270
270
  end
@@ -53,7 +53,11 @@ module ReactOnRails
53
53
  def all_compiled_assets
54
54
  @all_compiled_assets ||= begin
55
55
  webpack_generated_files = @webpack_generated_files.map do |bundle_name|
56
- ReactOnRails::Utils.bundle_js_file_path(bundle_name)
56
+ if bundle_name == ReactOnRails.configuration.server_bundle_js_file
57
+ ReactOnRails::Utils.server_bundle_js_file_path
58
+ else
59
+ ReactOnRails::Utils.bundle_js_file_path(bundle_name)
60
+ end
57
61
  end
58
62
 
59
63
  if webpack_generated_files.present?
@@ -76,8 +76,10 @@ exitstatus: #{status.exitstatus}#{stdout_msg}#{stderr_msg}
76
76
  begin
77
77
  bundle_js_file_path(bundle_name)
78
78
  rescue Webpacker::Manifest::MissingEntryError
79
- File.join(ReactOnRails::WebpackerUtils.webpacker_public_output_path,
80
- bundle_name)
79
+ File.expand_path(
80
+ File.join(ReactOnRails::WebpackerUtils.webpacker_public_output_path,
81
+ bundle_name)
82
+ )
81
83
  end
82
84
  else
83
85
  bundle_js_file_path(bundle_name)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ReactOnRails
4
- VERSION = "11.0.7".freeze
4
+ VERSION = "11.0.8".freeze
5
5
  end
@@ -2,19 +2,21 @@
2
2
 
3
3
  require_relative "version"
4
4
 
5
- class VersionSyntaxConverter
6
- def rubygem_to_npm(rubygem_version = ReactOnRails::VERSION)
7
- regex_match = rubygem_version.match(/(\d+\.\d+\.\d+)[.\-]?(.+)?/)
8
- return "#{regex_match[1]}-#{regex_match[2]}" if regex_match[2]
5
+ module ReactOnRails
6
+ class VersionSyntaxConverter
7
+ def rubygem_to_npm(rubygem_version = ReactOnRails::VERSION)
8
+ regex_match = rubygem_version.match(/(\d+\.\d+\.\d+)[.\-]?(.+)?/)
9
+ return "#{regex_match[1]}-#{regex_match[2]}" if regex_match[2]
9
10
 
10
- regex_match[1].to_s
11
- end
11
+ regex_match[1].to_s
12
+ end
12
13
 
13
- def npm_to_rubygem(npm_version)
14
- match = npm_version
15
- .tr("-", ".")
16
- .strip
17
- .match(/(\d.*)/)
18
- match.present? ? match[0] : nil
14
+ def npm_to_rubygem(npm_version)
15
+ match = npm_version
16
+ .tr("-", ".")
17
+ .strip
18
+ .match(/(\d.*)/)
19
+ match.present? ? match[0] : nil
20
+ end
19
21
  end
20
22
  end
@@ -8,12 +8,12 @@ module ReactOnRails
8
8
  # Note Webpacker 3.4.3 manifest lookup is inside of the public_output_path
9
9
  # [2] (pry) ReactOnRails::WebpackerUtils: 0> Webpacker.manifest.lookup("app-bundle.js")
10
10
  # "/webpack/development/app-bundle-c1d2b6ab73dffa7d9c0e.js"
11
+ # Next line will throw if the file or manifest does not exist
11
12
  hashed_bundle_name = Webpacker.manifest.lookup!(bundle_name)
12
13
 
13
14
  if Webpacker.dev_server.running?
14
15
  "#{Webpacker.dev_server.protocol}://#{Webpacker.dev_server.host_with_port}#{hashed_bundle_name}"
15
16
  else
16
- # Next line will throw if the file or manifest does not exist
17
17
  File.expand_path(File.join("public", hashed_bundle_name)).to_s
18
18
  end
19
19
  end
@@ -23,7 +23,7 @@ module ReactOnRails
23
23
  end
24
24
 
25
25
  def self.webpacker_public_output_path
26
- # Webpacker has the full absolute path of webpacker output files in a pathname
26
+ # Webpacker has the full absolute path of webpacker output files in a Pathname
27
27
  Webpacker.config.public_output_path.to_s
28
28
  end
29
29
 
data/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-on-rails",
3
- "version": "11.0.7",
3
+ "version": "11.0.8",
4
4
  "description": "react-on-rails JavaScript for react_on_rails Ruby gem",
5
5
  "main": "node_package/lib/ReactOnRails.js",
6
6
  "directories": {
data/rakelib/release.rake CHANGED
@@ -41,7 +41,7 @@ task :release, %i[gem_version dry_run tools_install] do |_t, args|
41
41
  npm_version = if gem_version.strip.empty?
42
42
  ""
43
43
  else
44
- VersionSyntaxConverter.new.rubygem_to_npm(gem_version)
44
+ ReactOnRails::VersionSyntaxConverter.new.rubygem_to_npm(gem_version)
45
45
  end
46
46
 
47
47
  # Having the examples prevents publishing
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: 11.0.7
4
+ version: 11.0.8
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-05-16 00:00:00.000000000 Z
11
+ date: 2018-06-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable
@@ -498,7 +498,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
498
498
  version: '0'
499
499
  requirements: []
500
500
  rubyforge_project:
501
- rubygems_version: 2.6.14
501
+ rubygems_version: 2.7.7
502
502
  signing_key:
503
503
  specification_version: 4
504
504
  summary: Rails with react server rendering with webpack.