2

capistrano を使用してデプロイしようとしていますが、 cap deploy:update を実行すると /current フォルダーが作成されません。ここにエラーがあります。何かアイデアはありますか?

executing "cd /home/adamtodd/apps/homebase/current && bundle exec rake RAILS_ENV=production RAILS_GROUPS=assets assets:precompile --trace"
servers: ["xx.xxx.xx.xxx"]
[xx.xxx.xx.xxx] executing command
 ** [out :: xx.xxx.xx.xxx] bash: line 0: cd: /home/adamtodd/apps/homebase/current: No such file or directory
4

3 に答える 3

9

初めてのデプロイでアセットのプリコンパイル( assets:precompile task redefinition )にBen Curtis ソリューションを使用したときに同じ問題が発生しました( deploy:cold は役に立ちませんでした)

ここでの簡単な回避策

namespace :deploy do
  namespace :assets do
    task :precompile, :roles => :web, :except => { :no_release => true } do
      begin
        from = source.next_revision(current_revision) # <-- Fail here at first-time deploy because of current/REVISION absence
      rescue
        err_no = true
      end
      if err_no || capture("cd #{latest_release} && #{source.local.log(from)} vendor/assets/ app/assets/ | wc -l").to_i > 0
        run %Q{cd #{latest_release} && #{rake} RAILS_ENV=#{rails_env} #{asset_env} assets:precompile}
      else
        logger.info "Skipping asset pre-compilation because there were no asset changes"
      end
   end
  end
end
于 2012-11-15T15:32:25.590 に答える
1

deploy:assets:precompile タスクを再定義したようです。Capistrano のソース コードではreleases/12345、 ではなくに cd しようとしていることがわかりcurrentます。

https://github.com/capistrano/capistrano/blob/master/lib/capistrano/recipes/deploy/assets.rb#L31-43

だから私はあなたの deploy.rb をチェックして、再定義されたタスクを削除します。

(私は同じ方法でタスクを再定義し、--tracelike you を追加しましたが、解決しようとしていた問題はもはや問題ではなく、すぐに使用できるタスクはうまく機能します。推測する必要がありましたが、私たちのカスタム タスクはRAILS_GROUPS=assetsコマンド文字列にアクセスするためのハックだったと思いますが、リンクされたソース コードを確認するとわかるように、Capistrano はそれを自動的に処理します。)

于 2012-10-22T15:33:26.630 に答える
1

cap deploy:update通常、一度デプロイされたアプリケーションに対してのみ機能しますが、ディレクトリがないため、あなたの場合は発生していないと思いますcurrent

cap deploy:cold代わりにa を実行してみてください。

于 2012-06-13T23:47:46.033 に答える