Capistranoで両方の問題を管理できます。Capistrano は、プロジェクトを作業コピーから、またはリモート リポジトリから直接デプロイできるようにする ruby スクリプトです。これは、SSH 接続を介して行われます。
また、Bundler を使用して gem を処理します。gem の一部が非公開 (Github アカウントなど) の場合、ローカル SSH キーを使用するように Capistrano をセットアップできます ( ssh_options[:forward_agent] = true
)。もう 1 つの方法は、Capistrano レシピのStrategy Copy Bundledを使用して、gem をリモート サーバーにアップロードする前にローカルにバンドルすることです。
要約すると、Capistrano を使用すると、ローカル マシンがすべて (アプリ、gem など) が通過する仲介役になる展開をセットアップできます。
|------------| |----------------| |--------------|
| Internet |-------| Your Machine |---[SSH]---| Production |
| (Github, | |----------------| |--------------|
| RubyGems,|
| etc.) |
|------------|
config/deploy.rb
あなたが望むことを
する例の下に追加した更新。しかし、カピストラーノのすべての詳細を説明することは、あなたの質問をはるかに超えています. それについて読むことをお勧めします。開始できる参考文献をいくつか用意しました。
require 'capistrano-strategy-copy-bundled'
set :application, "your application name" # name of the application
set :user, "deployer" # The server's user for deploys
default_run_options[:pty] = true # Must be set for the password prompt
set :ssh_options, { :forward_agent => true } # Using SSH forward agent
set :repository, "git@github.com:account/repo.git"
set :scm, :git # type of scm used
set :deploy_via, :copy_bundled # Capistrano clones your git repo to /tmp on your
# local machine, tars & zips the result, and then
# transfers it to the server via sftp.
set :copy_dir, "/tmp/#{application}" # path where files are temporarily
# put before sending them to the
# servers
set :copy_exclude, ".git*" # excluding the .git directory
set :deploy_to, "/var/www/" # Where to deploy on the server
参考文献: