react_on_rails 10.0.0 → 11.0.0

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 (60) hide show
  1. checksums.yaml +4 -4
  2. data/.eslintrc +4 -0
  3. data/.rubocop.yml +2 -2
  4. data/.travis.yml +3 -0
  5. data/CHANGELOG.md +81 -88
  6. data/CONTRIBUTING.md +0 -7
  7. data/Dockerfile_tests +12 -0
  8. data/Gemfile +8 -13
  9. data/NEWS.md +2 -0
  10. data/PROJECTS.md +10 -2
  11. data/README.md +137 -121
  12. data/app/helpers/react_on_rails_helper.rb +1 -533
  13. data/docker-compose.yml +11 -0
  14. data/docs/additional-reading/caching-and-performance.md +4 -0
  15. data/docs/additional-reading/capistrano-deployment.md +18 -0
  16. data/docs/additional-reading/elastic-beanstalk.md +53 -33
  17. data/docs/additional-reading/server-rendering-tips.md +4 -4
  18. data/docs/additional-reading/troubleshooting-when-using-webpacker.md +90 -0
  19. data/docs/api/ruby-api.md +7 -2
  20. data/docs/basics/configuration.md +23 -9
  21. data/docs/basics/i18n.md +4 -0
  22. data/docs/basics/upgrading-react-on-rails.md +181 -0
  23. data/docs/tutorial.md +7 -11
  24. data/lib/generators/react_on_rails/base_generator.rb +6 -3
  25. data/lib/generators/react_on_rails/dev_tests_generator.rb +1 -1
  26. data/lib/generators/react_on_rails/install_generator.rb +1 -1
  27. data/lib/generators/react_on_rails/react_no_redux_generator.rb +1 -1
  28. data/lib/generators/react_on_rails/react_with_redux_generator.rb +2 -2
  29. data/lib/generators/react_on_rails/templates/base/base/app/javascript/bundles/HelloWorld/components/HelloWorld.jsx +1 -1
  30. data/lib/generators/react_on_rails/templates/base/base/config/initializers/react_on_rails.rb +3 -2
  31. data/lib/generators/react_on_rails/templates/dev_tests/spec/simplecov_helper.rb +2 -2
  32. data/lib/react_on_rails/assets_precompile.rb +8 -4
  33. data/lib/react_on_rails/configuration.rb +34 -20
  34. data/lib/react_on_rails/error.rb +4 -0
  35. data/lib/react_on_rails/locales_to_js.rb +2 -2
  36. data/lib/react_on_rails/prerender_error.rb +2 -2
  37. data/lib/react_on_rails/react_on_rails_helper.rb +547 -0
  38. data/lib/react_on_rails/server_rendering_pool/{exec.rb → ruby_embedded_java_script.rb} +37 -40
  39. data/lib/react_on_rails/server_rendering_pool.rb +21 -10
  40. data/lib/react_on_rails/test_helper/webpack_assets_status_checker.rb +2 -2
  41. data/lib/react_on_rails/test_helper.rb +1 -1
  42. data/lib/react_on_rails/utils.rb +14 -52
  43. data/lib/react_on_rails/version.rb +1 -1
  44. data/lib/react_on_rails/version_checker.rb +33 -12
  45. data/lib/react_on_rails/webpacker_utils.rb +42 -0
  46. data/lib/react_on_rails.rb +3 -2
  47. data/package.json +2 -5
  48. data/rakelib/dummy_apps.rake +2 -1
  49. data/rakelib/example_type.rb +1 -1
  50. data/rakelib/examples.rake +3 -2
  51. data/rakelib/lint.rake +3 -2
  52. data/rakelib/node_package.rake +2 -1
  53. data/rakelib/release.rake +4 -5
  54. data/rakelib/run_rspec.rake +3 -4
  55. data/rakelib/task_helpers.rb +1 -1
  56. data/react_on_rails.gemspec +23 -13
  57. data/yarn.lock +3 -39
  58. metadata +75 -49
  59. data/lib/react_on_rails/server_rendering_pool/node.rb +0 -83
  60. data/lib/react_on_rails/test_helper/node_process_launcher.rb +0 -14
@@ -1,8 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "connection_pool"
4
- require_relative "server_rendering_pool/exec"
5
- require_relative "server_rendering_pool/node"
4
+ require_relative "server_rendering_pool/ruby_embedded_java_script"
6
5
 
7
6
  # Based on the react-rails gem.
8
7
  # None of these methods should be called directly.
@@ -10,17 +9,29 @@ require_relative "server_rendering_pool/node"
10
9
  module ReactOnRails
11
10
  module ServerRenderingPool
12
11
  class << self
12
+ def react_on_rails_pro?
13
+ @react_on_rails_pro ||= gem_available?("react_on_rails_pro")
14
+ end
15
+
13
16
  def pool
14
- if ReactOnRails.configuration.server_render_method == "NodeJS"
15
- ServerRenderingPool::Node
16
- else
17
- ServerRenderingPool::Exec
18
- end
17
+ @pool ||= if react_on_rails_pro?
18
+ ReactOnRailsPro::ServerRenderingPool::ProRendering
19
+ else
20
+ ReactOnRails::ServerRenderingPool::RubyEmbeddedJavaScript
21
+ end
19
22
  end
20
23
 
21
- # rubocop:disable Style/MethodMissing
22
- def method_missing(sym, *args, &block)
23
- pool.send sym, *args, &block
24
+ delegate :server_render_js_with_console_logging, :reset_pool_if_server_bundle_was_modified,
25
+ :reset_pool, to: :pool
26
+
27
+ private
28
+
29
+ def gem_available?(name)
30
+ Gem::Specification.find_by_name(name)
31
+ rescue Gem::LoadError
32
+ false
33
+ rescue StandardError
34
+ Gem.available?(name)
24
35
  end
25
36
  end
26
37
  end
@@ -26,8 +26,8 @@ module ReactOnRails
26
26
  end
27
27
 
28
28
  def stale_generated_webpack_files
29
- manifest_needed = ReactOnRails::Utils.using_webpacker? &&
30
- !ReactOnRails::Utils.manifest_exists?
29
+ manifest_needed = ReactOnRails::WebpackerUtils.using_webpacker? &&
30
+ !ReactOnRails::WebpackerUtils.manifest_exists?
31
31
 
32
32
  return ["manifest.json"] if manifest_needed
33
33
 
@@ -57,7 +57,7 @@ module ReactOnRails
57
57
  source_path: nil,
58
58
  generated_assets_dir: nil,
59
59
  webpack_generated_files: nil)
60
- ReactOnRails::Utils.check_manifest_not_cached
60
+ ReactOnRails::WebpackerUtils.check_manifest_not_cached
61
61
  if webpack_assets_status_checker.nil?
62
62
  source_path ||= ReactOnRails::Utils.source_path
63
63
  generated_assets_dir ||= ReactOnRails::Utils.generated_assets_dir
@@ -72,7 +72,7 @@ exitstatus: #{status.exitstatus}#{stdout_msg}#{stderr_msg}
72
72
  return @server_bundle_path if @server_bundle_path && !Rails.env.development?
73
73
 
74
74
  bundle_name = ReactOnRails.configuration.server_bundle_js_file
75
- @server_bundle_path = if using_webpacker?
75
+ @server_bundle_path = if ReactOnRails::WebpackerUtils.using_webpacker?
76
76
  begin
77
77
  bundle_js_file_path(bundle_name)
78
78
  rescue Webpacker::Manifest::MissingEntryError
@@ -85,9 +85,8 @@ exitstatus: #{status.exitstatus}#{stdout_msg}#{stderr_msg}
85
85
  end
86
86
 
87
87
  def self.bundle_js_file_path(bundle_name)
88
- if using_webpacker?
89
- return bundle_name if bundle_name == "manifest.json"
90
- bundle_js_file_path_from_webpacker(bundle_name)
88
+ if ReactOnRails::WebpackerUtils.using_webpacker? && bundle_name != "manifest.json"
89
+ ReactOnRails::WebpackerUtils.bundle_js_file_path_from_webpacker(bundle_name)
91
90
  else
92
91
  # Default to the non-hashed name in the specified output directory, which, for legacy
93
92
  # React on Rails, this is the output directory picked up by the asset pipeline.
@@ -102,9 +101,7 @@ exitstatus: #{status.exitstatus}#{stdout_msg}#{stderr_msg}
102
101
  def self.rails_version_less_than(version)
103
102
  @rails_version_less_than ||= {}
104
103
 
105
- if @rails_version_less_than.key?(version)
106
- return @rails_version_less_than[version]
107
- end
104
+ return @rails_version_less_than[version] if @rails_version_less_than.key?(version)
108
105
 
109
106
  @rails_version_less_than[version] = begin
110
107
  Gem::Version.new(Rails.version) < Gem::Version.new(version)
@@ -117,63 +114,28 @@ exitstatus: #{status.exitstatus}#{stdout_msg}#{stderr_msg}
117
114
 
118
115
  module Required
119
116
  def required(arg_name)
120
- raise ArgumentError, "#{arg_name} is required"
117
+ raise ReactOnRailsPro::Error, "#{arg_name} is required"
121
118
  end
122
119
  end
123
120
 
124
121
  def self.prepend_cd_node_modules_directory(cmd)
125
- return cmd if ReactOnRails.configuration.node_modules_location.blank?
126
- "cd #{ReactOnRails.configuration.node_modules_location} && #{cmd}"
122
+ "cd \"#{ReactOnRails.configuration.node_modules_location}\" && #{cmd}"
127
123
  end
128
124
 
129
125
  def self.source_path
130
- using_webpacker? ? webpacker_source_path : ReactOnRails.configuration.node_modules_location
126
+ if ReactOnRails::WebpackerUtils.using_webpacker?
127
+ ReactOnRails::WebpackerUtils.webpacker_source_path
128
+ else
129
+ ReactOnRails.configuration.node_modules_location
130
+ end
131
131
  end
132
132
 
133
133
  def self.generated_assets_dir
134
- using_webpacker? ? webpacker_public_output_path : ReactOnRails.configuration.generated_assets_dir
135
- end
136
-
137
- ###########################################################################
138
- # WEBPACKER WRAPPERS
139
- ###########################################################################
140
- def self.using_webpacker?
141
- ActionController::Base.helpers.respond_to?(:asset_pack_path)
142
- end
143
-
144
- def self.bundle_js_file_path_from_webpacker(bundle_name)
145
- possible_result = Webpacker.manifest.lookup(bundle_name)
146
- hashed_bundle_name = possible_result.nil? ? Webpacker.manifest.lookup!(bundle_name) : possible_result
147
- if Webpacker.dev_server.running?
148
- result = "#{Webpacker.dev_server.protocol}://#{Webpacker.dev_server.host_with_port}#{hashed_bundle_name}"
149
- result
134
+ if ReactOnRails::WebpackerUtils.using_webpacker?
135
+ ReactOnRails::WebpackerUtils.webpacker_public_output_path
150
136
  else
151
- # Next line will throw if the file or manifest does not exist
152
- Rails.root.join(File.join("public", hashed_bundle_name)).to_s
137
+ ReactOnRails.configuration.generated_assets_dir
153
138
  end
154
139
  end
155
-
156
- def self.webpacker_source_path
157
- Webpacker.config.source_path
158
- end
159
-
160
- def self.webpacker_public_output_path
161
- Webpacker.config.public_output_path
162
- end
163
-
164
- def self.manifest_exists?
165
- Webpacker.config.public_manifest_path.exist?
166
- end
167
-
168
- def self.check_manifest_not_cached
169
- return unless using_webpacker? && Webpacker.config.cache_manifest?
170
- msg = <<-MSG.strip_heredoc
171
- ERROR: you have enabled cache_manifest in the #{Rails.env} env when using the
172
- ReactOnRails::TestHelper.configure_rspec_to_compile_assets helper
173
- To fix this: edit your config/webpacker.yml file and set cache_manifest to false for test.
174
- MSG
175
- puts wrap_message(msg)
176
- exit!
177
- end
178
140
  end
179
141
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ReactOnRails
4
- VERSION = "10.0.0"
4
+ VERSION = "11.0.0".freeze
5
5
  end
@@ -22,23 +22,37 @@ module ReactOnRails
22
22
  return if node_package_version.relative_path?
23
23
  node_major_minor_patch = node_package_version.major_minor_patch
24
24
  gem_major_minor_patch = gem_major_minor_patch_version
25
- return if node_major_minor_patch[0] == gem_major_minor_patch[0] &&
26
- node_major_minor_patch[1] == gem_major_minor_patch[1] &&
27
- node_major_minor_patch[2] == gem_major_minor_patch[2]
25
+ versions_match = node_major_minor_patch[0] == gem_major_minor_patch[0] &&
26
+ node_major_minor_patch[1] == gem_major_minor_patch[1] &&
27
+ node_major_minor_patch[2] == gem_major_minor_patch[2]
28
28
 
29
- raise_differing_versions_warning
29
+ raise_differing_versions_warning unless versions_match
30
+
31
+ raise_node_semver_version_warning if node_package_version.semver_wildcard?
30
32
  end
31
33
 
32
34
  private
33
35
 
36
+ def common_error_msg
37
+ <<-MSG.strip_heredoc
38
+ Detected: #{node_package_version.raw}
39
+ gem: #{gem_version}
40
+ Ensure the installed version of the gem is the same as the version of
41
+ your installed node package. Do not use >= or ~> in your Gemfile for react_on_rails.
42
+ Do not use ^ or ~ in your package.json for react-on-rails.
43
+ Run `yarn add react-on-rails --exact` in the directory containing folder node_modules.
44
+ MSG
45
+ end
46
+
34
47
  def raise_differing_versions_warning
35
- msg = "**ERROR** ReactOnRails: ReactOnRails gem and node package versions do not match\n" \
36
- " gem: #{gem_version}\n" \
37
- " node package: #{node_package_version.raw}\n" \
38
- "Ensure the installed version of the gem is the same as the version of \n"\
39
- "your installed node package.\n"\
40
- "Run `#{ReactOnRails::Utils.prepend_cd_node_modules_directory('yarn add react-on-rails')}`"
41
- raise msg
48
+ msg = "**ERROR** ReactOnRails: ReactOnRails gem and node package versions do not match\n#{common_error_msg}"
49
+ raise ReactOnRails::Error, msg
50
+ end
51
+
52
+ def raise_node_semver_version_warning
53
+ msg = "**ERROR** ReactOnRails: Your node package version for react-on-rails contains a "\
54
+ "^ or ~\n#{common_error_msg}"
55
+ raise ReactOnRails::Error, msg
42
56
  end
43
57
 
44
58
  def gem_version
@@ -71,10 +85,14 @@ module ReactOnRails
71
85
  parsed_package_contents["dependencies"].key?("react-on-rails")
72
86
  parsed_package_contents["dependencies"]["react-on-rails"]
73
87
  else
74
- raise "no 'react-on-rails' entry in package.json dependencies"
88
+ raise ReactOnRails::Error, "No 'react-on-rails' entry in package.json dependencies"
75
89
  end
76
90
  end
77
91
 
92
+ def semver_wildcard?
93
+ raw.match(/[~^]/).present?
94
+ end
95
+
78
96
  def relative_path?
79
97
  raw.match(%r{(\.\.|\Afile:///)}).present?
80
98
  end
@@ -82,6 +100,9 @@ module ReactOnRails
82
100
  def major_minor_patch
83
101
  return if relative_path?
84
102
  match = raw.match(MAJOR_MINOR_PATCH_VERSION_REGEX)
103
+ unless match
104
+ raise ReactOnRails::Error, "Cannot parse version number '#{raw}' (wildcard versions are not supported)"
105
+ end
85
106
  [match[1], match[2], match[3]]
86
107
  end
87
108
 
@@ -0,0 +1,42 @@
1
+ module ReactOnRails
2
+ module WebpackerUtils
3
+ def self.using_webpacker?
4
+ ActionController::Base.helpers.respond_to?(:asset_pack_path)
5
+ end
6
+
7
+ def self.bundle_js_file_path_from_webpacker(bundle_name)
8
+ possible_result = Webpacker.manifest.lookup(bundle_name)
9
+ hashed_bundle_name = possible_result.nil? ? Webpacker.manifest.lookup!(bundle_name) : possible_result
10
+ if Webpacker.dev_server.running?
11
+ result = "#{Webpacker.dev_server.protocol}://#{Webpacker.dev_server.host_with_port}#{hashed_bundle_name}"
12
+ result
13
+ else
14
+ # Next line will throw if the file or manifest does not exist
15
+ Rails.root.join(File.join("public", hashed_bundle_name)).to_s
16
+ end
17
+ end
18
+
19
+ def self.webpacker_source_path
20
+ Webpacker.config.source_path
21
+ end
22
+
23
+ def self.webpacker_public_output_path
24
+ Webpacker.config.public_output_path
25
+ end
26
+
27
+ def self.manifest_exists?
28
+ Webpacker.config.public_manifest_path.exist?
29
+ end
30
+
31
+ def self.check_manifest_not_cached
32
+ return unless using_webpacker? && Webpacker.config.cache_manifest?
33
+ msg = <<-MSG.strip_heredoc
34
+ ERROR: you have enabled cache_manifest in the #{Rails.env} env when using the
35
+ ReactOnRails::TestHelper.configure_rspec_to_compile_assets helper
36
+ To fix this: edit your config/webpacker.yml file and set cache_manifest to false for test.
37
+ MSG
38
+ puts wrap_message(msg)
39
+ exit!
40
+ end
41
+ end
42
+ end
@@ -2,6 +2,8 @@
2
2
 
3
3
  require "rails"
4
4
 
5
+ require "react_on_rails/error"
6
+ require "react_on_rails/react_on_rails_helper"
5
7
  require "react_on_rails/controller"
6
8
  require "react_on_rails/version"
7
9
  require "react_on_rails/version_checker"
@@ -13,9 +15,8 @@ require "react_on_rails/version_syntax_converter"
13
15
  require "react_on_rails/test_helper"
14
16
  require "react_on_rails/git_utils"
15
17
  require "react_on_rails/utils"
16
- require "react_on_rails/test_helper"
18
+ require "react_on_rails/webpacker_utils"
17
19
  require "react_on_rails/test_helper/webpack_assets_compiler"
18
20
  require "react_on_rails/test_helper/webpack_assets_status_checker"
19
21
  require "react_on_rails/test_helper/ensure_assets_compiled"
20
- require "react_on_rails/test_helper/node_process_launcher"
21
22
  require "react_on_rails/locales_to_js"
data/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-on-rails",
3
- "version": "10.0.0",
3
+ "version": "11.0.0",
4
4
  "description": "react-on-rails JavaScript for react_on_rails Ruby gem",
5
5
  "main": "node_package/lib/ReactOnRails.js",
6
6
  "directories": {
@@ -87,8 +87,5 @@
87
87
  "url": "https://github.com/shakacode/react_on_rails/issues"
88
88
  },
89
89
  "homepage": "https://github.com/shakacode/react_on_rails#readme",
90
- "dependencies": {
91
- "react-on-rails": "^9.0.3",
92
- "react-redux": "^5.0.6"
93
- }
90
+ "dependencies": {}
94
91
  }
@@ -1,9 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative "task_helpers"
4
- include ReactOnRails::TaskHelpers
5
4
 
6
5
  namespace :dummy_apps do
6
+ include ReactOnRails::TaskHelpers
7
+
7
8
  task :yarn_install do
8
9
  yarn_install_cmd = "yarn install --mutex network"
9
10
  sh_in_dir(dummy_app_dir, yarn_install_cmd)
@@ -11,7 +11,7 @@ module ReactOnRails
11
11
  module TaskHelpers
12
12
  class ExampleType
13
13
  def self.all
14
- @example_types ||= []
14
+ @all ||= []
15
15
  end
16
16
 
17
17
  def self.namespace_name
@@ -8,10 +8,11 @@
8
8
  require "yaml"
9
9
  require_relative "example_type"
10
10
  require_relative "task_helpers"
11
- include ReactOnRails::TaskHelpers
11
+
12
12
  namespace :examples do # rubocop:disable Metrics/BlockLength
13
+ include ReactOnRails::TaskHelpers
13
14
  # Loads data from examples_config.yml and instantiates corresponding ExampleType objects
14
- examples_config_file = File.expand_path("../examples_config.yml", __FILE__)
15
+ examples_config_file = File.expand_path("examples_config.yml", __dir__)
15
16
  examples_config = symbolize_keys(YAML.safe_load(File.read(examples_config_file)))
16
17
  examples_config[:example_type_data].each { |example_type_data| ExampleType.new(symbolize_keys(example_type_data)) }
17
18
 
data/rakelib/lint.rake CHANGED
@@ -1,9 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative "task_helpers"
4
- include ReactOnRails::TaskHelpers
5
4
 
6
- namespace :lint do
5
+ namespace :lint do # rubocop:disable Metrics/BlockLength
6
+ include ReactOnRails::TaskHelpers
7
+
7
8
  desc "Run Rubocop as shell"
8
9
  task :rubocop do
9
10
  sh_in_dir(gem_root, "bundle exec rubocop .")
@@ -1,9 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative "task_helpers"
4
- include ReactOnRails::TaskHelpers
5
4
 
6
5
  namespace :node_package do
6
+ include ReactOnRails::TaskHelpers
7
+
7
8
  task :build do
8
9
  puts "Building Node Package and running 'yarn link'"
9
10
  sh "yarn run build && yarn link"
data/rakelib/release.rake CHANGED
@@ -1,11 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative "task_helpers"
4
- include ReactOnRails::TaskHelpers
5
4
  require_relative File.join(gem_root, "lib", "react_on_rails", "version_syntax_converter")
6
5
  require_relative File.join(gem_root, "lib", "react_on_rails", "git_utils")
7
6
  require_relative File.join(gem_root, "lib", "react_on_rails", "utils")
8
-
9
7
  desc("Releases both the gem and node package using the given version.
10
8
 
11
9
  IMPORTANT: the gem version must be in valid rubygem format (no dashes).
@@ -24,6 +22,8 @@ Example: `rake release[2.1.0,false]`")
24
22
 
25
23
  # rubocop:disable Metrics/BlockLength
26
24
  task :release, %i[gem_version dry_run tools_install] do |_t, args|
25
+ include ReactOnRails::TaskHelpers
26
+
27
27
  class MessageHandler
28
28
  def add_error(error)
29
29
  raise error
@@ -60,9 +60,7 @@ task :release, %i[gem_version dry_run tools_install] do |_t, args|
60
60
  sh_in_dir(gem_root, "git add .")
61
61
 
62
62
  # Will bump the yarn version, commit, tag the commit, push to repo, and release on yarn
63
- # rubocop:disable Performance/UnfreezeString
64
63
  release_it_command = "$(yarn bin)/release-it --non-interactive --npm.publish".dup
65
- # rubocop:enable Performance/UnfreezeString
66
64
  release_it_command << " --dry-run --verbose" if is_dry_run
67
65
  release_it_command << " #{npm_version}" unless npm_version.strip.empty?
68
66
  sh_in_dir(gem_root, release_it_command)
@@ -72,8 +70,9 @@ task :release, %i[gem_version dry_run tools_install] do |_t, args|
72
70
  sh_in_dir(gem_root, "gem release")
73
71
 
74
72
  # Update master with new npm version
75
- sh_in_dir(File.join(gem_root, "spec", "dummy", "client"), "yarn add react-on-rails@#{npm_version}")
73
+ sh_in_dir(File.join(gem_root, "spec", "dummy", "client"), "yarn add react-on-rails@#{npm_version} --exact")
76
74
  sh_in_dir(gem_root, "git commit -am 'Updated spec/dummy/client/package.json latest version'")
77
75
  sh_in_dir(gem_root, "git push")
78
76
  end
79
77
  end
78
+ # rubocop:enable Metrics/BlockLength
@@ -7,10 +7,10 @@ require "pathname"
7
7
  require_relative "task_helpers"
8
8
  require_relative "example_type"
9
9
 
10
- include ReactOnRails::TaskHelpers
11
-
12
10
  # rubocop:disable Metrics/BlockLength
13
11
  namespace :run_rspec do
12
+ include ReactOnRails::TaskHelpers
13
+
14
14
  spec_dummy_dir = File.join("spec", "dummy")
15
15
 
16
16
  desc "Run RSpec for top level only"
@@ -82,6 +82,7 @@ namespace :run_rspec do
82
82
  puts "Completed all RSpec tests"
83
83
  end
84
84
  end
85
+ # rubocop:enable Metrics/BlockLength
85
86
 
86
87
  desc "js tests (same as 'yarn run test')"
87
88
  task :js_tests do
@@ -119,9 +120,7 @@ def run_tests_in(dir, options = {})
119
120
 
120
121
  command_name = options.fetch(:command_name, path.basename)
121
122
  rspec_args = options.fetch(:rspec_args, "")
122
- # rubocop:disable Performance/UnfreezeString
123
123
  env_vars = "#{options.fetch(:env_vars, '')} TEST_ENV_COMMAND_NAME=\"#{command_name}\"".dup
124
- # rubocop:enable Performance/UnfreezeString
125
124
  env_vars << "COVERAGE=true" if ENV["USE_COVERALLS"]
126
125
  sh_in_dir(path.realpath, "#{env_vars} bundle exec rspec #{rspec_args}")
127
126
  end
@@ -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
 
@@ -23,28 +23,38 @@ Gem::Specification.new do |s|
23
23
  s.executables = s.files.grep(%r{^exe/}) { |f| File.basename(f) }
24
24
  s.require_paths = ["lib"]
25
25
 
26
- s.required_ruby_version = ">= 2.0.0"
26
+ s.required_ruby_version = ">= 2.1.0"
27
27
 
28
- s.add_dependency "rainbow", "~> 2.2"
28
+ s.add_dependency "addressable"
29
29
  s.add_dependency "connection_pool"
30
30
  s.add_dependency "execjs", "~> 2.5"
31
31
  s.add_dependency "rails", ">= 3.2"
32
- s.add_dependency "addressable"
32
+ s.add_dependency "rainbow", "~> 2.2"
33
33
 
34
- s.add_development_dependency "rails", "~> 5.1.2"
35
- s.add_development_dependency "bundler", "~> 1.10"
36
- s.add_development_dependency "rake", "~> 10.0"
37
- s.add_development_dependency "listen"
38
- s.add_development_dependency "rspec"
34
+ s.add_development_dependency "awesome_print"
35
+ s.add_development_dependency "bundler", "~> 1"
39
36
  s.add_development_dependency "coveralls"
37
+ s.add_development_dependency "gem-release"
40
38
  s.add_development_dependency "generator_spec"
39
+ s.add_development_dependency "listen"
41
40
  s.add_development_dependency "pry"
42
41
  s.add_development_dependency "pry-byebug"
43
- s.add_development_dependency "pry-stack_explorer"
44
42
  s.add_development_dependency "pry-doc"
43
+ s.add_development_dependency "pry-rescue"
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 "pry-rescue"
48
- s.add_development_dependency "awesome_print"
49
- s.add_development_dependency "gem-release"
47
+ s.add_development_dependency "rails", "~> 5.2"
48
+
49
+ s.add_development_dependency "rake", "~> 10.0"
50
+ s.add_development_dependency "rspec"
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
+ '
50
59
  end
60
+ # rubocop:enable Metrics/BlockLength
data/yarn.lock CHANGED
@@ -2137,10 +2137,6 @@ hoek@2.x.x:
2137
2137
  version "2.16.3"
2138
2138
  resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed"
2139
2139
 
2140
- hoist-non-react-statics@^2.2.1:
2141
- version "2.3.1"
2142
- resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.3.1.tgz#343db84c6018c650778898240135a1420ee22ce0"
2143
-
2144
2140
  home-or-tmp@^2.0.0:
2145
2141
  version "2.0.0"
2146
2142
  resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8"
@@ -2261,7 +2257,7 @@ interpret@^1.0.0:
2261
2257
  version "1.0.3"
2262
2258
  resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.3.tgz#cbc35c62eeee73f19ab7b10a801511401afc0f90"
2263
2259
 
2264
- invariant@^2.0.0, invariant@^2.2.2:
2260
+ invariant@^2.2.2:
2265
2261
  version "2.2.2"
2266
2262
  resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360"
2267
2263
  dependencies:
@@ -2449,13 +2445,6 @@ js-tokens@^3.0.0, js-tokens@^3.0.2:
2449
2445
  version "3.0.2"
2450
2446
  resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
2451
2447
 
2452
- js-yaml@^3.10.0:
2453
- version "3.10.0"
2454
- resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc"
2455
- dependencies:
2456
- argparse "^1.0.7"
2457
- esprima "^4.0.0"
2458
-
2459
2448
  js-yaml@^3.5.1:
2460
2449
  version "3.9.1"
2461
2450
  resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.9.1.tgz#08775cebdfdd359209f0d2acd383c8f86a6904a0"
@@ -2627,7 +2616,7 @@ locate-path@^2.0.0:
2627
2616
  p-locate "^2.0.0"
2628
2617
  path-exists "^3.0.0"
2629
2618
 
2630
- lodash-es@^4.2.0, lodash-es@^4.2.1:
2619
+ lodash-es@^4.2.1:
2631
2620
  version "4.17.4"
2632
2621
  resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.4.tgz#dcc1d7552e150a0640073ba9cb31d70f032950e7"
2633
2622
 
@@ -2639,7 +2628,7 @@ lodash.sortby@^4.7.0:
2639
2628
  version "4.7.0"
2640
2629
  resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
2641
2630
 
2642
- lodash@4.17.4, "lodash@>=3.5 <5", lodash@^4.0.0, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.6.1:
2631
+ lodash@4.17.4, "lodash@>=3.5 <5", lodash@^4.0.0, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.17.4, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.6.1:
2643
2632
  version "4.17.4"
2644
2633
  resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
2645
2634
 
@@ -3248,20 +3237,6 @@ react-dom@^15.6.1:
3248
3237
  object-assign "^4.1.0"
3249
3238
  prop-types "^15.5.10"
3250
3239
 
3251
- react-on-rails@^9.0.0-beta.12:
3252
- version "9.0.1"
3253
- resolved "https://registry.yarnpkg.com/react-on-rails/-/react-on-rails-9.0.1.tgz#49bf7520866214e410e6f88b298e889183d93786"
3254
- dependencies:
3255
- react-on-rails "^9.0.0-beta.12"
3256
- react-redux "^5.0.6"
3257
-
3258
- react-on-rails@^9.0.3:
3259
- version "9.0.3"
3260
- resolved "https://registry.yarnpkg.com/react-on-rails/-/react-on-rails-9.0.3.tgz#da8a9873a94d62fe91e1f80d76716583f2be9da7"
3261
- dependencies:
3262
- react-on-rails "^9.0.0-beta.12"
3263
- react-redux "^5.0.6"
3264
-
3265
3240
  react-proxy@^1.1.7:
3266
3241
  version "1.1.8"
3267
3242
  resolved "https://registry.yarnpkg.com/react-proxy/-/react-proxy-1.1.8.tgz#9dbfd9d927528c3aa9f444e4558c37830ab8c26a"
@@ -3269,17 +3244,6 @@ react-proxy@^1.1.7:
3269
3244
  lodash "^4.6.1"
3270
3245
  react-deep-force-update "^1.0.0"
3271
3246
 
3272
- react-redux@^5.0.6:
3273
- version "5.0.6"
3274
- resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-5.0.6.tgz#23ed3a4f986359d68b5212eaaa681e60d6574946"
3275
- dependencies:
3276
- hoist-non-react-statics "^2.2.1"
3277
- invariant "^2.0.0"
3278
- lodash "^4.2.0"
3279
- lodash-es "^4.2.0"
3280
- loose-envify "^1.1.0"
3281
- prop-types "^15.5.10"
3282
-
3283
3247
  react-transform-hmr@^1.0.4:
3284
3248
  version "1.0.4"
3285
3249
  resolved "https://registry.yarnpkg.com/react-transform-hmr/-/react-transform-hmr-1.0.4.tgz#e1a40bd0aaefc72e8dfd7a7cda09af85066397bb"