From 55b820a0fe5931acacb90d3700d1435185f4c6fa Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Sun, 21 Sep 2025 13:14:54 -1000 Subject: [PATCH 1/9] Add centralized help and support messaging system MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Extract help section from README.md into reusable component - Add Utils method to extract troubleshooting section dynamically - Update error handling in generate_packs task with colored output - Ensure help message updates when README.md changes šŸ¤– Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- README.md | 26 +++++++++++-------- lib/react_on_rails/utils.rb | 48 +++++++++++++++++++++++++++++++++++ lib/tasks/generate_packs.rake | 24 ++++++++++++++---- 3 files changed, 83 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 3f3835d561..47335386fa 100644 --- a/README.md +++ b/README.md @@ -140,16 +140,22 @@ _Requires creating a free account._ - Node.js >= 20 (CI tested: 20 - 22) - A JavaScript package manager (npm, yarn, pnpm, or bun) -# Support - -- [Click to join **React + Rails Slack**](https://join.slack.com/t/reactrails/shared_invite/zt-38oicm9d0-OO0V~bdg4aYNuZuUbRFSXg). - -- [**Subscribe**](https://app.mailerlite.com/webforms/landing/l1d9x5) for announcements of new releases of React on Rails and of our latest [blog articles](https://blog.shakacode.com) and tutorials. -- [Discussions](https://github.com/shakacode/react_on_rails/discussions): Post your questions regarding React on Rails -- **[forum.shakacode.com](https://forum.shakacode.com)**: Other discussions -- **[@railsonmaui on Twitter](https://twitter.com/railsonmaui)** -- _See [NEWS.md](https://github.com/shakacode/react_on_rails/tree/master/NEWS.md) for more notes over time._ -- See [Projects](https://github.com/shakacode/react_on_rails/tree/master/PROJECTS.md) using and [KUDOS](https://github.com/shakacode/react_on_rails/tree/master/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. + +# šŸ†˜ Get Help & Support + +**Need immediate help?** Here are your options, ordered by response time: + +- šŸš€ **Professional Support**: [react_on_rails@shakacode.com](mailto:react_on_rails@shakacode.com) - Fastest resolution for bugs, upgrades, and consulting +- šŸ’¬ **React + Rails Slack**: [Join our community](https://invite.reactrails.com) - Chat with other developers +- šŸ†“ **GitHub Issues**: [Report bugs](https://github.com/shakacode/react_on_rails/issues) - Community support +- šŸ“– **Discussions**: [Ask questions](https://github.com/shakacode/react_on_rails/discussions) - General help + +**Additional Resources:** +- [**Subscribe**](https://app.mailerlite.com/webforms/landing/l1d9x5) for announcements of new releases and tutorials +- **[forum.shakacode.com](https://forum.shakacode.com)** - Development discussions +- **[@railsonmaui on Twitter](https://twitter.com/railsonmaui)** - Updates and tips +- [Projects using React on Rails](https://github.com/shakacode/react_on_rails/tree/master/PROJECTS.md) - Submit yours! + ## Contributing diff --git a/lib/react_on_rails/utils.rb b/lib/react_on_rails/utils.rb index 3243ab473d..f0558f7855 100644 --- a/lib/react_on_rails/utils.rb +++ b/lib/react_on_rails/utils.rb @@ -278,5 +278,53 @@ def self.prepend_to_file_if_text_not_present(file:, text_to_prepend:, regex:) puts "Prepended\n#{text_to_prepend}to #{file}." end + + # Extract troubleshooting section from README.md for error messages + def self.extract_troubleshooting_section + readme_path = File.join(gem_root, "README.md") + return default_troubleshooting_section unless File.exist?(readme_path) + + readme_content = File.read(readme_path) + + # Extract content between the markers + start_marker = "" + end_marker = "" + + if readme_content.include?(start_marker) && readme_content.include?(end_marker) + start_pos = readme_content.index(start_marker) + start_marker.length + end_pos = readme_content.index(end_marker) + + extracted = readme_content[start_pos...end_pos].strip + # Convert markdown to terminal-friendly text + convert_markdown_to_terminal(extracted) + else + default_troubleshooting_section + end + rescue StandardError + default_troubleshooting_section + end + + private_class_method def self.convert_markdown_to_terminal(markdown_text) + markdown_text + .gsub(/^#\s+(.+)$/, "\nšŸ“ž \\1") # Convert # headers + .gsub(/\*\*(.+?)\*\*/, "\\1") # Remove bold markdown + .gsub(/\[([^\]]+)\]\([^)]+\)/, "\\1") # Convert links to just text + .gsub(/^-\s+/, " • ") # Convert bullets + .gsub(/šŸš€\s+\*\*Professional Support\*\*/, "šŸš€ Professional Support") # Clean up specific formatting + end + + private_class_method def self.default_troubleshooting_section + <<~DEFAULT + šŸ“ž Get Help & Support: + • šŸš€ Professional Support: react_on_rails@shakacode.com (fastest resolution) + • šŸ’¬ React + Rails Slack: https://invite.reactrails.com + • šŸ†“ GitHub Issues: https://github.com/shakacode/react_on_rails/issues + • šŸ“– Discussions: https://github.com/shakacode/react_on_rails/discussions + DEFAULT + end + + private_class_method def self.gem_root + File.expand_path("../..", __dir__) + end end end diff --git a/lib/tasks/generate_packs.rake b/lib/tasks/generate_packs.rake index 355abb5565..933911eafa 100644 --- a/lib/tasks/generate_packs.rake +++ b/lib/tasks/generate_packs.rake @@ -123,6 +123,24 @@ namespace :react_on_rails do puts Rainbow("=" * 80).red end + def show_help_and_support + puts "" + troubleshooting_content = ReactOnRails::Utils.extract_troubleshooting_section + # Display the troubleshooting content with color formatting + troubleshooting_content.split("\n").each do |line| + case line + when /^šŸ“ž/ + puts Rainbow(line).magenta.bold + when /^\s*•\s*šŸš€/ + puts Rainbow(line).yellow + when /^\s*•/ + puts Rainbow(line).cyan + else + puts Rainbow(line).white unless line.strip.empty? + end + end + end + # rubocop:disable Metrics/AbcSize def handle_standard_error(error) puts "" @@ -142,11 +160,7 @@ namespace :react_on_rails do puts Rainbow(" 2. Check Rails logs: tail -f log/development.log").white puts Rainbow(" 3. Verify all dependencies are installed: bundle install && npm install").white puts Rainbow(" 4. Clear cache: rm -rf tmp/cache").white - puts "" - puts Rainbow("šŸ“ž GET HELP:").magenta.bold - puts Rainbow(" • Create an issue: https://github.com/shakacode/react_on_rails/issues").cyan - puts Rainbow(" • Community discussions: https://github.com/shakacode/react_on_rails/discussions").cyan - puts Rainbow(" • Professional support: https://www.shakacode.com/react-on-rails-pro").cyan + show_help_and_support puts Rainbow("=" * 80).red end # rubocop:enable Metrics/AbcSize From 2c67f41e4eab9e083ec5a6c7271e96064d6a723e Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Sun, 21 Sep 2025 13:17:51 -1000 Subject: [PATCH 2/9] Add help message to fatal error output MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Show troubleshooting section when invoke_and_exit_if_failed encounters errors šŸ¤– Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- lib/react_on_rails/utils.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/react_on_rails/utils.rb b/lib/react_on_rails/utils.rb index f0558f7855..298e35e1a4 100644 --- a/lib/react_on_rails/utils.rb +++ b/lib/react_on_rails/utils.rb @@ -57,6 +57,8 @@ def self.invoke_and_exit_if_failed(cmd, failure_message) MSG puts wrap_message(msg) + puts "" + puts extract_troubleshooting_section # Rspec catches exit without! in the exit callbacks exit!(1) From 8e1875d982e4709e9d4842f0a1823983061b4173 Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Sun, 21 Sep 2025 18:00:33 -1000 Subject: [PATCH 3/9] Add help messages to additional error classes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Display support and troubleshooting links in more error scenarios: - PrerenderError: Shows help when server rendering fails - JsonParseError: Shows help when JSON parsing fails - Server rendering pool errors: Shows help for bundle compilation and evaluation errors This ensures users see helpful support information regardless of the error type they encounter. šŸ¤– Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- lib/react_on_rails/json_parse_error.rb | 3 ++- lib/react_on_rails/prerender_error.rb | 4 ++++ .../server_rendering_pool/ruby_embedded_java_script.rb | 10 ++++++---- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/lib/react_on_rails/json_parse_error.rb b/lib/react_on_rails/json_parse_error.rb index dbdf9fa8ca..48567b75c5 100644 --- a/lib/react_on_rails/json_parse_error.rb +++ b/lib/react_on_rails/json_parse_error.rb @@ -7,7 +7,8 @@ class JsonParseError < ::ReactOnRails::Error def initialize(parse_error:, json:) @json = json @original_error = parse_error - super(parse_error.message) + message = "#{parse_error.message}\n\n#{Utils.extract_troubleshooting_section}" + super(message) end def to_honeybadger_context diff --git a/lib/react_on_rails/prerender_error.rb b/lib/react_on_rails/prerender_error.rb index 096fae6db6..8af4d3418d 100644 --- a/lib/react_on_rails/prerender_error.rb +++ b/lib/react_on_rails/prerender_error.rb @@ -83,6 +83,10 @@ def calc_message(component_name, console_messages, err, js_code, props) MSG end + + # Add help and support information + message << "\n#{Utils.extract_troubleshooting_section}\n" + [backtrace, message] end end diff --git a/lib/react_on_rails/server_rendering_pool/ruby_embedded_java_script.rb b/lib/react_on_rails/server_rendering_pool/ruby_embedded_java_script.rb index bc7a7b8130..119ae4f258 100644 --- a/lib/react_on_rails/server_rendering_pool/ruby_embedded_java_script.rb +++ b/lib/react_on_rails/server_rendering_pool/ruby_embedded_java_script.rb @@ -77,6 +77,7 @@ def exec_server_render_js(js_code, render_options, js_evaluator = nil) if err.message.include?("ReferenceError: self is not defined") msg << "\nError indicates that you may have code-splitting incorrectly enabled.\n" end + msg << "\n#{Utils.extract_troubleshooting_section}\n" raise ReactOnRails::Error, msg, err.backtrace end @@ -122,7 +123,7 @@ def read_bundle_js_code rescue StandardError => e msg = "You specified server rendering JS file: #{server_js_file}, but it cannot be " \ "read. You may set the server_bundle_js_file in your configuration to be \"\" to " \ - "avoid this warning.\nError is: #{e}" + "avoid this warning.\nError is: #{e}\n\n#{Utils.extract_troubleshooting_section}" raise ReactOnRails::Error, msg end @@ -149,11 +150,12 @@ def create_js_context msg = "ERROR when compiling base_js_code! " \ "See file #{file_name} to " \ "correlate line numbers of error. Error is\n\n#{e.message}" \ - "\n\n#{e.backtrace.join("\n")}" + "\n\n#{e.backtrace.join("\n")}" \ + "\n\n#{Utils.extract_troubleshooting_section}" Rails.logger.error(msg) trace_js_code_used("Error when compiling JavaScript code for the context.", base_js_code, file_name, force: true) - raise e + raise ReactOnRails::Error, msg end end @@ -227,7 +229,7 @@ def file_url_to_string(url) encoding_type = match[:encoding] response.body.force_encoding(encoding_type) rescue StandardError => e - msg = "file_url_to_string #{url} failed\nError is: #{e}" + msg = "file_url_to_string #{url} failed\nError is: #{e}\n\n#{Utils.extract_troubleshooting_section}" raise ReactOnRails::Error, msg end From e7a3b6a0257a732d19999cbdb6d971a6218b4cda Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Sun, 21 Sep 2025 18:05:37 -1000 Subject: [PATCH 4/9] Improve markdown-to-terminal conversion to preserve URLs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Update convert_markdown_to_terminal to preserve URLs in links - Changed link conversion from "[text](url)" to "text: url" format - Headers (H1-H6) now properly converted with emoji prefix - Removed redundant Professional Support cleanup - Add documentation comment to README.md explaining marker usage This ensures users can access actual URLs in error messages, making support resources more accessible. šŸ¤– Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- README.md | 1 + lib/react_on_rails/utils.rb | 9 ++++----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 47335386fa..f64a810687 100644 --- a/README.md +++ b/README.md @@ -141,6 +141,7 @@ _Requires creating a free account._ - A JavaScript package manager (npm, yarn, pnpm, or bun) + # šŸ†˜ Get Help & Support **Need immediate help?** Here are your options, ordered by response time: diff --git a/lib/react_on_rails/utils.rb b/lib/react_on_rails/utils.rb index 298e35e1a4..78317bfb29 100644 --- a/lib/react_on_rails/utils.rb +++ b/lib/react_on_rails/utils.rb @@ -308,11 +308,10 @@ def self.extract_troubleshooting_section private_class_method def self.convert_markdown_to_terminal(markdown_text) markdown_text - .gsub(/^#\s+(.+)$/, "\nšŸ“ž \\1") # Convert # headers - .gsub(/\*\*(.+?)\*\*/, "\\1") # Remove bold markdown - .gsub(/\[([^\]]+)\]\([^)]+\)/, "\\1") # Convert links to just text - .gsub(/^-\s+/, " • ") # Convert bullets - .gsub(/šŸš€\s+\*\*Professional Support\*\*/, "šŸš€ Professional Support") # Clean up specific formatting + .gsub(/^#+\s+(.+)$/, "\nšŸ“ž \\1") # Convert H1-H6 headers + .gsub(/\*\*(.+?)\*\*/, "\\1") # Remove bold markdown + .gsub(/\[([^\]]+)\]\(([^)]+)\)/, "\\1: \\2") # Convert links to "text: url" + .gsub(/^-\s+/, " • ") # Convert bullets end private_class_method def self.default_troubleshooting_section From 8976d09b2b7c2901133e205f6eea509448026184 Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Sun, 21 Sep 2025 19:08:28 -1000 Subject: [PATCH 5/9] Simplify help message system - use hardcoded message MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Remove dynamic extraction from README.md and use a consistent hardcoded help message throughout the codebase. The markdown-to-terminal conversion proved too fragile for reliable use. - Remove extract_troubleshooting_section and related helper methods - Update all error classes to use Utils.default_troubleshooting_section - Remove documentation comment about marker usage from README - Keep the well-formatted hardcoded support message with URLs This provides a more reliable and maintainable approach to displaying help information in error messages. šŸ¤– Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- README.md | 1 - lib/react_on_rails/json_parse_error.rb | 2 +- lib/react_on_rails/prerender_error.rb | 2 +- .../ruby_embedded_java_script.rb | 8 ++-- lib/react_on_rails/utils.rb | 41 +------------------ 5 files changed, 8 insertions(+), 46 deletions(-) diff --git a/README.md b/README.md index f64a810687..47335386fa 100644 --- a/README.md +++ b/README.md @@ -141,7 +141,6 @@ _Requires creating a free account._ - A JavaScript package manager (npm, yarn, pnpm, or bun) - # šŸ†˜ Get Help & Support **Need immediate help?** Here are your options, ordered by response time: diff --git a/lib/react_on_rails/json_parse_error.rb b/lib/react_on_rails/json_parse_error.rb index 48567b75c5..5d9f5d79d0 100644 --- a/lib/react_on_rails/json_parse_error.rb +++ b/lib/react_on_rails/json_parse_error.rb @@ -7,7 +7,7 @@ class JsonParseError < ::ReactOnRails::Error def initialize(parse_error:, json:) @json = json @original_error = parse_error - message = "#{parse_error.message}\n\n#{Utils.extract_troubleshooting_section}" + message = "#{parse_error.message}\n\n#{Utils.default_troubleshooting_section}" super(message) end diff --git a/lib/react_on_rails/prerender_error.rb b/lib/react_on_rails/prerender_error.rb index 8af4d3418d..5014923adc 100644 --- a/lib/react_on_rails/prerender_error.rb +++ b/lib/react_on_rails/prerender_error.rb @@ -85,7 +85,7 @@ def calc_message(component_name, console_messages, err, js_code, props) end # Add help and support information - message << "\n#{Utils.extract_troubleshooting_section}\n" + message << "\n#{Utils.default_troubleshooting_section}\n" [backtrace, message] end diff --git a/lib/react_on_rails/server_rendering_pool/ruby_embedded_java_script.rb b/lib/react_on_rails/server_rendering_pool/ruby_embedded_java_script.rb index 119ae4f258..666a3311ac 100644 --- a/lib/react_on_rails/server_rendering_pool/ruby_embedded_java_script.rb +++ b/lib/react_on_rails/server_rendering_pool/ruby_embedded_java_script.rb @@ -77,7 +77,7 @@ def exec_server_render_js(js_code, render_options, js_evaluator = nil) if err.message.include?("ReferenceError: self is not defined") msg << "\nError indicates that you may have code-splitting incorrectly enabled.\n" end - msg << "\n#{Utils.extract_troubleshooting_section}\n" + msg << "\n#{Utils.default_troubleshooting_section}\n" raise ReactOnRails::Error, msg, err.backtrace end @@ -123,7 +123,7 @@ def read_bundle_js_code rescue StandardError => e msg = "You specified server rendering JS file: #{server_js_file}, but it cannot be " \ "read. You may set the server_bundle_js_file in your configuration to be \"\" to " \ - "avoid this warning.\nError is: #{e}\n\n#{Utils.extract_troubleshooting_section}" + "avoid this warning.\nError is: #{e}\n\n#{Utils.default_troubleshooting_section}" raise ReactOnRails::Error, msg end @@ -151,7 +151,7 @@ def create_js_context "See file #{file_name} to " \ "correlate line numbers of error. Error is\n\n#{e.message}" \ "\n\n#{e.backtrace.join("\n")}" \ - "\n\n#{Utils.extract_troubleshooting_section}" + "\n\n#{Utils.default_troubleshooting_section}" Rails.logger.error(msg) trace_js_code_used("Error when compiling JavaScript code for the context.", base_js_code, file_name, force: true) @@ -229,7 +229,7 @@ def file_url_to_string(url) encoding_type = match[:encoding] response.body.force_encoding(encoding_type) rescue StandardError => e - msg = "file_url_to_string #{url} failed\nError is: #{e}\n\n#{Utils.extract_troubleshooting_section}" + msg = "file_url_to_string #{url} failed\nError is: #{e}\n\n#{Utils.default_troubleshooting_section}" raise ReactOnRails::Error, msg end diff --git a/lib/react_on_rails/utils.rb b/lib/react_on_rails/utils.rb index 78317bfb29..c5fc87787d 100644 --- a/lib/react_on_rails/utils.rb +++ b/lib/react_on_rails/utils.rb @@ -58,7 +58,7 @@ def self.invoke_and_exit_if_failed(cmd, failure_message) puts wrap_message(msg) puts "" - puts extract_troubleshooting_section + puts default_troubleshooting_section # Rspec catches exit without! in the exit callbacks exit!(1) @@ -281,40 +281,7 @@ def self.prepend_to_file_if_text_not_present(file:, text_to_prepend:, regex:) puts "Prepended\n#{text_to_prepend}to #{file}." end - # Extract troubleshooting section from README.md for error messages - def self.extract_troubleshooting_section - readme_path = File.join(gem_root, "README.md") - return default_troubleshooting_section unless File.exist?(readme_path) - - readme_content = File.read(readme_path) - - # Extract content between the markers - start_marker = "" - end_marker = "" - - if readme_content.include?(start_marker) && readme_content.include?(end_marker) - start_pos = readme_content.index(start_marker) + start_marker.length - end_pos = readme_content.index(end_marker) - - extracted = readme_content[start_pos...end_pos].strip - # Convert markdown to terminal-friendly text - convert_markdown_to_terminal(extracted) - else - default_troubleshooting_section - end - rescue StandardError - default_troubleshooting_section - end - - private_class_method def self.convert_markdown_to_terminal(markdown_text) - markdown_text - .gsub(/^#+\s+(.+)$/, "\nšŸ“ž \\1") # Convert H1-H6 headers - .gsub(/\*\*(.+?)\*\*/, "\\1") # Remove bold markdown - .gsub(/\[([^\]]+)\]\(([^)]+)\)/, "\\1: \\2") # Convert links to "text: url" - .gsub(/^-\s+/, " • ") # Convert bullets - end - - private_class_method def self.default_troubleshooting_section + def self.default_troubleshooting_section <<~DEFAULT šŸ“ž Get Help & Support: • šŸš€ Professional Support: react_on_rails@shakacode.com (fastest resolution) @@ -323,9 +290,5 @@ def self.extract_troubleshooting_section • šŸ“– Discussions: https://github.com/shakacode/react_on_rails/discussions DEFAULT end - - private_class_method def self.gem_root - File.expand_path("../..", __dir__) - end end end From f769676a751d7f24141a4c7da2007397b7ffce21 Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Sun, 21 Sep 2025 19:28:49 -1000 Subject: [PATCH 6/9] Improve JsonParseError message formatting MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Use heredoc for better readability of multi-line error message. šŸ¤– Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- lib/react_on_rails/json_parse_error.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/react_on_rails/json_parse_error.rb b/lib/react_on_rails/json_parse_error.rb index 5d9f5d79d0..5902e02afe 100644 --- a/lib/react_on_rails/json_parse_error.rb +++ b/lib/react_on_rails/json_parse_error.rb @@ -7,7 +7,11 @@ class JsonParseError < ::ReactOnRails::Error def initialize(parse_error:, json:) @json = json @original_error = parse_error - message = "#{parse_error.message}\n\n#{Utils.default_troubleshooting_section}" + message = <<~MSG + #{parse_error.message} + + #{Utils.default_troubleshooting_section} + MSG super(message) end From 882b43c016cc46a534d2926386d63fa6cb1ca7a5 Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Sun, 21 Sep 2025 19:48:09 -1000 Subject: [PATCH 7/9] Improve docs --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 47335386fa..68ab620a46 100644 --- a/README.md +++ b/README.md @@ -140,7 +140,6 @@ _Requires creating a free account._ - Node.js >= 20 (CI tested: 20 - 22) - A JavaScript package manager (npm, yarn, pnpm, or bun) - # šŸ†˜ Get Help & Support **Need immediate help?** Here are your options, ordered by response time: @@ -155,7 +154,6 @@ _Requires creating a free account._ - **[forum.shakacode.com](https://forum.shakacode.com)** - Development discussions - **[@railsonmaui on Twitter](https://twitter.com/railsonmaui)** - Updates and tips - [Projects using React on Rails](https://github.com/shakacode/react_on_rails/tree/master/PROJECTS.md) - Submit yours! - ## Contributing @@ -169,6 +167,8 @@ ShakaCode is **[hiring passionate software engineers](http://www.shakacode.com/c The gem is available as open source under the terms of the [MIT License](https://github.com/shakacode/react_on_rails/tree/master/LICENSE.md). +Note, some features are available only with a React on Rails Pro subscription. See [React on Rails Pro](https://www.shakacode.com/react-on-rails-pro/) for more information. + # Supporters The following companies support our open-source projects, and ShakaCode uses their products! From 6c21f69fb7902bd56c778d833ef906c422f4a9b1 Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Sun, 21 Sep 2025 21:22:58 -1000 Subject: [PATCH 8/9] Improve docs --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 68ab620a46..ceb7b9fa5f 100644 --- a/README.md +++ b/README.md @@ -150,6 +150,7 @@ _Requires creating a free account._ - šŸ“– **Discussions**: [Ask questions](https://github.com/shakacode/react_on_rails/discussions) - General help **Additional Resources:** + - [**Subscribe**](https://app.mailerlite.com/webforms/landing/l1d9x5) for announcements of new releases and tutorials - **[forum.shakacode.com](https://forum.shakacode.com)** - Development discussions - **[@railsonmaui on Twitter](https://twitter.com/railsonmaui)** - Updates and tips From 0e0f18b8d20dcbdf3d4624beddfee77552ab2942 Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Sun, 21 Sep 2025 21:36:45 -1000 Subject: [PATCH 9/9] Fix critical issues from code review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. Fix undefined method error: Changed Utils.extract_troubleshooting_section to Utils.default_troubleshooting_section in rake task 2. Preserve original exception: Changed to re-raise original exception instead of wrapping in ReactOnRails::Error to maintain stack trace These fixes address the blocker issues identified in the code review. šŸ¤– Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- .../server_rendering_pool/ruby_embedded_java_script.rb | 2 +- lib/tasks/generate_packs.rake | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/react_on_rails/server_rendering_pool/ruby_embedded_java_script.rb b/lib/react_on_rails/server_rendering_pool/ruby_embedded_java_script.rb index 666a3311ac..8c4fd1863c 100644 --- a/lib/react_on_rails/server_rendering_pool/ruby_embedded_java_script.rb +++ b/lib/react_on_rails/server_rendering_pool/ruby_embedded_java_script.rb @@ -155,7 +155,7 @@ def create_js_context Rails.logger.error(msg) trace_js_code_used("Error when compiling JavaScript code for the context.", base_js_code, file_name, force: true) - raise ReactOnRails::Error, msg + raise e end end diff --git a/lib/tasks/generate_packs.rake b/lib/tasks/generate_packs.rake index 933911eafa..555e72f5d8 100644 --- a/lib/tasks/generate_packs.rake +++ b/lib/tasks/generate_packs.rake @@ -125,7 +125,7 @@ namespace :react_on_rails do def show_help_and_support puts "" - troubleshooting_content = ReactOnRails::Utils.extract_troubleshooting_section + troubleshooting_content = ReactOnRails::Utils.default_troubleshooting_section # Display the troubleshooting content with color formatting troubleshooting_content.split("\n").each do |line| case line