Repository navigation
Conversation
Contributor
Author
|
Try this @ankane, that should work! |
This was referenced Oct 18, 2026
Owner
|
Awesome, thanks @mhenrixon. Merged in the commit above. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Follow-up to #547: this gets the test suite passing on your
ractorizebranch.RACTORIZE=1 rake testgives 191 runs, 0 failures on Ruby 4.0.7, Rails main (c41236f) and Rack main. The plain run is unchanged (191/0 on both the default Gemfile andactiverecord82.gemfile).Everything is test-only and behind
RACTORIZE:Ractor.make_shareable(Rails.application)reached the plain logger'sMonitorthroughenv_config["action_dispatch.logger"]. The fix is to useActiveSupport::Ractors::Logger, asconfig.loggertoo.unshareable_proc_action = :warn: Rails only makes the procs defined during boot shareable when this is set; Shopify's Ractor template sets:raise. Without it,message_verifiers' block still has the app asself. It's:warnrather than:raisebecause Combustion'sto_prepareblock captures an unfrozen options hash.PgHero::Engine.instance.env_configbefore boot: the mounted engine is frozen when the routes are made shareable, butRails::Engine#env_configonly memoizes on the first request (Engine routes added withroutes.append/routes.prependkeep the app from being ractorized rails/rails#59152).consider_all_requests_local = false: the debug routing-error page memoizes into route nodes, which are frozen. That turnedtest_database_missing's 404 into a 500.reload_routes_unless_loaded: test and development useLazyRouteSet, which calls it on every request.ractorize!drops the routes reloader and freezes the app, so every request raisedFrozenError.The last three are Rails issues with
ractorize!outside production. The requests still run on the main Ractor; serving pghero's pages from a non-main Ractor would be the next step.Conformance case
test/test_helper.rb:63: the whole suite, run afterRails.application.ractorize!96380f5, theractorizebranch), Ruby 4.0.7, Rails mainc41236f, Rack maina9833c8: boot fails withRactor::Error: can not make shareable object for #<Monitor:...>inRails::Application#ractorize!.Run in CI, this catches anything pghero adds that
ractorize!can't make shareable: a route proc, an unfrozen config value, a logger. The requests still run on the main Ractor, so it doesn't yet prove a page renders inside one. (Bundle withRACTORIZE=1set, since that adds the Rack git source.)