2013-02-19 173 views
2

我需要了解为什么capistrano不会创建文件夹当前。我使用以下命令:cap deploy:setup,cap deploy:check,cap deploy缺少当前文件夹Capistrano Rails 3.2

但是,当我检查我的应用程序目录时,我没有当前的文件夹。

这是我deploy.rb

# Execute "bundle install" after deploy, but only when really needed 
require 'bundler/capistrano' 

# Automatically precompile assets 
load "deploy/assets" 

# RVM integration 
require "rvm/capistrano" 

# Application name 
set :application, "app" 

# Application environment 
set :rails_env, :production 

# Deploy username and sudo username 
set :user, "ubuntu" 
default_run_options[:pty] = true 
ssh_options[:forward_agent] = true 


#We don't want to use sudo (root) - for security reasons 

set :use_sudo, false 

#Target ruby version 

set :rvm_ruby_string, '1.9.3-p374' 

#System-wide RVM installation 

set :rvm_type, :user 

#We use sudo (root) for system-wide RVM installation 

set :rvm_install_with_sudo, true 

#git is our SCM 

set :scm, :git 

#Use github repository 
set :repository, "[email protected]:.../CM.git" 

#master is our default git branch 

set :branch, "master" 

#Deploy via github 

set :deploy_to, "/var/www/app/#{application}" 
set :deploy_via, :remote_cache 

#We have all components of the app on the same server 
server "125.156.125.125", :app, :web, :db, :primary => true 

namespace :deploy do 
task :restart, :roles => :app, :except => { :no_release => true } do 
    run "#{try_sudo} touch #{File.join(current_path,'tmp','restart.txt')}" 
end 
task :symlink_shared do 
    run "ln -nfs #{shared_path}/config/database.yml #{release_path}/config/database.yml" 
    run "ln -nfs #{shared_path}/assets #{release_path}/public/assets" 
end 
task :assets do 
    system "rsync -vr --exclude='.DS_Store' public/assets #{user}@#{application}:#  {shared_path}/" 
end 
end 
after 'deploy:update_code', 'deploy:symlink_shared' 

我不明白的地方是错误,如果有人可以帮我吗? 谢谢

+0

Capistrano应该在您的应用程序部署路径“发布”,“共享”和“当前”下创建这些目录(这是发布/ xxxx的sym链接)不记得,但它可能不会在首次部署之前创建,应用程序似乎被配置为部署到“/ var/www/app/app” - 检查是这种情况并仔细检查部署用户拥有目录 – house9 2013-02-19 18:38:15

回答

3

Capistrano创建一个当前的符号链接(不是目录)作为其部署周期中最后一个步骤之一,通常在应用程序服务器发送启动/重新启动命令之前。它无法在部署之前创建该符号链接,因为没有任何符号链接(在/releases中没有签出)。

如果它仍然没有创建符号链接,请检查您的capistrano部署日志是否有错误,如果它在创建之前出现错误,则不会创建符号链接。如果出现错误,请将其发布在您的问题中。

+0

我只是在我的capfile中评论load deploy:assets,现在capistrano创建当前的符号链接。 – Pinou 2013-02-20 14:15:25

6

它也可能因文件夹权限而失败。 如果在第一次盖帽被部署选项

set :use_sudo, false 

不存在,当前文件夹中有须藤作为所有者。当用户被更改时,它可能没有足够的权限来更新链接。 我删除了符号链接并运行

cap deploy:create_symlink 

这更新了我的符号链接。

+0

我从来没有'setup','create_symlink'等这些任务 - 你从哪里得到它们? – 2015-03-09 15:21:45

+0

你可以在这里找到它:https://github.com/capistrano/capistrano/wiki/capistrano-tasks – Lavixu 2015-05-18 08:29:32