11

私は現在、ディレクトリとそのサブフォルダーで各 ruby​​ スクリプトを実行する必要があるスクリプトに取り組んでいます。

例えば

run-all.rb
- scripts
  - folder1
    - script1.rb
    - script2.rb
  - folder2
    - script3.rb
    - script4.rb

サーバーは Windows サーバーであるため、通常はバッチ ファイルを使用しますが、一部のメンバーは Mac を使用しており、Windows バッチ ファイルを理解できない可能性があるため、ヘッド開発者はすべてを ruby​​ で行う必要があると主張しています。

質問からもわかるように、Ruby に関する私の知識は非常に基本的なものです。

4

2 に答える 2

28

「実行」の意味によって異なります。同じ Ruby プロセス内で各スクリプトにあるコードを実行するには、次のようにします。

Dir["scripts/**/*.rb"].each{|s| load s }

ただし、各スクリプトを独自の ruby​​ プロセスで実行したい場合は、次のようにしてください。

Dir["scripts/**/*.rb"].each{|s| puts `ruby #{s}` }

これらのいずれかを内容に入れて、コマンドラインrun-all.rbから実行するだけです。ruby run-all.rb

于 2009-03-27T12:34:36.783 に答える
1

このようなものはおそらくうまくいくはずです:

def process_directory(basedir)
puts basedir
Find.find(basedir.chomp) do |path|
    if FileTest.directory?(path)
        if File.basename(path)[0] == ?.
            Find.prune       # Don't look any further into this directory.
        else
            next
        end
    else
        puts path
    end
end
于 2009-03-27T12:11:11.973 に答える