2011-12-16 12 views
6

C'è un modo per caricare file che corrispondono solo a una stringa specifica? Ad esempio, supponiamo di voler caricare file corrispondenti a account1.rbaccount2.rb e così via. Voglio essere in grado di fare qualcosa comeRuby 'require' con espressione jolly

require File.expand_path("../account*.rb", __FILE__) 

ma ovviamente questo non funziona. Qual è il modo migliore per farlo?

risposta

12

È possibile fare la stessa cosa con un ciclo:

Dir.glob(File.expand_path("../account*.rb", __FILE__)).each do |file| 
    require file 
end 

Il metodo expand_path risolve solo i percorsi. Non espande i caratteri jolly.

+0

E se volessi abbinare un carattere specifico? "account_a.rb", "account_b.rb" e così via – denniss

+1

Un singolo carattere è rappresentato da '?'. – tadman

1

Ho provato a utilizzarlo per creare una suite di test per Minitest senza utilizzare Rspec. La risposta accettata non ha funzionato per me, ma questo ha fatto:

require "minitest/autorun" 

Dir.glob("*_test.rb").each do |file| 
    require_relative file 
end 
0

Io uso questo:

Dir.entries(File.dirname(__FILE__)). 

    grep(/test.*\.rb/) { | file | require_relative file } 

Purtroppo Rubino non consente a capo prima del punto, così la forma ideale non lo fa lavoro:

Dir.entries(File.dirname(__FILE__)) 

    .grep(/test.*\.rb/) { | file | require_relative file } 
Problemi correlati