0

次のコードを含む deploy.rb ファイルがあります。

after :deploy do
  run "if [ -d #{rails_root}/tmp/pids ]; then mkdir #{rails_root}/tmp/pids && chmod 0777 #{rails_root}/tmp/pids; fi"
end

問題があります。端末のスクリーンショット @ で確認できます。 ここに画像の説明を入力

同じ問題が log dir にありますが、これは git リポジトリから (capistrano 経由で) 複製されたものです。プロジェクトの手動でクローンを作成すると、ログディレクトリがうまく機能します。 ここに画像の説明を入力

2 つの質問:

  1. ファイルやディレクトリなどではない場合、pids/log "dir" とは何ですか?
  2. どうすればこの問題を解決できますか?
4

1 に答える 1

1

いくつかの提案:

man testショー

-d file       True if file exists and is a directory.

つまり、おそらく[!-d xxx / tmp / pids];

簡単に試すには、一時ディレクトリでシェルコマンドを実行するだけです。

if [ ! -d xxx/tmp/pids ]; then mkdir xxx/tmp/pids && chmod 0777 xxx/tmp/pids; fi

パスのさらに上のdirが存在しない場合、mkdirは失敗します-mkdir-pを使用します

if [ ! -d xxx/tmp/pids ]; then mkdir -p xxx/tmp/pids && chmod 0777 xxx/tmp/pids; fi

それはあなたが意図したことをするはずです。

(スクリーンショットを解読するのは非常に困難です。ファイルタイプに関する詳細情報を取得したい場合は、ls -l主に背景画像を示すスクリーンショットではなく、ここで出力されたテキストを使用してコピーしてください...)

于 2012-07-29T10:10:33.747 に答える