Enhancement for gem env
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 48/100
Línea de trabajo
Comienza leyendo la implementación propuesta de show_environment y ejecutando gem env para comparar su salida actual con el ejemplo de YAML. Revisa cómo se ensamblan los valores de configuración, directorio, ruta de gem y ruta de shell enumerados. Se considera terminado cuando se haya acordado el formato de salida y se hayan implementado las comprobaciones de presencia propuestas, la ocultación del directorio de inicio y el formateo centralizado.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
The following rewrite of show_environment suggests improvements of gem env output.
Feedback on further improvements or alternative angles appreciated.
| Feature | Benefits |
|---|---|
| Outputs YAML (near already) | Can parse, pipe to yq for colors, etc. |
| Checks file presence | Helpful in bug reports |
Replaces Dir.home with ~ |
Redaction / Privacy |
| Centralizes formatting | DRY |
Example output
RubyGems Environment:
Version:
- 4.0.20
Platforms:
- ruby
- arm64-darwin-25
Configuration:
update_sources: true
verbose: true
backtrace: true
bulk_threshold: 1000
gem: --no-document
Sources:
- https://rubygems.org/
Dependencies:
Ruby version: 4.0.7 (2026-09-15 patchlevel 0) [arm64-darwin25]
Ruby executable: /opt/homebrew/opt/ruby/bin/ruby
Git executable: /usr/bin/git
Directories:
Global install: /opt/homebrew/lib/ruby/gems/4.0.0
# Global config: /opt/homebrew/Cellar/ruby/4.0.7/etc
Executable: /opt/homebrew/lib/ruby/gems/4.0.0/bin
# User install: ~/.local/share/gem/ruby/4.0.0
Spec cache: ~/.cache/gem/specs
# Credentials: ~/.local/share/gem/credentials
Gem path:
- /opt/homebrew/lib/ruby/gems/4.0.0
# - ~/.local/share/gem/ruby/4.0.0
- /opt/homebrew/Cellar/ruby/4.0.7/lib/ruby/gems/4.0.0
Shell path:
- /opt/homebrew/bin
- /opt/homebrew/sbin
- /opt/homebrew/opt/ruby/bin
- /usr/bin
- /bin
- /usr/sbin
- /sbin
- /opt/homebrew/lib/ruby/gems/4.0.0/bin
Code
def exist(value)
case value
when %r{^/}
File.stat(value)
end
''
rescue Errno::ENOENT
'# '
end
def tree(items)
items.flat_map do |group, items|
items.compact.map do |item|
item = [item].flatten
line = exist(item.last) + (item.one? ? '- ' : '') + item.join(': ')
line.prepend(' ').gsub(Dir.home, '~')
end.prepend(format(' %s:', group))
end
end
def show_environment # :nodoc:
config = {}
Gem.configuration.each do |name, value|
config[name] = name == 'gemcutter_key' ? value.gsub(/./, '*') : value
end
{
'Version' => [Gem::VERSION],
'Platforms' => Gem.platforms.map(&:to_s),
'Configuration' => config,
'Sources' => Gem.sources.to_a,
'Dependencies' => {
'Ruby version' => "#{RUBY_VERSION} (#{RUBY_RELEASE_DATE} patchlevel #{RUBY_PATCHLEVEL}) [#{RUBY_PLATFORM}]",
'Ruby executable' => Gem.ruby,
'Git executable' => git_path
},
'Directories' => {
'Global install' => Gem.dir,
'Global config' => Gem::ConfigFile::SYSTEM_CONFIG_PATH,
'Executable' => Gem.bindir,
'User install' => Gem.user_dir,
'Prefix' => Gem.prefix,
'Spec cache' => Gem.spec_cache_dir,
'Credentials' => Gem.configuration.credentials_path
},
'Gem path' => ([Gem.dir] + Gem.path).uniq,
'Shell path' => ENV['PATH'].split(File::PATH_SEPARATOR)
}.then { tree(it).prepend('RubyGems Environment:').join("\n") }
end
- Lenguaje dominante
- Ruby
- Estrellas
- 4k
- Forks
- 2k
- Merge medio
- 1 d 5 h
- PR fusionados (30 d)
- 36
Preparar el entorno
Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de ruby/rubygems
-
Broken linkAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 35/100
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 15/100
Los mantenedores suelen responder en 1 día
-
Gem::Package::TarReader silently ignores pax/GNU extension headersPosiblemente ocupada @akasakariko la tomó hace 3 días. AbiertoRubyGems
Dificultad 3/5 1-2 días Aptitud para principiantes 55/100
ruby/rubygems#9988 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
`Gem::Version.new`, `#bump`, and `#release` do not work in ractorPosiblemente ocupada @mmporong la tomó hace 7 días. AbiertoRubyGems
Dificultad 3/5 Medio día Aptitud para principiantes 55/100
Los mantenedores suelen responder en 1 día
-
`bundle install` exits 0 even when a git gem's submodules fail to clonePosiblemente ocupada @mattyb la tomó hace 12 días. AbiertoBundler
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
Los mantenedores suelen responder en 1 día
Todos los issues de ruby/rubygems
Issues similares
-
JWT::EncodedToken raises TypeError for a non-object headerPosiblemente ocupada @anakinj la tomó hoy. Abiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
jwt/ruby-jwt#780 · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 Menos de una hora Aptitud para principiantes 70/100
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
zold-io/zold-ruby-sdk#85 ·