react_on_rails 11.1.1 → 11.1.2

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
2
  SHA256:
3
- metadata.gz: 88646d6eaec039bf8e03a91804ee7062c2b95f69ee644afeacbcccbbbd00f8e0
4
- data.tar.gz: 06d46a292591e413c2167f2c1be950edd07a5da2c26165983df7334038b6e180
3
+ metadata.gz: 24362cafd62e7bf03e57b82b3fad400765ab55dda2eba19c68411f5b6599bbbe
4
+ data.tar.gz: '091f3c971b243209fb72c53723f72f2c9915533f20602b0b7d94297a1e0ffd96'
5
5
  SHA512:
6
- metadata.gz: a27e34d57bb71ec8143876947fa4df1a11a997d3f48bbe66837153efe54dd430f9e8cdd1bda24478064e4374f881478eef1de53e960a45aa66693c00f6dd1fa0
7
- data.tar.gz: 222bcabda201fd61f367fa6f26e6c7c4efb05bedfb3017df31f7913ebea654e41ee60d64c53707dd3b0b5d7ddc983083913f4df531e9034603e6283ed41fd493
6
+ metadata.gz: eccf5d97a8c77b782082d94646e5068dcf7f4f667f0efdc23bc459c5ff7b78d95750162f96bc398691825860ea8b9fe8c1f2e59cc0418a5e46d9e176ab387c91
7
+ data.tar.gz: 10bb36f5b233e5444b92a900c7e16b8b6a70b6c6a4d5d925aaa139c411ab526797d64b0ea334dc5c096143698087c3fe3699dd90b85f367b16aa6a62742f9870
data/.rubocop.yml CHANGED
@@ -8,6 +8,8 @@ AllCops:
8
8
  Include:
9
9
  - '**/Rakefile'
10
10
  - '**/config.ru'
11
+ - 'Gemfile'
12
+ - '**/*.rb'
11
13
 
12
14
  Exclude:
13
15
  - 'vendor/**/*'
data/CHANGELOG.md CHANGED
@@ -9,6 +9,16 @@ 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
+
13
+ ### [11.1.2] - 2018-08-18
14
+
15
+ #### Fixed
16
+ - Tests now properly exit if the config.build_test_command fails!
17
+ - Source path for project using Webpacker would default to "app/javascript" even if when the node_modules
18
+ directory was set to "client". Fix now makes the configuration of this crystal clear.
19
+ - renamed method RenderOptions.has_random_dom_id? to RenderOptions.random_dom_id? for rubocop rule.
20
+ [PR 1133](https://github.com/shakacode/react_on_rails/pull/1133) by [justin808](https://github.com/justin808)
21
+
12
22
  ### [11.1.1] - 2018-08-09
13
23
  #### Fixed
14
24
  - `TRUE` was deprecated in ruby 2.4, using `true` instead. [PR 1128](https://github.com/shakacode/react_on_rails/pull/1128) by [Aguardientico](https://github.com/Aguardientico).
data/README.md CHANGED
@@ -27,9 +27,10 @@ Given that rails/webpacker gem already provides basic React integration, why wou
27
27
 
28
28
  See the [react-webpack-rails-tutorial](https://github.com/shakacode/react-webpack-rails-tutorial) for an example of a live implementation and code.
29
29
 
30
-
31
30
  ## React on Rails Pro and ShakaCode Pro Support
32
31
 
32
+ ![image](https://user-images.githubusercontent.com/1118459/44008223-9b29d1b8-9e3c-11e8-90a8-9d38dc241ef9.png)
33
+
33
34
  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).
34
35
 
35
36
  The [React on Rails Pro Support Plan](http://www.shakacode.com/work/shakacode-pro-support.pdf) can help you with:
@@ -44,7 +45,6 @@ ShakaCode can also help you with your Rails, JavaScript, and React-Native develo
44
45
 
45
46
  The article [Why Hire ShakaCode?](https://blog.shakacode.com/can-shakacode-help-you-4a5b1e5a8a63#.jex6tg9w9) provides additional details about our projects.
46
47
 
47
-
48
48
  Please [email me (Justin Gordon), the creator of React on Rails](mailto:justin@shakacode.com), to see if I can help you or if you want an invite to our private Slack room for ShakaCode.
49
49
 
50
50
  ## Testimonials for Hiring ShakaCode and our "Pro Support"
@@ -1,5 +1,40 @@
1
1
  Here is the full set of config options. This file is `/config/initializers/react_on_rails.rb`
2
2
 
3
+ First, you should have a `/config/webpacker.yml` setup.
4
+
5
+ Here is the setup when using the recommended `/client` directory for your node_modules and source files:
6
+
7
+ ```yaml
8
+ # Note: Base output directory of /public is assumed for static files
9
+ default: &default
10
+ compile: false
11
+ # Used in your webpack configuration. Must be created in the
12
+ # public_output_path folder
13
+ manifest: manifest.json
14
+ cache_manifest: false
15
+ source_path: client/app
16
+
17
+ development:
18
+ <<: *default
19
+ # generated files for development, in /public/webpack/dev
20
+ public_output_path: webpack/dev
21
+
22
+ test:
23
+ <<: *default
24
+ # generated files for tests, in /public/webpack/test
25
+ public_output_path: webpack/test
26
+
27
+ production:
28
+ <<: *default
29
+ # generated files for tests, in /public/webpack/production
30
+ public_output_path: webpack/production
31
+ cache_manifest: true
32
+ ```
33
+
34
+ Here's a representative `/config/initializers/react_on_rails.rb` setup when using this `/client` directory
35
+ for all client files, including your sources and node_modules.
36
+
37
+
3
38
  ```ruby
4
39
  # frozen_string_literal: true
5
40
 
@@ -24,7 +59,7 @@ ReactOnRails.configure do |config|
24
59
 
25
60
  # defaults to "" (top level)
26
61
  #
27
- config.node_modules_location = ""
62
+ config.node_modules_location = "client" # Recommended!
28
63
 
29
64
  # This configures the script to run to build the production assets by webpack. Set this to nil
30
65
  # if you don't want react_on_rails building this file for you.
@@ -52,17 +87,18 @@ ReactOnRails.configure do |config|
52
87
  # public_output_path: packs-test
53
88
  # which means files in /public/packs-test
54
89
  #
55
- # Alternately, you may configure this. It is relative to your Rails root directory.
56
- # A custom, non-webpacker, config might use something like:
90
+ # Alternately, you may configure this if you are NOT using webpacker. It is relative to your Rails
91
+ # root directory. A custom, non-webpacker, config might use something like:
57
92
  #
58
93
  # config.generated_assets_dir = File.join(%w[public webpack], Rails.env)
59
94
  # This setting should not be used if using webpacker.
60
95
 
96
+ # CONFIGURE YOUR SOURCE FILES
61
97
  # The test helper needs to know where your JavaScript files exist. The default is configured
62
98
  # by your config/webpacker.yml soure_path:
63
- # source_path: app/javascript
99
+ # source_path: client/app/javascript # if using recommended /client directory
64
100
  #
65
- # If you have a non-default `node_modules_location`, that is assumed to be the location of your source
101
+ # If you are not using webpacker, the `node_modules_location` is assumed to be the location of your source
66
102
  # files.
67
103
 
68
104
  # Define the files we need to check for webpack compilation when running tests.
@@ -43,11 +43,18 @@ Note: you never make these calls. React on Rails makes these calls when it does
43
43
 
44
44
  (Note: see below [section](#multiple-react-components-on-a-page-with-one-store) on how to setup redux stores that allow multiple components to talk to the same store.)
45
45
 
46
- The `railsContext` has: (see implementation in file [react_on_rails_helper.rb](https://github.com/shakacode/react_on_rails/tree/master/app/helpers/react_on_rails_helper.rb), method `rails_context` for the definitive list).
46
+ The `railsContext` has: (see implementation in file [ReactOnRails::Helper](https://github.com/shakacode/react_on_rails/tree/master/lib/react_on_rails/helper.rb), method `rails_context` for the definitive list).
47
47
 
48
48
  ```ruby
49
49
  {
50
50
  railsEnv: Rails.env
51
+ inMailer: in_mailer?,
52
+ # Locale settings
53
+ i18nLocale: I18n.locale,
54
+ i18nDefaultLocale: I18n.default_locale,
55
+ rorVersion: ReactOnRails::VERSION,
56
+ rorPro: ReactOnRails::Utils.react_on_rails_pro?
57
+
51
58
  # URL settings
52
59
  href: request.original_url,
53
60
  location: "#{uri.path}#{uri.query.present? ? "?#{uri.query}": ""}",
@@ -56,6 +63,7 @@ The `railsContext` has: (see implementation in file [react_on_rails_helper.rb](h
56
63
  port: uri.port,
57
64
  pathname: uri.path, # /posts
58
65
  search: uri.query, # id=30&limit=5
66
+ httpAcceptLanguage: request.env["HTTP_ACCEPT_LANGUAGE"]
59
67
 
60
68
  # Other
61
69
  serverSide: boolean # Are we being called on the server or client? Note: if you conditionally
@@ -64,6 +72,8 @@ The `railsContext` has: (see implementation in file [react_on_rails_helper.rb](h
64
72
  }
65
73
  ```
66
74
 
75
+ Plus, you can add your customizations to this. See "rendering extension" below.
76
+
67
77
  ## Rails Context
68
78
 
69
79
  The `railsContext` is a second param passed to your generator functions for React components. This is in addition to the props that are passed from the `react_component` Rails helper. For example:
@@ -50,7 +50,7 @@ module ReactOnRails
50
50
  replacement_value = <<-STRING
51
51
  "scripts": {
52
52
  "postinstall": "yarn link react-on-rails",
53
- STRING
53
+ STRING
54
54
  new_client_package_json_contents = contents.gsub(/ {2}"scripts": {/,
55
55
  replacement_value)
56
56
  File.open(package_json, "w+") { |f| f.puts new_client_package_json_contents }
@@ -116,7 +116,7 @@ module ReactOnRails
116
116
  webpacker_public_output_path = ReactOnRails::WebpackerUtils.webpacker_public_output_path
117
117
 
118
118
  if File.expand_path(generated_assets_dir) == webpacker_public_output_path.to_s
119
- Rails.logger.warn("You specified /config/initializers/react_on_rails.rb generated_assets_dir "\
119
+ Rails.logger.warn("You specified generated_assets_dir in `config/initializers/react_on_rails.rb` "\
120
120
  "with Webpacker. Remove this line from your configuration file.")
121
121
  else
122
122
  msg = <<-MSG.strip_heredoc
@@ -36,7 +36,7 @@ module ReactOnRails
36
36
  end
37
37
  end
38
38
 
39
- def has_random_dom_id?
39
+ def random_dom_id?
40
40
  return false if options[:id]
41
41
 
42
42
  return false unless random_dom_id
@@ -77,7 +77,7 @@ module ReactOnRails
77
77
  attr_reader :options
78
78
 
79
79
  def base_dom_id
80
- "#{react_component_name}-react-component"
80
+ "#{react_component_name}-react-component"
81
81
  end
82
82
 
83
83
  def generate_unique_dom_id
@@ -75,6 +75,16 @@ module ReactOnRails
75
75
  "outdated/missing bundles based on source_path #{source_path}"
76
76
  puts
77
77
  @printed_once = true
78
+
79
+ if ReactOnRails::WebpackerUtils.using_webpacker? &&
80
+ ReactOnRails::Utils.using_webpacker_source_path_is_not_defined_and_custom_node_modules?
81
+ msg = <<-MSG.strip_heredoc
82
+ WARNING: Define config.webpacker.yml to include sourcePath to configure
83
+ the location of your JavaScript source for React on Rails.
84
+ Default location of #{source_path} is used.
85
+ MSG
86
+ puts ReactOnRails::Utils.wrap_message(msg, :orange)
87
+ end
78
88
  end
79
89
  end
80
90
 
@@ -8,7 +8,7 @@ require "active_support/core_ext/string"
8
8
 
9
9
  module ReactOnRails
10
10
  module Utils
11
- TRUNCATION_FILLER = "\n... TRUNCATED ...\n"
11
+ TRUNCATION_FILLER = "\n... TRUNCATED ...\n".freeze
12
12
 
13
13
  # https://forum.shakacode.com/t/yak-of-the-week-ruby-2-4-pathname-empty-changed-to-look-at-file-size/901
14
14
  # return object if truthy, else return nil
@@ -57,7 +57,9 @@ exitstatus: #{status.exitstatus}#{stdout_msg}#{stderr_msg}
57
57
  MSG
58
58
  # rubocop:enable Layout/IndentHeredoc
59
59
  puts wrap_message(msg)
60
- exit(1)
60
+
61
+ # Rspec catches exit without! in the exit callbacks
62
+ exit!(1)
61
63
  end
62
64
  [stdout, stderr, status]
63
65
  end
@@ -135,6 +137,13 @@ exitstatus: #{status.exitstatus}#{stdout_msg}#{stderr_msg}
135
137
  end
136
138
  end
137
139
 
140
+ def self.using_webpacker_source_path_is_not_defined_and_custom_node_modules?
141
+ return false unless ReactOnRails::WebpackerUtils.using_webpacker?
142
+
143
+ !ReactOnRails::WebpackerUtils.webpacker_source_path_explicit? &&
144
+ ReactOnRails.configuration.node_modules_location.present?
145
+ end
146
+
138
147
  def self.generated_assets_full_path
139
148
  if ReactOnRails::WebpackerUtils.using_webpacker?
140
149
  ReactOnRails::WebpackerUtils.webpacker_public_output_path
@@ -163,10 +172,10 @@ exitstatus: #{status.exitstatus}#{stdout_msg}#{stderr_msg}
163
172
 
164
173
  return str[0, 1] + TRUNCATION_FILLER if max_length == 1
165
174
 
166
- midpoint = (str.length / 2.0).ceil;
167
- to_remove = str.length - max_length;
168
- lstrip = (to_remove / 2.0).ceil;
169
- rstrip = to_remove - lstrip;
175
+ midpoint = (str.length / 2.0).ceil
176
+ to_remove = str.length - max_length
177
+ lstrip = (to_remove / 2.0).ceil
178
+ rstrip = to_remove - lstrip
170
179
  str[0..(midpoint - lstrip - 1)] + TRUNCATION_FILLER + str[(midpoint + rstrip)..-1]
171
180
  end
172
181
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ReactOnRails
4
- VERSION = "11.1.1".freeze
4
+ VERSION = "11.1.2".freeze
5
5
  end
@@ -31,6 +31,12 @@ module ReactOnRails
31
31
  Webpacker.config.public_manifest_path.exist?
32
32
  end
33
33
 
34
+ def self.webpacker_source_path_explicit?
35
+ # WARNING: Calling private method `data` on Webpacker::Configuration, lib/webpacker/configuration.rb
36
+ config_webpacker_yml = Webpacker.config.send(:data)
37
+ config_webpacker_yml[:source_path].present?
38
+ end
39
+
34
40
  def self.check_manifest_not_cached
35
41
  return unless using_webpacker? && Webpacker.config.cache_manifest?
36
42
  msg = <<-MSG.strip_heredoc
data/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-on-rails",
3
- "version": "11.1.1",
3
+ "version": "11.1.2",
4
4
  "description": "react-on-rails JavaScript for react_on_rails Ruby gem",
5
5
  "main": "node_package/lib/ReactOnRails.js",
6
6
  "directories": {
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.1.1
4
+ version: 11.1.2
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-08-09 00:00:00.000000000 Z
11
+ date: 2018-08-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable