【发布时间】:2012-06-26 12:28:15
【问题描述】:
对 Capistrano 来说完全陌生。
我有一个要发布到远程服务器的本地 git 存储库。我在这里遵循了其他答案并提出了这个配置:
require 'bundler/capistrano'
set :application, "app_name"
set :repository, '~/Dropbox/app/.git'
set :user, 'user_name'
set :deploy_to, 'ssh://remote_host/~/railsApps/app_name'
set :scm_verbose, true
set :deploy_via, :copy
default_run_options[:pty] = true
server "remote_server", :web, :app, :db, :primary => true
set :scm, :git
set :branch, "master"
ssh_options[:keys] = %w(~/.ssh/id_rsa)
after "deploy:restart", "deploy:cleanup"
这不再要求远程服务器的密码,但总是失败并出现以下错误:
The --deployment flag requires a Gemfile.lock. Please make sure you have checked your Gemfile.lock into version control before deploying.
我肯定将 Gemfile.lock 文件包含在我的 git 存储库中。
如果我将 Capistrano 配置更改为从我推送到的远程 git 文件夹(位于同一服务器中)进行克隆,那么我不会收到错误消息,但每次我尝试连接时都会询问我的密码。
请帮忙。
注意,从 CLI 用于常规 SSH 连接时,SSH 密钥配对可以正常工作。
解决方案
感谢 Tigraine,我能够解决它。希望这对其他人有所帮助,这就是最终的诀窍:
Tigraine 是正确的,因为路径是远程服务器的本地路径,但是当我尝试使用本地路径时遇到错误,Capistrano 继续在我的本地计算机上搜索并在找不到这些路径时抛出错误。
我要做的就是将local_repository 添加到配置中,然后一切正常。所以我改变的位是这些:
set :local_repository, '~/Dropbox/app_name/.git'
set :repository, '~/railsApps/app_name.git'
set :deploy_to, '~/railsApps/app_name'
local_repository 路径在我的机器上是本地的,repository 和 deploy_to 路径在远程服务器上是本地的。
【问题讨论】:
标签: ruby-on-rails git capistrano