react_on_rails 16.1.2 → 16.2.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 (106) hide show
  1. checksums.yaml +4 -4
  2. data/.rspec +2 -0
  3. data/.rubocop.yml +85 -0
  4. data/Gemfile.development_dependencies +8 -7
  5. data/Gemfile.lock +158 -119
  6. data/Steepfile +56 -0
  7. data/lib/generators/react_on_rails/base_generator.rb +43 -120
  8. data/lib/generators/react_on_rails/dev_tests_generator.rb +2 -1
  9. data/lib/generators/react_on_rails/generator_helper.rb +102 -2
  10. data/lib/generators/react_on_rails/install_generator.rb +36 -156
  11. data/lib/generators/react_on_rails/js_dependency_manager.rb +383 -0
  12. data/lib/generators/react_on_rails/templates/base/base/.dev-services.yml.example +76 -0
  13. data/lib/generators/react_on_rails/templates/base/base/bin/shakapacker-precompile-hook +30 -0
  14. data/lib/generators/react_on_rails/templates/base/base/bin/switch-bundler +141 -0
  15. data/lib/generators/react_on_rails/templates/base/base/config/initializers/react_on_rails.rb.tt +44 -45
  16. data/lib/generators/react_on_rails/templates/base/base/config/{shakapacker.yml → shakapacker.yml.tt} +28 -3
  17. data/lib/generators/react_on_rails/templates/base/base/config/webpack/development.js.tt +15 -9
  18. data/lib/generators/react_on_rails/templates/base/base/config/webpack/serverWebpackConfig.js.tt +42 -6
  19. data/lib/react_on_rails/configuration.rb +149 -32
  20. data/lib/react_on_rails/controller.rb +3 -3
  21. data/lib/react_on_rails/dev/pack_generator.rb +168 -2
  22. data/lib/react_on_rails/dev/process_manager.rb +136 -14
  23. data/lib/react_on_rails/dev/server_manager.rb +194 -26
  24. data/lib/react_on_rails/dev/service_checker.rb +200 -0
  25. data/lib/react_on_rails/doctor.rb +341 -12
  26. data/lib/react_on_rails/engine.rb +75 -1
  27. data/lib/react_on_rails/git_utils.rb +3 -1
  28. data/lib/react_on_rails/helper.rb +70 -192
  29. data/lib/react_on_rails/locales/base.rb +17 -5
  30. data/lib/react_on_rails/packer_utils.rb +79 -2
  31. data/lib/react_on_rails/packs_generator.rb +57 -39
  32. data/lib/react_on_rails/prerender_error.rb +74 -17
  33. data/lib/react_on_rails/pro_helper.rb +64 -0
  34. data/lib/react_on_rails/react_component/render_options.rb +7 -7
  35. data/lib/react_on_rails/server_rendering_pool/ruby_embedded_java_script.rb +2 -5
  36. data/lib/react_on_rails/smart_error.rb +326 -0
  37. data/lib/react_on_rails/system_checker.rb +8 -9
  38. data/lib/react_on_rails/test_helper/webpack_assets_status_checker.rb +16 -7
  39. data/lib/react_on_rails/utils.rb +241 -55
  40. data/lib/react_on_rails/version.rb +1 -1
  41. data/lib/react_on_rails/version_checker.rb +383 -35
  42. data/lib/tasks/generate_packs.rake +12 -6
  43. data/lib/tasks/locale.rake +6 -1
  44. data/rakelib/docker.rake +26 -0
  45. data/rakelib/dummy_apps.rake +30 -0
  46. data/rakelib/example_type.rb +121 -0
  47. data/rakelib/examples_config.yml +52 -0
  48. data/rakelib/lint.rake +52 -0
  49. data/rakelib/node_package.rake +15 -0
  50. data/rakelib/rbs.rake +70 -0
  51. data/rakelib/run_rspec.rake +223 -0
  52. data/rakelib/shakapacker_examples.rake +171 -0
  53. data/rakelib/task_helpers.rb +134 -0
  54. data/rakelib/update_changelog.rake +73 -0
  55. data/react_on_rails.gemspec +4 -3
  56. data/sig/README.md +52 -0
  57. data/sig/react_on_rails/configuration.rbs +96 -0
  58. data/sig/react_on_rails/controller.rbs +15 -0
  59. data/sig/react_on_rails/dev/file_manager.rbs +15 -0
  60. data/sig/react_on_rails/dev/pack_generator.rbs +19 -0
  61. data/sig/react_on_rails/dev/process_manager.rbs +22 -0
  62. data/sig/react_on_rails/dev/server_manager.rbs +39 -0
  63. data/sig/react_on_rails/dev/service_checker.rbs +22 -0
  64. data/sig/react_on_rails/error.rbs +4 -0
  65. data/sig/react_on_rails/generators/js_dependency_manager.rbs +123 -0
  66. data/sig/react_on_rails/git_utils.rbs +8 -0
  67. data/sig/react_on_rails/helper.rbs +65 -0
  68. data/sig/react_on_rails/json_parse_error.rbs +10 -0
  69. data/sig/react_on_rails/locales.rbs +46 -0
  70. data/sig/react_on_rails/packer_utils.rbs +15 -0
  71. data/sig/react_on_rails/prerender_error.rbs +21 -0
  72. data/sig/react_on_rails/server_rendering_pool.rbs +12 -0
  73. data/sig/react_on_rails/smart_error.rbs +28 -0
  74. data/sig/react_on_rails/test_helper.rbs +11 -0
  75. data/sig/react_on_rails/utils.rbs +34 -0
  76. data/sig/react_on_rails/version_checker.rbs +12 -0
  77. data/sig/react_on_rails.rbs +17 -0
  78. metadata +49 -32
  79. data/AI_AGENT_INSTRUCTIONS.md +0 -63
  80. data/CHANGELOG.md +0 -1836
  81. data/CLAUDE.md +0 -135
  82. data/CODING_AGENTS.md +0 -313
  83. data/CONTRIBUTING.md +0 -668
  84. data/Dockerfile_tests +0 -12
  85. data/KUDOS.md +0 -114
  86. data/LICENSE.md +0 -47
  87. data/LICENSES/README.md +0 -14
  88. data/NEWS.md +0 -62
  89. data/PROJECTS.md +0 -63
  90. data/REACT-ON-RAILS-PRO-LICENSE.md +0 -129
  91. data/README.md +0 -217
  92. data/SUMMARY.md +0 -88
  93. data/TODO.md +0 -135
  94. data/bin/lefthook/check-trailing-newlines +0 -38
  95. data/bin/lefthook/get-changed-files +0 -26
  96. data/bin/lefthook/prettier-format +0 -26
  97. data/bin/lefthook/ruby-autofix +0 -26
  98. data/bin/lefthook/ruby-lint +0 -27
  99. data/docker-compose.yml +0 -11
  100. data/eslint.config.ts +0 -232
  101. data/knip.ts +0 -114
  102. data/lib/react_on_rails/pro/NOTICE +0 -21
  103. data/lib/react_on_rails/pro/helper.rb +0 -122
  104. data/lib/react_on_rails/pro/utils.rb +0 -53
  105. data/tsconfig.eslint.json +0 -6
  106. data/tsconfig.json +0 -19
@@ -0,0 +1,22 @@
1
+ module ReactOnRails
2
+ module Dev
3
+ class ServiceChecker
4
+ def self.check_services: (?config_path: String) -> bool
5
+
6
+ private
7
+
8
+ def self.config_has_services?: (Hash[String, untyped]?) -> bool
9
+ def self.check_and_report_services: (Hash[String, untyped], String) -> bool
10
+ def self.collect_service_failures: (Hash[String, untyped]) -> Array[Hash[Symbol, untyped]]
11
+ def self.report_results: (Array[Hash[Symbol, untyped]]) -> bool
12
+ def self.load_config: (String) -> Hash[String, untyped]?
13
+ def self.check_service: (String, Hash[String, untyped]) -> bool
14
+ def self.run_check_command: (String) -> [String, Process::Status?]
15
+ def self.print_services_header: (String) -> void
16
+ def self.print_service_ok: (String, String?) -> void
17
+ def self.print_service_failed: (String, String?) -> void
18
+ def self.print_all_services_ok: () -> void
19
+ def self.print_failures_summary: (Array[Hash[Symbol, untyped]]) -> void
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,4 @@
1
+ module ReactOnRails
2
+ class Error < StandardError
3
+ end
4
+ end
@@ -0,0 +1,123 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ReactOnRails
4
+ module Generators
5
+ # Type signatures for JsDependencyManager module
6
+ #
7
+ # This module provides common functionality for managing JavaScript dependencies
8
+ # in Rails generators using the package_json gem (available via shakapacker).
9
+ module JsDependencyManager
10
+ # Core React dependencies required for React on Rails
11
+ REACT_DEPENDENCIES: Array[String]
12
+
13
+ # CSS processing dependencies for webpack
14
+ CSS_DEPENDENCIES: Array[String]
15
+
16
+ # Development-only dependencies for hot reloading (Webpack)
17
+ DEV_DEPENDENCIES: Array[String]
18
+
19
+ # Rspack core dependencies (only installed when --rspack flag is used)
20
+ RSPACK_DEPENDENCIES: Array[String]
21
+
22
+ # Rspack development dependencies for hot reloading
23
+ RSPACK_DEV_DEPENDENCIES: Array[String]
24
+
25
+ # TypeScript dependencies (only installed when --typescript flag is used)
26
+ TYPESCRIPT_DEPENDENCIES: Array[String]
27
+
28
+ private
29
+
30
+ # Sets up JavaScript dependencies by adding and installing packages
31
+ #
32
+ # This method orchestrates the entire dependency setup process:
33
+ # 1. Adds all required packages to package.json
34
+ # 2. Runs package manager install
35
+ #
36
+ # @return [void]
37
+ def setup_js_dependencies: () -> void
38
+
39
+ # Adds all JavaScript dependencies to package.json
40
+ #
41
+ # This method calls individual add_*_dependencies methods in sequence.
42
+ # All errors are handled gracefully with warnings rather than exceptions.
43
+ #
44
+ # @return [void]
45
+ def add_js_dependencies: () -> void
46
+
47
+ # Adds the react-on-rails package to package.json
48
+ #
49
+ # Uses version matching for stable releases, or latest for pre-releases.
50
+ # Adds error message to GeneratorMessages if package addition fails.
51
+ #
52
+ # @return [void]
53
+ def add_react_on_rails_package: () -> void
54
+
55
+ # Adds React dependencies to package.json
56
+ #
57
+ # Adds error message to GeneratorMessages if package addition fails.
58
+ #
59
+ # @return [void]
60
+ def add_react_dependencies: () -> void
61
+
62
+ # Adds CSS processing dependencies to package.json
63
+ #
64
+ # Adds error message to GeneratorMessages if package addition fails.
65
+ #
66
+ # @return [void]
67
+ def add_css_dependencies: () -> void
68
+
69
+ # Adds Rspack dependencies to package.json
70
+ #
71
+ # Only called when --rspack flag is set.
72
+ # Adds error message to GeneratorMessages if package addition fails.
73
+ #
74
+ # @return [void]
75
+ def add_rspack_dependencies: () -> void
76
+
77
+ # Adds TypeScript dependencies to package.json as dev dependencies
78
+ #
79
+ # Only called when --typescript flag is set.
80
+ # Adds error message to GeneratorMessages if package addition fails.
81
+ #
82
+ # @return [void]
83
+ def add_typescript_dependencies: () -> void
84
+
85
+ # Adds development dependencies to package.json
86
+ #
87
+ # Chooses between Webpack or Rspack dev dependencies based on --rspack flag.
88
+ # Adds error message to GeneratorMessages if package addition fails.
89
+ #
90
+ # @return [void]
91
+ def add_dev_dependencies: () -> void
92
+
93
+ # Adds a single package using package_json gem
94
+ #
95
+ # This method is used internally for adding the react-on-rails package
96
+ # with version-specific handling (react-on-rails@VERSION).
97
+ # For batch operations, use add_packages instead.
98
+ #
99
+ # @param package [String] Package specifier (e.g., "react-on-rails@16.0.0")
100
+ # @param dev [bool] Whether to add as dev dependency
101
+ # @return [bool] true if successful, false otherwise
102
+ def add_package: (String package, ?dev: bool) -> bool
103
+
104
+ # Adds multiple packages at once using package_json gem
105
+ #
106
+ # Delegates to GeneratorHelper's add_npm_dependencies for better
107
+ # package manager abstraction and batch processing efficiency.
108
+ #
109
+ # @param packages [Array<String>] Package names to add
110
+ # @param dev [bool] Whether to add as dev dependencies
111
+ # @return [bool] true if successful, false otherwise
112
+ def add_packages: (Array[String] packages, ?dev: bool) -> bool
113
+
114
+ # Installs JavaScript dependencies using package_json gem
115
+ #
116
+ # Always available via shakapacker dependency chain.
117
+ # Adds warning to GeneratorMessages if installation fails.
118
+ #
119
+ # @return [bool] true if successful, false otherwise
120
+ def install_js_dependencies: () -> bool
121
+ end
122
+ end
123
+ end
@@ -0,0 +1,8 @@
1
+ module ReactOnRails
2
+ module GitUtils
3
+ def self.uncommitted_changes?: (String path) -> bool
4
+ def self.git_installed?: () -> bool
5
+ def self.current_branch: () -> String?
6
+ def self.rspec_fixture_branches: () -> Array[String]
7
+ end
8
+ end
@@ -0,0 +1,65 @@
1
+ module ReactOnRails
2
+ module Helper
3
+ # Type alias for ActiveSupport::SafeBuffer (html_safe strings)
4
+ type safe_buffer = String
5
+
6
+ COMPONENT_HTML_KEY: String
7
+
8
+ # Main helper methods
9
+ # Returns html_safe string (ActiveSupport::SafeBuffer)
10
+ def react_component: (
11
+ String component_name,
12
+ ?Hash[Symbol, untyped] options
13
+ ) ?{ () -> untyped } -> safe_buffer
14
+
15
+ # Returns hash with html_safe strings (ActiveSupport::SafeBuffer)
16
+ def react_component_hash: (
17
+ String component_name,
18
+ ?Hash[Symbol, untyped] options
19
+ ) ?{ () -> untyped } -> Hash[String, safe_buffer]
20
+
21
+ # Returns html_safe string (ActiveSupport::SafeBuffer)
22
+ def redux_store: (
23
+ String store_name,
24
+ ?Hash[Symbol, untyped] | String props
25
+ ) -> safe_buffer
26
+
27
+ # Returns html_safe string (ActiveSupport::SafeBuffer)
28
+ def redux_store_hydration_data: () -> safe_buffer
29
+
30
+ # Returns html_safe string (ActiveSupport::SafeBuffer)
31
+ def server_render_js: (
32
+ String js_expression,
33
+ ?Hash[Symbol, untyped] options
34
+ ) -> safe_buffer
35
+
36
+ def sanitized_props_string: (Hash[Symbol, untyped] | String props) -> String
37
+
38
+ def rails_context: (
39
+ ?server_side: bool
40
+ ) -> Hash[Symbol, untyped]
41
+
42
+ private
43
+
44
+ def internal_react_component: (
45
+ String component_name,
46
+ Hash[Symbol, untyped] options
47
+ ) ?{ () -> untyped } -> Hash[Symbol, untyped]
48
+
49
+ def build_react_component_result_for_server_rendered_string: (
50
+ server_rendered_html: String,
51
+ component_specification_tag: String,
52
+ console_script: String,
53
+ render_options: Hash[Symbol, untyped]
54
+ ) -> safe_buffer
55
+
56
+ def build_react_component_result_for_server_rendered_hash: (
57
+ server_rendered_html: Hash[String, untyped],
58
+ component_specification_tag: String,
59
+ console_script: String,
60
+ render_options: Hash[Symbol, untyped]
61
+ ) -> Hash[String, safe_buffer]
62
+
63
+ def prepend_render_rails_context: (String result) -> safe_buffer
64
+ end
65
+ end
@@ -0,0 +1,10 @@
1
+ module ReactOnRails
2
+ class JsonParseError < ::ReactOnRails::Error
3
+ attr_reader json: String
4
+
5
+ def initialize: (parse_error: StandardError, json: String) -> void
6
+ def to_honeybadger_context: () -> Hash[Symbol, untyped]
7
+ def raven_context: () -> Hash[Symbol, untyped]
8
+ def to_error_context: () -> Hash[Symbol, untyped]
9
+ end
10
+ end
@@ -0,0 +1,46 @@
1
+ module ReactOnRails
2
+ module Locales
3
+ def self.compile: (?force: bool) -> (ToJs | ToJson)
4
+ def self.check_config_directory_exists: (directory: String?, key_name: String, remove_if: String) -> void
5
+
6
+ class Base
7
+ def initialize: (?force: bool) -> void
8
+
9
+ private
10
+
11
+ def file_format: () -> String?
12
+ def obsolete?: () -> bool
13
+ def exist_files: () -> Array[String]
14
+ def files_are_outdated: () -> bool
15
+ def file_names: () -> Array[String]
16
+ def files: () -> Array[String]
17
+ def file: (String name) -> String
18
+ def locale_files: () -> Array[String]
19
+ def i18n_dir: () -> String?
20
+ def i18n_yml_dir: () -> String?
21
+ def default_locale: () -> String
22
+ def convert: () -> void
23
+ def generate_file: (String template, String path) -> void
24
+ def generate_translations: () -> [String, String]
25
+ def format: (untyped input) -> Symbol
26
+ def flatten_defaults: (Hash[untyped, untyped] val) -> Hash[Symbol, Hash[Symbol, untyped]]
27
+ def flatten: (Hash[untyped, untyped] translations) -> Hash[Symbol, untyped]
28
+ def template_translations: () -> String
29
+ def template_default: () -> String
30
+ end
31
+
32
+ class ToJs < Base
33
+ private
34
+
35
+ def file_format: () -> String
36
+ end
37
+
38
+ class ToJson < Base
39
+ private
40
+
41
+ def file_format: () -> String
42
+ def template_translations: () -> String
43
+ def template_default: () -> String
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,15 @@
1
+ module ReactOnRails
2
+ module PackerUtils
3
+ def self.supports_autobundling?: () -> bool
4
+ def self.supports_basic_pack_generation?: () -> bool
5
+ def self.supports_async_loading?: () -> bool
6
+ def self.nested_entries?: () -> bool
7
+ def self.packer_public_output_path: () -> String
8
+ def self.precompile?: () -> bool
9
+ def self.shakapacker_precompile_hook_configured?: () -> bool
10
+ def self.shakapacker_precompile_hook_value: () -> String
11
+ def self.raise_shakapacker_version_incompatible_for_autobundling: () -> void
12
+ def self.raise_shakapacker_version_incompatible_for_basic_pack_generation: () -> void
13
+ def self.raise_nested_entries_disabled: () -> void
14
+ end
15
+ end
@@ -0,0 +1,21 @@
1
+ module ReactOnRails
2
+ class PrerenderError < ::ReactOnRails::Error
3
+ MAX_ERROR_SNIPPET_TO_LOG: Integer
4
+
5
+ attr_reader component_name: String?
6
+ attr_reader err: StandardError?
7
+ attr_reader props: String?
8
+ attr_reader js_code: String?
9
+ attr_reader console_messages: String?
10
+
11
+ def initialize: (?component_name: String?, ?err: StandardError?, ?props: String?, ?js_code: String?, ?console_messages: String?) -> void
12
+ def to_honeybadger_context: () -> Hash[Symbol, untyped]
13
+ def raven_context: () -> Hash[Symbol, untyped]
14
+ def to_error_context: () -> Hash[Symbol, untyped]
15
+
16
+ private
17
+
18
+ def calc_message: (String? component_name, String? console_messages, StandardError? err, String? js_code, String? props) -> [String?, String]
19
+ def build_troubleshooting_suggestions: (String? component_name, StandardError? err, String? console_messages) -> String
20
+ end
21
+ end
@@ -0,0 +1,12 @@
1
+ module ReactOnRails
2
+ module ServerRenderingPool
3
+ def self.pool: () -> untyped
4
+
5
+ def self.reset_pool_if_server_bundle_was_modified: () -> void
6
+ def self.reset_pool: () -> void
7
+ def self.server_render_js_with_console_logging: (
8
+ String js_code,
9
+ Hash[Symbol, untyped] render_options
10
+ ) -> Hash[String, untyped]
11
+ end
12
+ end
@@ -0,0 +1,28 @@
1
+ module ReactOnRails
2
+ class SmartError < Error
3
+ attr_reader error_type: Symbol
4
+ attr_reader component_name: String?
5
+ attr_reader props: String?
6
+ attr_reader js_code: String?
7
+ attr_reader additional_context: Hash[Symbol, untyped]
8
+
9
+ def initialize: (error_type: Symbol, ?component_name: String?, ?props: String?, ?js_code: String?, **untyped additional_context) -> void
10
+ def solution: () -> String
11
+
12
+ private
13
+
14
+ def build_error_message: () -> String
15
+ def error_type_title: () -> String
16
+ def error_description: () -> String
17
+ def component_not_registered_solution: () -> String
18
+ def missing_auto_loaded_bundle_solution: () -> String
19
+ def hydration_mismatch_solution: () -> String
20
+ def server_rendering_error_solution: () -> String
21
+ def redux_store_not_found_solution: () -> String
22
+ def configuration_error_solution: () -> String
23
+ def default_solution: () -> String
24
+ def additional_info: () -> String
25
+ def troubleshooting_section: () -> String
26
+ def find_similar_components: (String name) -> Array[String]
27
+ end
28
+ end
@@ -0,0 +1,11 @@
1
+ module ReactOnRails
2
+ module TestHelper
3
+ def self.configure_rspec_to_compile_assets: (untyped config) -> void
4
+ def self.ensure_assets_compiled: (?force_compile: bool) -> void
5
+ def self.webpack_assets_compiled?: () -> bool
6
+
7
+ module EnsureAssetsCompiled
8
+ def self.has_been_run?: () -> bool
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,34 @@
1
+ module ReactOnRails
2
+ module Utils
3
+ TRUNCATION_FILLER: String
4
+
5
+ def self.truthy_presence: (untyped obj) -> untyped
6
+ def self.wrap_message: (String msg, ?Symbol color) -> String
7
+ def self.object_to_boolean: (untyped value) -> bool
8
+ def self.server_rendering_is_enabled?: () -> bool
9
+ def self.invoke_and_exit_if_failed: (String cmd, String failure_message) -> Array[String]
10
+ def self.server_bundle_path_is_http?: () -> bool
11
+ def self.bundle_js_file_path: (String bundle_name) -> String
12
+ def self.react_on_rails_pro?: () -> bool
13
+ def self.react_on_rails_pro_version: () -> String?
14
+ def self.rsc_support_enabled?: () -> bool
15
+ def self.full_text_errors_enabled?: () -> bool
16
+ def self.smart_trim: (String str, ?Integer max_length) -> String
17
+ def self.find_most_recent_mtime: (Array[String] files) -> Time?
18
+ def self.prepend_to_file_if_text_not_present: (file: String, text_to_prepend: String, regex: Regexp) -> void
19
+ def self.detect_package_manager: () -> String
20
+ def self.default_troubleshooting_section: () -> String
21
+ def self.server_bundle_js_file_path: () -> String
22
+ def self.running_on_windows?: () -> bool
23
+ def self.rails_version_less_than: (String version) -> bool
24
+ def self.rails_version_less_than_4_1_1?: () -> bool
25
+ def self.source_path: () -> String
26
+ def self.public_bundles_full_path: () -> String
27
+ def self.generated_assets_full_path: () -> String
28
+ def self.gem_available?: (String name) -> bool
29
+
30
+ module Required
31
+ def required: (String name) -> untyped
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,12 @@
1
+ module ReactOnRails
2
+ module VersionChecker
3
+ def self.log_if_gem_and_node_package_versions_differ: () -> void
4
+
5
+ private
6
+
7
+ def self.node_package_version: () -> String?
8
+ def self.gem_version: () -> String
9
+ def self.node_package_version_different_from_gem?: () -> bool
10
+ def self.pr_1683_warning: () -> String
11
+ end
12
+ end
@@ -0,0 +1,17 @@
1
+ # Type signatures for ReactOnRails gem
2
+
3
+ module ReactOnRails
4
+ VERSION: String
5
+
6
+ DEFAULT_GENERATED_ASSETS_DIR: String
7
+ DEFAULT_COMPONENT_REGISTRY_TIMEOUT: Integer
8
+
9
+ def self.configure: () { (Configuration) -> void } -> void
10
+ def self.configuration: () -> Configuration
11
+
12
+ # Error classes are defined in separate RBS files:
13
+ # - sig/react_on_rails/prerender_error.rbs
14
+ # - sig/react_on_rails/json_parse_error.rbs
15
+ class Error < StandardError
16
+ end
17
+ end
metadata CHANGED
@@ -1,13 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: react_on_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 16.1.2
4
+ version: 16.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Gordon
8
+ autorequire:
8
9
  bindir: exe
9
10
  cert_chain: []
10
- date: 1980-01-02 00:00:00.000000000 Z
11
+ date: 2026-01-15 00:00:00.000000000 Z
11
12
  dependencies:
12
13
  - !ruby/object:Gem::Dependency
13
14
  name: addressable
@@ -114,34 +115,14 @@ executables: []
114
115
  extensions: []
115
116
  extra_rdoc_files: []
116
117
  files:
117
- - AI_AGENT_INSTRUCTIONS.md
118
- - CHANGELOG.md
119
- - CLAUDE.md
120
- - CODING_AGENTS.md
121
- - CONTRIBUTING.md
122
- - Dockerfile_tests
118
+ - ".rspec"
119
+ - ".rubocop.yml"
123
120
  - Gemfile
124
121
  - Gemfile.development_dependencies
125
122
  - Gemfile.lock
126
- - KUDOS.md
127
- - LICENSE.md
128
- - LICENSES/README.md
129
- - NEWS.md
130
- - PROJECTS.md
131
- - REACT-ON-RAILS-PRO-LICENSE.md
132
- - README.md
133
123
  - Rakefile
134
- - SUMMARY.md
135
- - TODO.md
124
+ - Steepfile
136
125
  - app/helpers/react_on_rails_helper.rb
137
- - bin/lefthook/check-trailing-newlines
138
- - bin/lefthook/get-changed-files
139
- - bin/lefthook/prettier-format
140
- - bin/lefthook/ruby-autofix
141
- - bin/lefthook/ruby-lint
142
- - docker-compose.yml
143
- - eslint.config.ts
144
- - knip.ts
145
126
  - lib/generators/USAGE
146
127
  - lib/generators/react_on_rails/USAGE
147
128
  - lib/generators/react_on_rails/base_generator.rb
@@ -149,9 +130,11 @@ files:
149
130
  - lib/generators/react_on_rails/generator_helper.rb
150
131
  - lib/generators/react_on_rails/generator_messages.rb
151
132
  - lib/generators/react_on_rails/install_generator.rb
133
+ - lib/generators/react_on_rails/js_dependency_manager.rb
152
134
  - lib/generators/react_on_rails/react_no_redux_generator.rb
153
135
  - lib/generators/react_on_rails/react_with_redux_generator.rb
154
136
  - lib/generators/react_on_rails/templates/.eslintrc
137
+ - lib/generators/react_on_rails/templates/base/base/.dev-services.yml.example
155
138
  - lib/generators/react_on_rails/templates/base/base/Procfile.dev
156
139
  - lib/generators/react_on_rails/templates/base/base/Procfile.dev-prod-assets
157
140
  - lib/generators/react_on_rails/templates/base/base/Procfile.dev-static-assets
@@ -169,8 +152,10 @@ files:
169
152
  - lib/generators/react_on_rails/templates/base/base/app/views/layouts/hello_world.html.erb
170
153
  - lib/generators/react_on_rails/templates/base/base/babel.config.js.tt
171
154
  - lib/generators/react_on_rails/templates/base/base/bin/dev
155
+ - lib/generators/react_on_rails/templates/base/base/bin/shakapacker-precompile-hook
156
+ - lib/generators/react_on_rails/templates/base/base/bin/switch-bundler
172
157
  - lib/generators/react_on_rails/templates/base/base/config/initializers/react_on_rails.rb.tt
173
- - lib/generators/react_on_rails/templates/base/base/config/shakapacker.yml
158
+ - lib/generators/react_on_rails/templates/base/base/config/shakapacker.yml.tt
174
159
  - lib/generators/react_on_rails/templates/base/base/config/webpack/clientWebpackConfig.js.tt
175
160
  - lib/generators/react_on_rails/templates/base/base/config/webpack/commonWebpackConfig.js.tt
176
161
  - lib/generators/react_on_rails/templates/base/base/config/webpack/development.js.tt
@@ -210,6 +195,7 @@ files:
210
195
  - lib/react_on_rails/dev/pack_generator.rb
211
196
  - lib/react_on_rails/dev/process_manager.rb
212
197
  - lib/react_on_rails/dev/server_manager.rb
198
+ - lib/react_on_rails/dev/service_checker.rb
213
199
  - lib/react_on_rails/doctor.rb
214
200
  - lib/react_on_rails/engine.rb
215
201
  - lib/react_on_rails/error.rb
@@ -223,13 +209,12 @@ files:
223
209
  - lib/react_on_rails/packer_utils.rb
224
210
  - lib/react_on_rails/packs_generator.rb
225
211
  - lib/react_on_rails/prerender_error.rb
226
- - lib/react_on_rails/pro/NOTICE
227
- - lib/react_on_rails/pro/helper.rb
228
- - lib/react_on_rails/pro/utils.rb
212
+ - lib/react_on_rails/pro_helper.rb
229
213
  - lib/react_on_rails/react_component/render_options.rb
230
214
  - lib/react_on_rails/server_rendering_js_code.rb
231
215
  - lib/react_on_rails/server_rendering_pool.rb
232
216
  - lib/react_on_rails/server_rendering_pool/ruby_embedded_java_script.rb
217
+ - lib/react_on_rails/smart_error.rb
233
218
  - lib/react_on_rails/system_checker.rb
234
219
  - lib/react_on_rails/test_helper.rb
235
220
  - lib/react_on_rails/test_helper/ensure_assets_compiled.rb
@@ -243,9 +228,40 @@ files:
243
228
  - lib/tasks/doctor.rake
244
229
  - lib/tasks/generate_packs.rake
245
230
  - lib/tasks/locale.rake
231
+ - rakelib/docker.rake
232
+ - rakelib/dummy_apps.rake
233
+ - rakelib/example_type.rb
234
+ - rakelib/examples_config.yml
235
+ - rakelib/lint.rake
236
+ - rakelib/node_package.rake
237
+ - rakelib/rbs.rake
238
+ - rakelib/run_rspec.rake
239
+ - rakelib/shakapacker_examples.rake
240
+ - rakelib/task_helpers.rb
241
+ - rakelib/update_changelog.rake
246
242
  - react_on_rails.gemspec
247
- - tsconfig.eslint.json
248
- - tsconfig.json
243
+ - sig/README.md
244
+ - sig/react_on_rails.rbs
245
+ - sig/react_on_rails/configuration.rbs
246
+ - sig/react_on_rails/controller.rbs
247
+ - sig/react_on_rails/dev/file_manager.rbs
248
+ - sig/react_on_rails/dev/pack_generator.rbs
249
+ - sig/react_on_rails/dev/process_manager.rbs
250
+ - sig/react_on_rails/dev/server_manager.rbs
251
+ - sig/react_on_rails/dev/service_checker.rbs
252
+ - sig/react_on_rails/error.rbs
253
+ - sig/react_on_rails/generators/js_dependency_manager.rbs
254
+ - sig/react_on_rails/git_utils.rbs
255
+ - sig/react_on_rails/helper.rbs
256
+ - sig/react_on_rails/json_parse_error.rbs
257
+ - sig/react_on_rails/locales.rbs
258
+ - sig/react_on_rails/packer_utils.rbs
259
+ - sig/react_on_rails/prerender_error.rbs
260
+ - sig/react_on_rails/server_rendering_pool.rbs
261
+ - sig/react_on_rails/smart_error.rbs
262
+ - sig/react_on_rails/test_helper.rbs
263
+ - sig/react_on_rails/utils.rbs
264
+ - sig/react_on_rails/version_checker.rbs
249
265
  homepage: https://github.com/shakacode/react_on_rails
250
266
  licenses:
251
267
  - MIT
@@ -271,7 +287,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
271
287
  - !ruby/object:Gem::Version
272
288
  version: '0'
273
289
  requirements: []
274
- rubygems_version: 3.7.2
290
+ rubygems_version: 3.5.22
291
+ signing_key:
275
292
  specification_version: 4
276
293
  summary: Rails with react server rendering with webpack.
277
294
  test_files: []
@@ -1,63 +0,0 @@
1
- # 🤖 AI Agent Instructions: React on Rails Setup
2
-
3
- _Super concise, copy-paste instructions for AI agents to set up React on Rails in common scenarios._
4
-
5
- ## 🔍 **Before Starting: Check Current Versions**
6
-
7
- ```bash
8
- # Get latest available versions (recommended approach)
9
- gem search react_on_rails --remote
10
- ```
11
-
12
- Install and update gem and npm package using strict option.
13
-
14
- ---
15
-
16
- ## 🆕 Scenario 1: New Rails App with React on Rails
17
-
18
- ```bash
19
- # Create new Rails app
20
- rails new myapp --skip-javascript --database=postgresql
21
- cd myapp
22
-
23
- # Use latest version
24
- bundle add react_on_rails --strict
25
-
26
- bin/rails generate react_on_rails:install
27
-
28
- # Accept change to bin/dev
29
-
30
- # Start development servers
31
- bin/dev
32
- ```
33
-
34
- **✅ Success Check:** Visit `http://localhost:3000/hello_world` → Should see "Hello World" from React
35
-
36
- ---
37
-
38
- ## 🔄 Scenario 2: Add React on Rails to Existing Rails App
39
-
40
- ```bash
41
- cd /path/to/existing/app
42
- # Use latest version
43
- bundle add react_on_rails --strict
44
-
45
- bin/rails generate react_on_rails:install
46
-
47
- # Accept change to bin/dev
48
-
49
- # Start development servers
50
- bin/dev
51
- # Navigate to existing Rails app root
52
-
53
- # Start development
54
- bin/dev
55
- ```
56
-
57
- ---
58
-
59
- ## 🛠️ Common Troubleshooting Commands
60
-
61
- - Always run `bin/dev` to test setup, and check browser console for any JavaScript errors
62
- - `bin/dev kill` stops other conflicting processes
63
- - `bin/rake react_on_rails:doctor` for helpful information