2

デプロイメントに Capistrano を使用しています。サーバーの .htaccess ファイルで正しい環境を設定するコマンドを実行する必要があります。

私はsedこのようにそれを行います:run "sed -i -r 's/APPLICATION_ENV \w+/APPLICATION_ENV #{stage}/' #{current_release}/public/.htaccess"

私の問題は、\w+が Ruby/Cap によってエスケープされ、正規表現が最終的に のみに一致しようとすることw+です。を使用する\\w+と、一致しようとする正規表現になってしまい\\w+ます。

補間された二重引用符で囲まれた文字列を取得して、を正常にエスケープするにはどうすればよい\wですか? 一重引用符で囲まれた文字列と変数の連結に本当に変更する必要がありますか?

4

1 に答える 1

1

私のシステムでは、あなたのサンプルは動作しますが、これら 2 つのいずれかで試すことができます (使用しないものはコメントアウトしてください)。

begin
  stage = "stage"
  current_release = "current_release"
  s = "sed -i -r 's/APPLICATION_ENV \\w+/APPLICATION_ENV #{stage}/' #{current_release}/public/.htaccess"
  s = "sed -i -r 's/APPLICATION_ENV #{"\\w+"}/APPLICATION_ENV #{stage}/' #{current_release}/public/.htaccess"
  s = "sed -i -r 's/APPLICATION_ENV #{92.chr}w+/APPLICATION_ENV #{stage}/' #{current_release}/public/.htaccess"
  puts s
  system s
rescue 
  puts $! 
  system('pause') 
end 
于 2012-08-13T11:05:13.067 に答える