缺少当前文件夹Capistrano Rails 3.2

时间:2013-02-19 18:00:39

标签: ruby-on-rails ruby-on-rails-3.2 capistrano rvm-capistrano

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

但是当我在我的app目录中检查时,我不是当前的文件夹。

这是我的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'

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

2 个答案:

答案 0 :(得分:6)

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

set :use_sudo, false
部署第一次上限时

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

cap deploy:create_symlink

这为我更新了符号链接。

答案 1 :(得分:3)

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

如果仍然没有创建符号链接,请检查capistrano部署日志以查找错误,如果符号链接在进入该点之前有错误,则不会创建符号链接。如果有错误,请在您的问题中发布。