Fix Zeitwerk eager loading for railtie.rb #486
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Completes the fix from PR #59 to prevent crashes during eager loading in non-Rails contexts.
Problem
Occurs when Zeitwerk eager loads (e.g., in gems that depend on ruby_llm but don't use Rails).
Root Cause
PR #59 added conditional require:
require 'ruby_llm/railtie' if defined?(Rails::Railtie)This is insufficient because Zeitwerk's eager loading happens before that check runs. When Zeitwerk loads
railtie.rb, the class definition fails becauseRails::Railtiedoesn't exist.Solution
Two complementary fixes (both required per Zeitwerk documentation):
1. Wrap class definition in
if defined?(Rails::Railtie):2. Ignore from Zeitwerk:
Evidence
loader.ignore()for "files not following conventions"Testing
Before:
Zeitwerk::Loader.eager_load_all→ ❌ NameErrorAfter:
Zeitwerk::Loader.eager_load_all→ ✅ SuccessThank you for reviewing!