2011-04-05 61 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文件加載,導致每個部署到該環境失敗,併發布錯誤。