为什么capistrano在本地执行任务

时间:2010-07-21 20:21:41

标签: capistrano

我正在使用Capistrano在rails项目上部署ruby。我试图以“部署”用户身份登录远程服务器并部署此应用程序。

当我作为deploy ssh进入框并且git克隆项目时它可以工作

ssh deploy@remote_box
git clone git@github.com:lumdum/demo.git 

然而,当我使用Capistrano运行时,它表示拒绝帐户dorelal的权限。 dorelal是我在GitHub上的帐户。所以我认为Capistrano在我的mac上本地执行任务,而不是在Redhat上的远程服务器上执行。

Capistrano在本地运行该命令确实如此。当我执行

cap staging deploy -vvvv

这是我收到的错误消息

executing locally: "git ls-remote git@github.com:lumdum/demo.git master

注意它说“在本地执行”。为什么capistrano在本地运行而不是在我的远程盒子上运行。

这是我的deploy.rb

set :stages, %w(staging)
require 'capistrano/ext/multistage'

set :repository,  "git@github.com:lumdum/demo.git"
set :scm, :git
set :user, 'deploy'
set :use_sudo, false
set :keep_releases, 2

role :web, "serv1"                 
role :app, "serv1" 
role :db,  "db1", :primary => true 

set :application, "demo_staging"
set :branch, "master"
set :deploy_via, :remote_cache
set :deploy_to, "/var/www/rails/demo"
set :scm_user, 'dorelal_lumdum'
set :user, 'deploy'

set :rails_env, "staging"
set :keep_releases, 1

1 个答案:

答案 0 :(得分:6)

Capistrano在本地运行以确定存储库上的HEAD,然后在后续步骤中使用它来检出(或在Git术语中克隆)从工作站看到的精确修订。

我承认这有点出乎意料!