diff --git a/.prettierignore b/.prettierignore index 22212fcf60..3e9b4890da 100644 --- a/.prettierignore +++ b/.prettierignore @@ -19,7 +19,6 @@ spec/dummy/public *.res.js # Prettier doesn't understand ERB syntax in YAML files and can damage templates -.rubocop.yml *.yml *.yaml # Intentionally invalid diff --git a/.rubocop.yml b/.rubocop.yml new file mode 100644 index 0000000000..521d30236d --- /dev/null +++ b/.rubocop.yml @@ -0,0 +1,100 @@ +# Root RuboCop configuration for React on Rails monorepo +# This contains shared settings inherited by react_on_rails/ and react_on_rails_pro/ +require: + - rubocop-performance + - rubocop-rspec + +AllCops: + NewCops: enable + DisplayCopNames: true + SuggestExtensions: false + TargetRubyVersion: 3.0 + + Include: + - '**/Rakefile' + - '**/config.ru' + - '**/Gemfile' + - '**/*.rb' + - '**/*.rake' + + Exclude: + - '**/*.js' + - '**/node_modules/**/*' + - '**/public/**/*' + - '**/tmp/**/*' + - 'coverage/**/*' + - 'gen-examples/**/*' + - 'node_modules/**/*' + - 'spec/fixtures/**/*' + - 'spec/react_on_rails/dummy-for-generators/**/*' + - '**/vendor/**/*' + +Naming/FileName: + Exclude: + - '**/Gemfile' + - '**/Gemfile.*' + - '**/Rakefile' + +Layout/LineLength: + Max: 120 + +Style/StringLiterals: + EnforcedStyle: double_quotes + +Style/Documentation: + Enabled: false + +Style/HashEachMethods: + Enabled: true + +Style/HashTransformKeys: + Enabled: true + +Style/HashTransformValues: + Enabled: true + +Metrics/AbcSize: + Max: 28 + +Metrics/ClassLength: + Max: 150 + +Metrics/CyclomaticComplexity: + Max: 8 + +Metrics/PerceivedComplexity: + Max: 10 + +Metrics/ParameterLists: + Max: 5 + CountKeywordArgs: false + +Metrics/MethodLength: + Max: 41 + +Metrics/ModuleLength: + Max: 180 + +RSpec/DescribeClass: + Enabled: false + +RSpec/ExampleLength: + Enabled: false + +RSpec/MessageSpies: + Enabled: false + +RSpec/MessageChain: + Enabled: false + +RSpec/MultipleExpectations: + Enabled: false + +RSpec/MultipleMemoizedHelpers: + Max: 12 + +RSpec/NestedGroups: + Max: 5 + +Style/FrozenStringLiteralComment: + EnforcedStyle: always diff --git a/Gemfile.shared_dev_dependencies b/Gemfile.shared_dev_dependencies new file mode 100644 index 0000000000..6217fd3fce --- /dev/null +++ b/Gemfile.shared_dev_dependencies @@ -0,0 +1,10 @@ +# frozen_string_literal: true + +# Shared development dependencies for react_on_rails and react_on_rails_pro +# This ensures consistent versions across the monorepo + +group :development, :test do + gem "rubocop", "1.61.0", require: false + gem "rubocop-performance", "~>1.20.0", require: false + gem "rubocop-rspec", "~>2.26", require: false +end diff --git a/react_on_rails/.rubocop.yml b/react_on_rails/.rubocop.yml index 0ac427181e..b0d688cba3 100644 --- a/react_on_rails/.rubocop.yml +++ b/react_on_rails/.rubocop.yml @@ -1,36 +1,16 @@ -# This is the configuration used to check the rubocop source code. -# Check out: https://github.com/bbatsov/rubocop -require: - - rubocop-performance - - rubocop-rspec +# Inherits from root config +inherit_from: ../.rubocop.yml + +# Merge Exclude arrays with parent instead of replacing them +inherit_mode: + merge: + - Exclude AllCops: - NewCops: enable - DisplayCopNames: true - TargetRubyVersion: 3.0.0 SuggestExtensions: false - Include: - - '**/Rakefile' - - '**/config.ru' - - 'Gemfile' - - '**/*.rb' - - '**/*.rake' - Exclude: - - '**/*.js' - - '**/node_modules/**/*' - - '**/public/**/*' - - '**/tmp/**/*' - - 'coverage/**/*' - - 'gen-examples/examples/**/*' - - 'node_modules/**/*' - - '../react_on_rails_pro/**/*' # Exclude pro package (has its own linting) - 'spec/dummy/bin/*' - - 'spec/fixtures/**/*' - - 'spec/react_on_rails/dummy-for-generators/**/*' - - 'tmp/**/*' - - 'vendor/**/*' Naming/FileName: Exclude: @@ -38,24 +18,6 @@ Naming/FileName: - '**/Rakefile' - '**/Steepfile' -Layout/LineLength: - Max: 120 - -Style/StringLiterals: - EnforcedStyle: double_quotes - -Style/Documentation: - Enabled: false - -Style/HashEachMethods: - Enabled: true - -Style/HashTransformKeys: - Enabled: true - -Style/HashTransformValues: - Enabled: true - Lint/AssignmentInCondition: Exclude: - 'spec/dummy/bin/spring' @@ -66,33 +28,19 @@ Lint/SuppressedException: - 'spec/dummy/bin/rake' Metrics/AbcSize: - Max: 28 Exclude: - 'lib/generators/react_on_rails/install_generator.rb' # Generator setup methods require comprehensive error handling -Metrics/CyclomaticComplexity: - Max: 7 - -Metrics/PerceivedComplexity: - Max: 10 - Metrics/ClassLength: - Max: 150 Exclude: - 'lib/generators/react_on_rails/base_generator.rb' # Generator complexity justified - 'lib/react_on_rails/dev/server_manager.rb' # Dev tool with comprehensive help system -Metrics/ParameterLists: - Max: 5 - CountKeywordArgs: false - Metrics/MethodLength: - Max: 41 Exclude: - 'lib/generators/react_on_rails/install_generator.rb' # Generator setup methods require comprehensive error handling Metrics/ModuleLength: - Max: 180 Exclude: - 'spec/react_on_rails/engine_spec.rb' # Comprehensive engine tests require many examples @@ -107,18 +55,6 @@ RSpec/AnyInstance: - 'spec/react_on_rails/binstubs/dev_static_spec.rb' - 'spec/react_on_rails/dev/**/*_spec.rb' # Dev module tests require system mocking -RSpec/DescribeClass: - Enabled: false - -RSpec/ExampleLength: - Enabled: false - -RSpec/MessageSpies: - Enabled: false - -RSpec/NestedGroups: - Max: 4 - RSpec/BeforeAfterAll: Exclude: - 'spec/react_on_rails/generators/dev_tests_generator_spec.rb' @@ -127,19 +63,10 @@ RSpec/BeforeAfterAll: - 'spec/react_on_rails/binstubs/dev_static_spec.rb' - 'spec/react_on_rails/dev/**/*_spec.rb' # Dev module tests require global setup -RSpec/MessageChain: - Enabled: false - -RSpec/MultipleExpectations: - Enabled: false - RSpec/MultipleDescribes: Exclude: - 'spec/dummy/spec/system/integration_spec.rb' -RSpec/MultipleMemoizedHelpers: - Max: 12 - Style/GlobalVars: Exclude: - 'spec/dummy/config/environments/development.rb' @@ -156,4 +83,3 @@ RSpec/InstanceVariable: RSpec/StubbedMock: Exclude: - 'spec/react_on_rails/dev/**/*_spec.rb' # Dev module tests use mixed stub/mock patterns - diff --git a/react_on_rails/Gemfile.development_dependencies b/react_on_rails/Gemfile.development_dependencies index e883cdb93a..3f6e0524f1 100644 --- a/react_on_rails/Gemfile.development_dependencies +++ b/react_on_rails/Gemfile.development_dependencies @@ -1,5 +1,7 @@ # frozen_string_literal: true +eval_gemfile File.expand_path("../Gemfile.shared_dev_dependencies", __dir__) + gem "shakapacker", "9.4.0" gem "bootsnap", require: false gem "rails", "~> 7.1" @@ -35,9 +37,6 @@ group :development, :test do gem "pry-rescue" gem "rbs", require: false gem "steep", require: false - gem "rubocop", "1.61.0", require: false - gem "rubocop-performance", "~>1.20.0", require: false - gem "rubocop-rspec", "~>2.26", require: false gem "spring", "~> 4.0" gem "lefthook", require: false # Added for Ruby 3.5+ compatibility to silence warnings diff --git a/react_on_rails/lib/generators/react_on_rails/templates/base/base/bin/switch-bundler b/react_on_rails/lib/generators/react_on_rails/templates/base/base/bin/switch-bundler index 1ead3e3d07..21406f5a33 100755 --- a/react_on_rails/lib/generators/react_on_rails/templates/base/base/bin/switch-bundler +++ b/react_on_rails/lib/generators/react_on_rails/templates/base/base/bin/switch-bundler @@ -61,7 +61,6 @@ class BundlerSwitcher puts "✅ Updated assets_bundler to '#{@target_bundler}'" end - # rubocop:disable Metrics/CyclomaticComplexity def update_dependencies puts "📦 Updating package.json dependencies..." @@ -86,9 +85,7 @@ class BundlerSwitcher puts "✅ Removed #{@target_bundler == 'rspack' ? 'webpack' : 'rspack'} dependencies" File.write(package_json_path, JSON.pretty_generate(package_json)) end - # rubocop:enable Metrics/CyclomaticComplexity - # rubocop:disable Metrics/CyclomaticComplexity def install_dependencies puts "📥 Installing #{@target_bundler} dependencies..." @@ -123,7 +120,6 @@ class BundlerSwitcher puts "✅ Installed #{@target_bundler} dependencies" end - # rubocop:enable Metrics/CyclomaticComplexity def detect_package_manager return "yarn" if File.exist?("yarn.lock") diff --git a/react_on_rails/lib/react_on_rails/doctor.rb b/react_on_rails/lib/react_on_rails/doctor.rb index b79a8b3414..c88533aeae 100644 --- a/react_on_rails/lib/react_on_rails/doctor.rb +++ b/react_on_rails/lib/react_on_rails/doctor.rb @@ -468,7 +468,6 @@ def check_version_wildcards check_npm_wildcards end - # rubocop:disable Metrics/CyclomaticComplexity def check_gem_wildcards gemfile_path = ENV["BUNDLE_GEMFILE"] || "Gemfile" return unless File.exist?(gemfile_path) @@ -490,9 +489,7 @@ def check_gem_wildcards # Ignore errors reading Gemfile end end - # rubocop:enable Metrics/CyclomaticComplexity - # rubocop:disable Metrics/CyclomaticComplexity def check_npm_wildcards return unless File.exist?("package.json") @@ -514,7 +511,6 @@ def check_npm_wildcards # Ignore other errors end end - # rubocop:enable Metrics/CyclomaticComplexity def check_key_configuration_files files_to_check = { @@ -538,7 +534,6 @@ def check_key_configuration_files check_server_rendering_engine end - # rubocop:disable Metrics/CyclomaticComplexity def check_layout_files layout_files = Dir.glob("app/views/layouts/**/*.erb") return if layout_files.empty? @@ -565,7 +560,6 @@ def check_layout_files end end end - # rubocop:enable Metrics/CyclomaticComplexity # rubocop:disable Metrics/CyclomaticComplexity def check_server_rendering_engine @@ -603,7 +597,6 @@ def check_server_rendering_engine end # rubocop:enable Metrics/CyclomaticComplexity - # rubocop:disable Metrics/CyclomaticComplexity def check_shakapacker_configuration_details return unless File.exist?("config/shakapacker.yml") @@ -632,7 +625,6 @@ def check_shakapacker_configuration_details checker.add_warning(" ⚠️ Could not run 'rake shakapacker:info': #{e.message}") end end - # rubocop:enable Metrics/CyclomaticComplexity def check_react_on_rails_configuration_details check_react_on_rails_initializer diff --git a/react_on_rails/lib/react_on_rails/server_rendering_pool/ruby_embedded_java_script.rb b/react_on_rails/lib/react_on_rails/server_rendering_pool/ruby_embedded_java_script.rb index 34202cacd6..feb0133fbc 100644 --- a/react_on_rails/lib/react_on_rails/server_rendering_pool/ruby_embedded_java_script.rb +++ b/react_on_rails/lib/react_on_rails/server_rendering_pool/ruby_embedded_java_script.rb @@ -49,7 +49,6 @@ def reset_pool_if_server_bundle_was_modified # Note, js_code does not have to be based on React. # js_code MUST RETURN json stringify Object # Calling code will probably call 'html_safe' on return value before rendering to the view. - # rubocop:disable Metrics/CyclomaticComplexity def exec_server_render_js(js_code, render_options, js_evaluator = nil) js_evaluator ||= self if render_options.trace @@ -86,7 +85,6 @@ def exec_server_render_js(js_code, render_options, js_evaluator = nil) # We need to parse each chunk and replay the console messages. result.transform { |chunk| parse_result_and_replay_console_messages(chunk, render_options) } end - # rubocop:enable Metrics/CyclomaticComplexity def trace_js_code_used(msg, js_code, file_name = "tmp/server-generated.js", force: false) return unless ReactOnRails.configuration.trace || force diff --git a/react_on_rails/lib/react_on_rails/system_checker.rb b/react_on_rails/lib/react_on_rails/system_checker.rb index 7298127024..bffe04172d 100644 --- a/react_on_rails/lib/react_on_rails/system_checker.rb +++ b/react_on_rails/lib/react_on_rails/system_checker.rb @@ -203,7 +203,7 @@ def check_react_on_rails_npm_package add_warning("⚠️ Could not parse package.json") end - def check_package_version_sync # rubocop:disable Metrics/CyclomaticComplexity + def check_package_version_sync return unless File.exist?("package.json") begin @@ -540,7 +540,6 @@ def check_version_patterns(npm_version, gem_version) MSG end - # rubocop:disable Metrics/CyclomaticComplexity def check_gemfile_version_patterns gemfile_path = ENV["BUNDLE_GEMFILE"] || "Gemfile" return unless File.exist?(gemfile_path) @@ -571,9 +570,7 @@ def check_gemfile_version_patterns # Ignore errors reading Gemfile end end - # rubocop:enable Metrics/CyclomaticComplexity - # rubocop:disable Metrics/CyclomaticComplexity def report_dependency_versions(package_json) all_deps = package_json["dependencies"]&.merge(package_json["devDependencies"] || {}) || {} @@ -590,7 +587,6 @@ def report_dependency_versions(package_json) add_success("✅ React DOM #{react_dom_version}") end end - # rubocop:enable Metrics/CyclomaticComplexity def report_shakapacker_version return unless File.exist?("Gemfile.lock") diff --git a/react_on_rails/lib/react_on_rails/utils.rb b/react_on_rails/lib/react_on_rails/utils.rb index 4737ec621d..75c36f6469 100644 --- a/react_on_rails/lib/react_on_rails/utils.rb +++ b/react_on_rails/lib/react_on_rails/utils.rb @@ -470,7 +470,6 @@ def self.package_manager_remove_command(package_name) # # @example Absolute paths outside Rails.root (edge case) # normalize_to_relative_path("/other/path/bundles") # => "/other/path/bundles" - # rubocop:disable Metrics/CyclomaticComplexity def self.normalize_to_relative_path(path) return nil if path.nil? @@ -498,7 +497,6 @@ def self.normalize_to_relative_path(path) path_str end end - # rubocop:enable Metrics/CyclomaticComplexity def self.default_troubleshooting_section <<~DEFAULT diff --git a/react_on_rails/lib/react_on_rails/version_checker.rb b/react_on_rails/lib/react_on_rails/version_checker.rb index 6e74fe37ab..82321c00dd 100644 --- a/react_on_rails/lib/react_on_rails/version_checker.rb +++ b/react_on_rails/lib/react_on_rails/version_checker.rb @@ -338,7 +338,6 @@ def parts private # Resolve version from lockfiles if available, otherwise use package.json version - # rubocop:disable Metrics/CyclomaticComplexity def resolve_version(package_json_version, package_name) # If package.json specifies a local path or URL, don't try to resolve from lockfiles # Lockfiles may contain placeholder versions like "0.0.0" for local links @@ -359,7 +358,6 @@ def resolve_version(package_json_version, package_name) # Fall back to package.json version package_json_version end - # rubocop:enable Metrics/CyclomaticComplexity # Check if a version string represents a local path or URL def local_path_or_url_version?(version) diff --git a/react_on_rails_pro/.prettierignore b/react_on_rails_pro/.prettierignore index 7ceb1ad738..47322297f2 100644 --- a/react_on_rails_pro/.prettierignore +++ b/react_on_rails_pro/.prettierignore @@ -9,3 +9,6 @@ spec/dummy/.yalc/ # File Generated by ROR FS-based Registry **/generated + +# Prettier doesn't understand ERB in RuboCop config +.rubocop.yml diff --git a/react_on_rails_pro/.rubocop.yml b/react_on_rails_pro/.rubocop.yml index e6266070b2..37482b5596 100644 --- a/react_on_rails_pro/.rubocop.yml +++ b/react_on_rails_pro/.rubocop.yml @@ -1,111 +1,31 @@ -# This is the configuration used to check the rubocop source code. -# Check out: https://github.com/bbatsov/rubocop -require: - - rubocop-performance - - rubocop-rspec +# Inherits from root config +inherit_from: ../.rubocop.yml -AllCops: - NewCops: enable - DisplayCopNames: true - TargetRubyVersion: 3.0 - - Include: - - '**/Rakefile' - - '**/config.ru' - - 'Gemfile' - - '**/*.rb' - - '**/*.rake' +# Merge Exclude arrays with parent instead of replacing them +inherit_mode: + merge: + - Exclude +AllCops: Exclude: <% `git status --ignored --porcelain`.lines.grep(/^!! /).each do |path| %> - <%= path.sub(/^!! /, '') %> <% end %> - - '**/node_modules/**/*' - 'db/schema.rb' - 'db/seeds.rb' - - 'spec/fixtures/**/*' - 'spec/dummy/db/schema.rb' - 'spec/dummy/bin/**/*' - - 'node_modules/**/*' - - 'coverage/**/*' - 'bin/**/*' - - 'vendor/**/*' - -Naming/FileName: - Exclude: - - '**/Gemfile' - - '**/Rakefile' - -Layout/LineLength: - Max: 120 - -Style/StringLiterals: - EnforcedStyle: double_quotes - -Style/Documentation: - Enabled: false - -Style/HashEachMethods: - Enabled: true - -Style/HashTransformKeys: - Enabled: true - -Style/HashTransformValues: - Enabled: true - -Metrics/AbcSize: - Max: 28 - -Metrics/CyclomaticComplexity: - Max: 8 - -Metrics/PerceivedComplexity: - Max: 10 - -Metrics/ClassLength: - Max: 140 - -Metrics/ParameterLists: - Max: 5 - CountKeywordArgs: false - -Metrics/MethodLength: - Max: 41 - -Metrics/ModuleLength: - Max: 180 - -RSpec/DescribeClass: - Enabled: false - -RSpec/ExampleLength: - Enabled: false - -RSpec/MessageSpies: - Enabled: false - -RSpec/NestedGroups: - Max: 5 RSpec/BeforeAfterAll: Exclude: - 'spec/react_on_rails/generators/dev_tests_generator_spec.rb' - 'spec/react_on_rails/generators/install_generator_spec.rb' -RSpec/MessageChain: - Enabled: false - -RSpec/MultipleExpectations: - Enabled: false - RSpec/MultipleDescribes: Exclude: - 'spec/dummy/spec/system/integration_spec.rb' -RSpec/MultipleMemoizedHelpers: - Max: 12 - RSpec: Language: Expectations: @@ -115,6 +35,3 @@ RSpec: Style/GlobalVars: Exclude: - 'spec/dummy/config/environments/development.rb' - -Style/FrozenStringLiteralComment: - EnforcedStyle: always diff --git a/react_on_rails_pro/Gemfile.development_dependencies b/react_on_rails_pro/Gemfile.development_dependencies index 6519f1ced0..9c63e492d8 100644 --- a/react_on_rails_pro/Gemfile.development_dependencies +++ b/react_on_rails_pro/Gemfile.development_dependencies @@ -1,6 +1,9 @@ # Keep in sync with https://github.com/shakacode/react_on_rails/blob/master/Gemfile.development_dependencies # frozen_string_literal: true +# Shared dev dependencies (rubocop, etc.) +eval_gemfile File.expand_path("../Gemfile.shared_dev_dependencies", __dir__) + git_source(:github) { |repo| "https://github.com/#{repo}.git" } ruby '3.3.7' @@ -51,9 +54,6 @@ group :development, :test do gem 'pry-theme' # An easy way to customize Pry colors via theme files gem "rbs", require: false - gem "rubocop", "1.36.0", require: false - gem 'rubocop-performance', "1.15.0", require: false - gem 'rubocop-rspec', "2.13.2", require: false gem "scss_lint", require: false gem 'fakefs', require: 'fakefs/safe' end diff --git a/react_on_rails_pro/Gemfile.loader b/react_on_rails_pro/Gemfile.loader index 95de6f4b0b..eed7ee6f9a 100644 --- a/react_on_rails_pro/Gemfile.loader +++ b/react_on_rails_pro/Gemfile.loader @@ -1,19 +1,20 @@ # frozen_string_literal: true # Load base dependencies -base_deps = File.read(File.expand_path("./Gemfile.development_dependencies", __dir__)) +base_deps_path = File.expand_path("./Gemfile.development_dependencies", __dir__) +base_deps = File.read(base_deps_path) # Determine which override file to use -override_deps = if ENV["CI"] == "true" && File.exist?(File.expand_path("./Gemfile.ci", __dir__)) +override_deps_path = if ENV["CI"] == "true" && File.exist?(File.expand_path("./Gemfile.ci", __dir__)) # In CI environment, use CI dependencies - File.read(File.expand_path("./Gemfile.ci", __dir__)) + File.expand_path("./Gemfile.ci", __dir__) elsif File.exist?(File.expand_path("./Gemfile.local", __dir__)) # In non-CI environment, use local dependencies if they exist - File.read(File.expand_path("./Gemfile.local", __dir__)) -else - "" + File.expand_path("./Gemfile.local", __dir__) end +override_deps = override_deps_path ? File.read(override_deps_path) : "" + # Parse override gems override_gem_names = override_deps.scan(/^\s*gem\s+["']([^"']+)["']/).flatten @@ -26,7 +27,9 @@ end base_deps.gsub!(/^\s*$\n/, '') # Evaluate the modified base dependencies -eval(base_deps) +# Using instance_eval with filepath preserves __dir__ in evaluated content, +# allowing eval_gemfile calls to work correctly inside loaded files. +instance_eval(base_deps, base_deps_path) # Evaluate override dependencies if they exist -eval(override_deps) unless override_deps.empty? +instance_eval(override_deps, override_deps_path) unless override_deps.empty? diff --git a/react_on_rails_pro/Gemfile.lock b/react_on_rails_pro/Gemfile.lock index 457ddd06f3..212ba91bd0 100644 --- a/react_on_rails_pro/Gemfile.lock +++ b/react_on_rails_pro/Gemfile.lock @@ -110,7 +110,7 @@ GEM addressable (2.8.8) public_suffix (>= 2.0.2, < 8.0) amazing_print (1.6.0) - ast (2.4.2) + ast (2.4.3) async (2.35.0) console (~> 1.29) fiber-annotation @@ -208,6 +208,7 @@ GEM json (2.17.1) jwt (2.10.2) base64 + language_server-protocol (3.17.0.5) launchy (3.0.1) addressable (~> 2.8) childprocess (~> 5.0) @@ -252,14 +253,15 @@ GEM nokogiri (1.18.10-x86_64-linux-gnu) racc (~> 1.4) package_json (0.2.0) - parallel (1.25.1) - parser (3.3.3.0) + parallel (1.27.0) + parser (3.3.10.0) ast (~> 2.4.1) racc pg (1.5.6) pp (0.6.3) prettyprint prettyprint (0.2.0) + prism (1.6.0) protocol (2.0.0) ruby_parser (~> 3.0) pry (0.14.2) @@ -356,23 +358,34 @@ GEM rspec-support (3.13.1) rspec_junit_formatter (0.6.0) rspec-core (>= 2, < 4, != 2.12.0) - rubocop (1.36.0) + rubocop (1.61.0) json (~> 2.3) + language_server-protocol (>= 3.17.0) parallel (~> 1.10) - parser (>= 3.1.2.1) + parser (>= 3.3.0.2) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 1.8, < 3.0) rexml (>= 3.2.5, < 4.0) - rubocop-ast (>= 1.20.1, < 2.0) + rubocop-ast (>= 1.30.0, < 2.0) ruby-progressbar (~> 1.7) - unicode-display_width (>= 1.4.0, < 3.0) - rubocop-ast (1.31.3) - parser (>= 3.3.1.0) - rubocop-performance (1.15.0) - rubocop (>= 1.7.0, < 2.0) - rubocop-ast (>= 0.4.0) - rubocop-rspec (2.13.2) - rubocop (~> 1.33) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.48.0) + parser (>= 3.3.7.2) + prism (~> 1.4) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-factory_bot (2.26.1) + rubocop (~> 1.61) + rubocop-performance (1.20.2) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.30.0, < 2.0) + rubocop-rspec (2.31.0) + rubocop (~> 1.40) + rubocop-capybara (~> 2.17) + rubocop-factory_bot (~> 2.22) + rubocop-rspec_rails (~> 2.28) + rubocop-rspec_rails (2.29.1) + rubocop (~> 1.61) ruby-progressbar (1.13.0) ruby_parser (3.21.0) racc (~> 1.5) @@ -402,7 +415,7 @@ GEM websocket (~> 1.0) semantic_range (3.1.0) sexp_processor (4.17.1) - shakapacker (9.3.0) + shakapacker (9.4.0) activesupport (>= 5.2) package_json rack-proxy (>= 0.6.1) @@ -447,7 +460,7 @@ GEM concurrent-ruby (~> 1.0) uglifier (4.2.0) execjs (>= 0.3.0, < 3) - unicode-display_width (2.5.0) + unicode-display_width (2.6.0) uri (1.0.3) useragent (0.16.11) web-console (4.2.1) @@ -513,13 +526,13 @@ DEPENDENCIES rspec-rails rspec-retry rspec_junit_formatter - rubocop (= 1.36.0) - rubocop-performance (= 1.15.0) - rubocop-rspec (= 2.13.2) + rubocop (= 1.61.0) + rubocop-performance (~> 1.20.0) + rubocop-rspec (~> 2.26) sass-rails scss_lint selenium-webdriver (= 4.9.0) - shakapacker (= 9.3.0) + shakapacker (= 9.4.0) spring spring-watcher-listen sprockets diff --git a/react_on_rails_pro/spec/dummy/Gemfile.lock b/react_on_rails_pro/spec/dummy/Gemfile.lock index 924ddc136b..deb41b9b28 100644 --- a/react_on_rails_pro/spec/dummy/Gemfile.lock +++ b/react_on_rails_pro/spec/dummy/Gemfile.lock @@ -108,7 +108,6 @@ GEM addressable (2.8.7) public_suffix (>= 2.0.2, < 7.0) amazing_print (1.6.0) - ast (2.4.2) async (2.34.0) console (~> 1.29) fiber-annotation @@ -272,10 +271,6 @@ GEM nokogiri (1.18.10-x86_64-linux-musl) racc (~> 1.4) package_json (0.2.0) - parallel (1.25.1) - parser (3.3.3.0) - ast (~> 2.4.1) - racc pg (1.5.6) pp (0.6.3) prettyprint @@ -380,24 +375,6 @@ GEM rspec-support (3.13.1) rspec_junit_formatter (0.6.0) rspec-core (>= 2, < 4, != 2.12.0) - rubocop (1.36.0) - json (~> 2.3) - parallel (~> 1.10) - parser (>= 3.1.2.1) - rainbow (>= 2.2.2, < 4.0) - regexp_parser (>= 1.8, < 3.0) - rexml (>= 3.2.5, < 4.0) - rubocop-ast (>= 1.20.1, < 2.0) - ruby-progressbar (~> 1.7) - unicode-display_width (>= 1.4.0, < 3.0) - rubocop-ast (1.31.3) - parser (>= 3.3.1.0) - rubocop-performance (1.15.0) - rubocop (>= 1.7.0, < 2.0) - rubocop-ast (>= 0.4.0) - rubocop-rspec (2.13.2) - rubocop (~> 1.33) - ruby-progressbar (1.13.0) ruby_parser (3.21.0) racc (~> 1.5) sexp_processor (~> 4.16) @@ -476,7 +453,6 @@ GEM concurrent-ruby (~> 1.0) uglifier (4.2.0) execjs (>= 0.3.0, < 3) - unicode-display_width (2.5.0) uri (1.0.3) useragent (0.16.11) web-console (4.2.1) @@ -555,9 +531,6 @@ DEPENDENCIES rspec-rails rspec-retry rspec_junit_formatter - rubocop (= 1.36.0) - rubocop-performance (= 1.15.0) - rubocop-rspec (= 2.13.2) sass-rails scss_lint selenium-webdriver (= 4.9.0) diff --git a/react_on_rails_pro/spec/dummy/spec/prepare_node_renderer_bundles_spec.rb b/react_on_rails_pro/spec/dummy/spec/prepare_node_renderer_bundles_spec.rb index d1674ae0f4..58ac3a2a00 100644 --- a/react_on_rails_pro/spec/dummy/spec/prepare_node_renderer_bundles_spec.rb +++ b/react_on_rails_pro/spec/dummy/spec/prepare_node_renderer_bundles_spec.rb @@ -2,7 +2,7 @@ require "rails_helper" -describe ReactOnRailsPro::PrepareNodeRenderBundles do # rubocop:disable RSpec/FilePath +describe ReactOnRailsPro::PrepareNodeRenderBundles do # rubocop:disable RSpec/FilePath,RSpec/SpecFilePathFormat let(:asset_filename) { "loadable-stats2.json" } let(:asset_filename2) { "loadable-stats3.json" } let(:fixture_path) { File.expand_path("./spec/fixtures/#{asset_filename}") } diff --git a/react_on_rails_pro/spec/dummy/spec/rails_helper.rb b/react_on_rails_pro/spec/dummy/spec/rails_helper.rb index 8317cde836..3eb83a0eca 100644 --- a/react_on_rails_pro/spec/dummy/spec/rails_helper.rb +++ b/react_on_rails_pro/spec/dummy/spec/rails_helper.rb @@ -126,11 +126,11 @@ Rack::Handler::Puma.run(app, Port: port) end - config.before(:each, type: :system, js: true) do + config.before(:each, :js, type: :system) do driven_by driver end - config.before(:each, type: :system, rack_test: true) do + config.before(:each, :rack_test, type: :system) do driven_by :rack_test end diff --git a/react_on_rails_pro/spec/dummy/spec/system/integration_spec.rb b/react_on_rails_pro/spec/dummy/spec/system/integration_spec.rb index bc8fb4a8db..de7567f059 100644 --- a/react_on_rails_pro/spec/dummy/spec/system/integration_spec.rb +++ b/react_on_rails_pro/spec/dummy/spec/system/integration_spec.rb @@ -432,7 +432,7 @@ def change_text_expect_dom_selector(dom_selector, expect_no_change: false) "#ServerComponentRouter-react-component-0" # Skip the test that fails without JavaScript - being addressed in another PR - it "renders the page completely on server and displays content on client even without JavaScript", # rubocop:disable RSpec/NoExpectationExample + it "renders the page completely on server and displays content on client even without JavaScript", skip: "Being addressed in another PR" do # This test is overridden to skip it end