Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

`$RAKE_PRELOAD` to load custom Ruby file before starting application

Abierto
#595 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
30/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
ruby

Línea de trabajo

Comienza en el punto de entrada del comando rake y sigue cómo Rake.application.run carga el Rakefile e invoca handle_options. Determina cómo podría cargarse un archivo de precarga antes de run, conservando el comportamiento propuesto de RAKE_PRELOAD; se considerará terminado cuando el mecanismo esté acordado, implementado y cubierto por pruebas para personalizar Rake.application.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Rake application loads Rakefile AFTER Rake.application.run() started.
Therefore it is not able to customize Rake.application.run() (or other methods defined in Rake.application) in Rakefile.

For example, I want to change Rake::Application#handle_options() to use parser.order(argv) instead of parser.parse(argv) in order not to parse options after task names.
(I'm developing rake extension to allow command-line options for each task, and parser.order() is necessary for this purpose.)

Here is my challenge (Rakefile):

## Rakefile

module Rake
  Application.class_eval do
    def handle_options(argv)
      set_default_options
      OptionParser.new do |opts|
        opts.banner = "#{Rake.application.name} [-f rakefile] {options} targets..."
        opts.separator ""
        opts.separator "Options are ..."

        opts.on_tail("-h", "--help", "-H", "Display this help message.") do
          puts opts
          exit
        end

        standard_rake_options.each { |args| opts.on(*args) }
        opts.environment("RAKEOPT")
      #end.parse(argv)    # !! original !!
      end.order(argv)     # !! customize !!
    end
  end
end

But the above Rakefile doesn't work intendedly because Rake application loads Rakefile after Rake.application.run() started.

Therefore, I hope Rake to provide a certain method to load custom ruby file before Rake.application.run() started.

One solution is to load a ruby file specified by the $RAKE_PRELOAD environment variable in rake command.

rake command:

#!/usr/bin/env ruby

require "rake"

preload = ENV['RAKE_PRELOAD']         # !!!
if preload && ! preload.empty?        # !!!
  require preload                     # !!!
end                                   # !!!

Rake.application.run

I'd like the dev team to consider this idea.

Lenguaje dominante
Ruby
Estrellas
2.5k
Forks
650
Merge medio
6 min
PR fusionados (30 d)
3

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de ruby/rake

Todos los issues de ruby/rake

Issues similares

Más issues de Ruby

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.