Skip to content

Commit 4d65d9e

Browse files
ihabadhamclaude
andcommitted
Address CodeRabbit review comments
Fix duplicate dependency installations: - Track package_json vs direct install usage to prevent duplicate installs - Only run bulk install when package_json was used and no direct installs occurred - Avoids multiple npm install commands for the same dependencies Fix GeneratorMessages handling: - Remove GeneratorMessages.output.clear to preserve important warnings/errors - Redux generator now appends messages instead of clearing previous ones - Prevents loss of Shakapacker warnings and other installation messages 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 5219afe commit 4d65d9e

File tree

2 files changed

+24
-7
lines changed

2 files changed

+24
-7
lines changed

lib/generators/react_on_rails/install_generator.rb

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,10 @@ def invoke_generators
8383
end
8484

8585
def setup_react_dependencies
86+
@added_dependencies_to_package_json ||= false
87+
@ran_direct_installs ||= false
8688
add_js_dependencies
87-
install_js_dependencies
89+
install_js_dependencies if @added_dependencies_to_package_json && !@ran_direct_installs
8890
end
8991

9092
# NOTE: other requirements for existing files such as .gitignore or application.
@@ -438,10 +440,14 @@ def add_react_on_rails_package
438440
end
439441

440442
puts "Installing React on Rails package..."
441-
return if add_npm_dependencies(react_on_rails_pkg)
443+
if add_npm_dependencies(react_on_rails_pkg)
444+
@added_dependencies_to_package_json = true
445+
return
446+
end
442447

443448
puts "Using direct npm commands as fallback"
444449
success = system("npm", "install", *react_on_rails_pkg)
450+
@ran_direct_installs = true if success
445451
handle_npm_failure("react-on-rails package", react_on_rails_pkg) unless success
446452
end
447453

@@ -455,9 +461,13 @@ def add_react_dependencies
455461
babel-plugin-transform-react-remove-prop-types
456462
babel-plugin-macros
457463
]
458-
return if add_npm_dependencies(react_deps)
464+
if add_npm_dependencies(react_deps)
465+
@added_dependencies_to_package_json = true
466+
return
467+
end
459468

460469
success = system("npm", "install", *react_deps)
470+
@ran_direct_installs = true if success
461471
handle_npm_failure("React dependencies", react_deps) unless success
462472
end
463473

@@ -469,9 +479,13 @@ def add_css_dependencies
469479
mini-css-extract-plugin
470480
style-loader
471481
]
472-
return if add_npm_dependencies(css_deps)
482+
if add_npm_dependencies(css_deps)
483+
@added_dependencies_to_package_json = true
484+
return
485+
end
473486

474487
success = system("npm", "install", *css_deps)
488+
@ran_direct_installs = true if success
475489
handle_npm_failure("CSS dependencies", css_deps) unless success
476490
end
477491

@@ -481,9 +495,13 @@ def add_dev_dependencies
481495
@pmmmwh/react-refresh-webpack-plugin
482496
react-refresh
483497
]
484-
return if add_npm_dependencies(dev_deps, dev: true)
498+
if add_npm_dependencies(dev_deps, dev: true)
499+
@added_dependencies_to_package_json = true
500+
return
501+
end
485502

486503
success = system("npm", "install", "--save-dev", *dev_deps)
504+
@ran_direct_installs = true if success
487505
handle_npm_failure("development dependencies", dev_deps, dev: true) unless success
488506
end
489507

lib/generators/react_on_rails/react_with_redux_generator.rb

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,7 @@ def add_redux_npm_dependencies
9090
end
9191

9292
def add_redux_specific_messages
93-
# Override the generic messages with Redux-specific instructions
94-
GeneratorMessages.output.clear
93+
# Append Redux-specific post-install instructions
9594
GeneratorMessages.add_info(
9695
GeneratorMessages.helpful_message_after_installation(component_name: "HelloWorldApp", route: "hello_world")
9796
)

0 commit comments

Comments
 (0)