2

我需要了解为什么 capistrano 不创建当前文件夹。我正在使用以下命令:cap deploy:setup、cap deploy:check、cap deploy

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

这是我的 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, "git@github.com:.../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'

我不明白错误在哪里,如果有人可以帮助我吗?谢谢

4

2 回答 2

6

它也可能由于文件夹权限而失败。如果选项

set :use_sudo, false

第一次部署 cap 时不存在,当前文件夹以 sudo 作为所有者。当用户更改时,它可能没有足够的权限来更新链接。我删除了符号链接并运行

cap deploy:create_symlink

这为我更新了符号链接。

于 2013-07-22T16:45:29.937 回答
3

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

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

于 2013-02-19T22:20:21.457 回答