ruby

package
v1.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 3, 2026 License: Apache-2.0 Imports: 15 Imported by: 0

Documentation

Overview

Package ruby provides dependency resolution for Ruby gems.

Overview

This package implements deps.Language for Ruby, supporting:

  • RubyGems.org registry resolution via rubygems client
  • Gemfile parsing

Registry Resolution

Use [Language.Resolver] to fetch dependencies from RubyGems:

resolver, _ := ruby.Language.Resolver()
g, _ := resolver.Resolve(ctx, "rails", deps.Options{MaxDepth: 10})

Manifest Parsing

Parse Gemfile:

parser, _ := ruby.Language.Manifest("gem", nil)
result, _ := parser.Parse("Gemfile", deps.Options{})

Note: Gemfile parsing extracts gem names from `gem "name"` declarations. Transitive dependencies are resolved via RubyGems.

rubygems: github.com/matzehuels/stacktower/pkg/integrations/rubygems deps.Language: github.com/matzehuels/stacktower/pkg/core/deps.Language

Index

Constants

This section is empty.

Variables

View Source
var Language = &deps.Language{
	Name:                  "ruby",
	DefaultRegistry:       "rubygems",
	DefaultRuntimeVersion: "3.2",
	RegistryAliases:       map[string]string{"gems": "rubygems"},
	ManifestTypes:         []string{"gemfile", "gemfile-lock"},
	ManifestAliases: map[string]string{
		"Gemfile":      "gemfile",
		"Gemfile.lock": "gemfile-lock",
	},
	NewResolver:     newResolver,
	NewManifest:     newManifest,
	ManifestParsers: manifestParsers,
	NormalizeName: func(name string) string {
		return strings.ToLower(strings.TrimSpace(name))
	},
}

Language provides Ruby dependency resolution via RubyGems. Supports Gemfile and Gemfile.lock manifest files.

Functions

This section is empty.

Types

type GemMatcher added in v1.1.0

type GemMatcher struct{}

GemMatcher implements constraint matching for RubyGems version requirements. RubyGems requirements syntax: - Exact: = 1.0.0 - Not equal: != 1.0.0 - Greater/Less: >, >=, <, <= - Approximate: ~> 1.2 (pessimistic, allows 1.2.x but not 1.3) - Multiple requirements: comma-separated (AND)

func (GemMatcher) ParseConstraint added in v1.1.0

func (GemMatcher) ParseConstraint(constraint string) pubgrub.Condition

ParseConstraint converts a RubyGems requirement to a PubGrub Condition.

func (GemMatcher) ParseVersion added in v1.1.0

func (GemMatcher) ParseVersion(version string) pubgrub.Version

ParseVersion converts a RubyGems version string to a PubGrub SemanticVersion.

type Gemfile

type Gemfile struct {
	// contains filtered or unexported fields
}

Gemfile parses Ruby Gemfiles. It extracts gems and optionally resolves them via RubyGems.

func (*Gemfile) IncludesTransitive

func (g *Gemfile) IncludesTransitive() bool

func (*Gemfile) Parse

func (gf *Gemfile) Parse(path string, opts deps.Options) (*deps.ManifestResult, error)

func (*Gemfile) Supports

func (g *Gemfile) Supports(name string) bool

func (*Gemfile) Type

func (g *Gemfile) Type() string

type GemfileLock added in v1.1.0

type GemfileLock struct{}

GemfileLock parses Gemfile.lock files. It provides a full transitive closure of the dependency graph without needing to contact a registry.

func (*GemfileLock) IncludesTransitive added in v1.1.0

func (g *GemfileLock) IncludesTransitive() bool

func (*GemfileLock) Parse added in v1.1.0

func (gl *GemfileLock) Parse(path string, opts deps.Options) (*deps.ManifestResult, error)

func (*GemfileLock) Supports added in v1.1.0

func (g *GemfileLock) Supports(name string) bool

func (*GemfileLock) Type added in v1.1.0

func (g *GemfileLock) Type() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL