2011-04-05 34 views
10

我试着去部署使用Capistrano的我的应用服务器上运行,但我得到这个错误信息:部署使用Capistrano的 - 只为匹配

`部署:设置”仅用于服务器匹配{运行:除了= > {:no_release =>真}},但没有服务器匹配

运行此命令:

bundle exec cap deploy:setup 

这是我deploy.rb文件。

set :application, "example.com" 
set :repository, "[email protected]:username/repo.git" 
set :use_sudo, false 
set :scm, :git 
set :web, application 
set :app, application 
set :db, application 
set :branch, "master" 
set :user, "webmaster" 
set :deploy_to, "/opt/www/#{application}" 
set :deploy_via, :remote_cache 
set :domain, application 
set :port, 2222 

set :bundler_cmd, "bundle install --deployment --without=development,test" 
ssh_options[:paranoid] = false 

namespace :deploy do 
    task :start do ; end 
    task :stop do ; end 

    task :restart_stalker do 
    run "cd #{deploy_to}/current && thor stalker:kill && stalker:init" 
    end 

    task :restart, :roles => :app, :except => { :no_release => true } do 
    run "cd #{deploy_to}/current && touch tmp/restart.txt" 
    end 

    after "bundler_cmd", "deploy:restart_stalker" 
end 

我用Rails 3

回答

9

您需要定义一些角色。例如:

role :app, 'myapphostname' 
role :web, 'mywebhostname' 

看来您使用的是“设置”而不是“角色”,但您应该在进行更改之前确认。

+0

完美,谢谢! – Oleander 2011-04-05 21:51:12

1

看来你已经设置了您的服务器bundle exec cap deploy:setup

如果是这种情况,您现在应该运行bundle exec cap deploy

2

大多数人都可能在capistrano上使用multistage,所以你不会把你的角色放在deploy.rb中,所以如果你在config/deploy /#env_name.rb中添加了特定于环境的角色,那么一定要在你的配置文件中添加这些角色/deploy.rb

set :stages, %w(#env_name1, #env_name2...) 
require 'capistrano/ext/multistage' 

并确保安装了capistrano-ext gem。

0

我打算在这里留下一个答案,帮助我在没有任何建议的答案在这里或其他地方可以帮助我 - 我花了几天的时间研究这个问题,然后才找到修复程序。

确保如果使用多级的环境特定的配置文件(如config/deploy/environment.rb)都在config/deploy目录只有文件。我有一个我无法部署的环境,dev,原来那里是一个完整的空config/deploy/dev文件,而不是我的config/deploy/dev.rb文件加载,导致每个部署到该环境失败,并发布错误。