0

sedCapistranio のデプロイごとに数十のコマンドを実行しsedていますが、サーバーで数十のコマンドを実行するのではなく、それらを 1 つのコマンドにチェーンできるかどうか疑問に思っていました。

task :taskname do
    {:'foo' => foo, :'bar' => bar, :'foobar' => foobar, :'fubar' => fubar }.each do |search, replace|
        run "sed -i 's/#{search}/#{replace}/' file.ext"
    end
end
4

2 に答える 2

3

sed多数のパターンをネイティブに受け入れます (何らかの理由で を好む場合sed):

{:foo => foo, :bar => bar, :foobar => foobar, :fubar => fubar}.inject("") do |acc, k, v|
  acc += " -e 's/#{k}/#{v}'"
end

run "sed #{acc} file.ext"
于 2013-08-16T05:15:23.797 に答える
0

mudasobwa のコードは機能しますか? 私のRuby(v1.9.3)では、次のようにする必要があります:

acc = {:foo => foo, :bar => bar, :foobar => foobar, :fubar => fubar}.inject("") do |m, p|
  m + " -e 's/#{p[0]}/#{p[1]}'"
end

run "sed #{acc} file.ext"
于 2013-08-17T01:21:14.697 に答える