2

現在、capistrano git が本番サーバーで最新のコードを取得し、バンドルをインストールして、各 Web サーバーで個別にアセットをプリコンパイルするようにセットアップしています。

私が直面している問題は、時折長い時間がかかり、運用サーバーのパフォーマンスに影響を与える多くのリソースを占有することです.

これを行う最善の方法に関するガイドラインを探しています。

誰かがこれを経験したことがあり、意見を共有できる場合は、本当に感謝しています.

これが良いアイデアなのか悪いアイデアなのか、注意すべき一般的な落とし穴は何かを調べています。

また、これに役立つブログ投稿/チュートリアル/ドキュメントへのリンクもいただければ幸いです。

読んでくれてありがとう。

  • アンキット。
4

1 に答える 1

1

これが私の回避策です。入れてみてくださいnamespace :deploy

namespace :assets do
  desc 'Run the precompile task locally and rsync with shared'
  task :precompile, :roles => :web, :except => { :no_release => true } do
    unless skip_assets
      %x{bundle exec rake assets:clean RAILS_ENV=#{rails_env}}
      run_local "bundle exec rake assets:precompile RAILS_ENV=#{rails_env}"
      servers = find_servers_for_task(current_task)
      port_option = port ? "-e 'ssh -p #{port}'" : ''
      servers.each do |server|
        %x{rsync --recursive --times --rsh=ssh --compress --human-readable --progress #{port_option} public/assets #{user}@#{server}:#{shared_path}}
      end
      %x{bundle exec rake assets:clean RAILS_ENV=#{rails_env}}
    end
  end
end

def run_local(cmd)
  system cmd
  if($?.exitstatus != 0) then
    puts 'exit code: ' + $?.exitstatus.to_s
    exit
  end
end
于 2014-11-25T07:45:38.357 に答える