Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,7 @@ require (
github.com/go-ruby-uri/uri v0.0.0-20260629113958-59633d1b0deb
github.com/go-ruby-warden/warden v0.0.0-20260706120446-d887742539ef
github.com/go-ruby-webauthn/webauthn v0.0.0-20260704120708-35595b0ac27b
github.com/go-ruby-webrick/webrick v0.0.0-20260630133907-a1380ee7733b
github.com/go-ruby-xslt/xslt v0.0.0-20260702171958-146eaf3f0176
github.com/go-ruby-yaml/yaml v0.0.0-20260629093916-8035038027bd
github.com/go-ruby-zeitwerk/zeitwerk v0.0.0-20260706163820-cda238c0e98c
Expand Down
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -456,6 +456,8 @@ github.com/go-ruby-warden/warden v0.0.0-20260706120446-d887742539ef h1:JLPi8PmkO
github.com/go-ruby-warden/warden v0.0.0-20260706120446-d887742539ef/go.mod h1:oI3L9dywsrSXJqLDuJGIYuHUHRCxUS7BU8PBZGXpx4A=
github.com/go-ruby-webauthn/webauthn v0.0.0-20260704120708-35595b0ac27b h1:ZwN0q9xq9HUGCskWGz8rmL+v6MaHy+AM99oictlPlBs=
github.com/go-ruby-webauthn/webauthn v0.0.0-20260704120708-35595b0ac27b/go.mod h1:tLv8PWrPxrOQrJWMFTfRi6wfZpSjZtmfxHKgGwUriR8=
github.com/go-ruby-webrick/webrick v0.0.0-20260630133907-a1380ee7733b h1:T7H6p2VhpU/05o/XSlsCT3YfMznMhcuShu8iDyDVeqU=
github.com/go-ruby-webrick/webrick v0.0.0-20260630133907-a1380ee7733b/go.mod h1:0DF9Jl9o+cvEvPCzCJ95nHIlF7qz8yzuQIyfMm8FUlM=
github.com/go-ruby-xslt/xslt v0.0.0-20260702171958-146eaf3f0176 h1:iHTCF/Eu0/lwOEank8pLKqoW5j9MI2ERXErrvqsZZ+4=
github.com/go-ruby-xslt/xslt v0.0.0-20260702171958-146eaf3f0176/go.mod h1:1C3Bx0pQIsqLqC2SnqV7pJnGuLJsgYmar2NrD+CmVXw=
github.com/go-ruby-yaml/yaml v0.0.0-20260629093916-8035038027bd h1:4HGjgCdTIuIEM+iZXJ9hJJzt0IBMtxPqdJq72mr0Y64=
Expand Down
1 change: 1 addition & 0 deletions internal/vm/builtins.go
Original file line number Diff line number Diff line change
Expand Up @@ -486,6 +486,7 @@ func (vm *VM) bootstrap() {
vm.registerRSpec() // RSpec matcher + expect surface (require "rspec"), backed by go-ruby-rspec; needs Exception for ExpectationNotMetError
vm.registerRuboCop() // RuboCop::Runner#inspect/autocorrect + Cop::Offense (require "rubocop"), backed by go-ruby-rubocop over go-ruby-parser; needs StandardError for RuboCop::Error
vm.registerRack() // Rack::Request/Response/Utils (require "rack" / "rack/utils"), backed by go-ruby-rack; deterministic env/query/escape, no socket
vm.registerWEBrick() // WEBrick::HTTPServer/HTTPRequest/HTTPResponse/HTTPServlet/HTTPStatus (require "webrick"), backed by go-ruby-webrick; deterministic parse/build/mount-dispatch, no socket; the mount_proc block / servlet do_* method is the rbgo seam run inline under the GVL; needs StandardError (WEBrick::HTTPStatus family)
vm.registerGrape() // Grape::Router/Validator/Formatter (require "grape"), backed by go-ruby-grape; endpoint-block exec + Rack env are host seams; needs StandardError for Grape::Exceptions
vm.registerSinatra() // Sinatra::Base class-DSL + #call Rack adapter (require "sinatra/base"), backed by go-ruby-sinatra over go-ruby-rack; route/filter block eval is the rbgo seam; needs Rack + StandardError (Sinatra::NotFound), so registered after registerRack
vm.registerRoda() // Roda class routing-tree DSL (route do |r| … end) + #call Rack adapter (require "roda"), backed by go-ruby-roda over go-ruby-rack; the route/matcher block eval is the rbgo seam, the routing tree is the library; needs Rack + StandardError (Roda::RodaError)
Expand Down
6 changes: 6 additions & 0 deletions internal/vm/object_model.go
Original file line number Diff line number Diff line change
Expand Up @@ -1336,6 +1336,12 @@ func (vm *VM) classOf(v object.Value) *RClass {
return vm.consts["Puma::Configuration"].(*RClass)
case *PumaDSL:
return vm.consts["Puma::DSL"].(*RClass)
case *WEBrickServer:
return vm.consts["WEBrick::HTTPServer"].(*RClass)
case *WEBrickRequest:
return vm.consts["WEBrick::HTTPRequest"].(*RClass)
case *WEBrickResponse:
return vm.consts["WEBrick::HTTPResponse"].(*RClass)
case *WardenManager:
return x.cls
case *WardenProxy:
Expand Down
1 change: 1 addition & 0 deletions internal/vm/require.go
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ var providedFeatures = map[string]bool{
"rubocop": true,
"grape": true,
"rack": true, "rack/utils": true,
"webrick": true,
"sinatra": true, "sinatra/base": true,
"active_record": true, "activerecord": true,
"active_model": true, "activemodel": true,
Expand Down
Loading
Loading