Skip to content

Commit a332db4

Browse files
justin808claude
andcommitted
Move Rails environment require before precompile tasks
Load the Rails environment at script startup rather than lazily inside the locale generation step. This ensures ReactOnRails configuration is available before any precompile tasks run. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <[email protected]>
1 parent 2e51a03 commit a332db4

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed

bin/dev

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,12 @@
77
# server management. The core logic is implemented in ReactOnRails::Dev
88
# classes for better maintainability and testing.
99
#
10+
# Before starting the Procfile processes, this script runs precompile tasks:
11+
# 1. rescript:build - Compiles .res files to .res.js
12+
# 2. react_on_rails:locale - Generates i18n JavaScript files
13+
#
14+
# This ensures all generated files exist before webpack starts watching.
15+
#
1016
# Each command uses a specific Procfile for process management:
1117
# - bin/dev (default/hmr): Uses Procfile.dev
1218
# - bin/dev static: Uses Procfile.dev-static-assets
@@ -20,6 +26,41 @@
2026

2127
require "bundler/setup"
2228
require "react_on_rails/dev"
29+
require_relative "../config/environment"
30+
31+
# Run precompile tasks before starting development server
32+
# This ensures rescript and locale files are generated before webpack starts
33+
def run_precompile_tasks
34+
puts "📦 Running precompile tasks..."
35+
36+
# Build ReScript files first
37+
print " ReScript build... "
38+
if system("yarn res:build > /dev/null 2>&1")
39+
puts "✅"
40+
else
41+
puts "❌"
42+
puts " Failed to build ReScript files. Run 'yarn res:build' to see errors."
43+
exit 1
44+
end
45+
46+
# Generate locale files using ReactOnRails directly (avoids shell Ruby version issues)
47+
print " Locale generation... "
48+
begin
49+
ReactOnRails::Locales.compile
50+
puts "✅"
51+
rescue StandardError => e
52+
puts "❌"
53+
puts " Failed to generate locales: #{e.message}"
54+
exit 1
55+
end
56+
57+
puts ""
58+
end
59+
60+
# Run precompile before starting the server (unless running kill or help commands)
61+
unless ARGV.include?("kill") || ARGV.include?("-h") || ARGV.include?("--help")
62+
run_precompile_tasks
63+
end
2364

2465
# Main execution
2566
ReactOnRails::Dev::ServerManager.run_from_command_line(ARGV)

0 commit comments

Comments
 (0)