【问题标题】:Missing current folder Capistrano Rails 3.2缺少当前文件夹 Capistrano Rails 3.2
【发布时间】:2013-02-19 18:00:38
【问题描述】:

我需要了解为什么 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'

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

【问题讨论】:

  • Capistrano 应该在您的应用程序部署路径 'releases'、'shared' 和 'current' 下创建这些目录(这是指向 release/xxxx 的符号链接)不记得但它可能不会被创建在第一次部署之前,您的应用程序似乎已配置为部署到“/var/www/app/app” - 检查是这种情况并仔细检查部署用户拥有该目录

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


【解决方案1】:

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

set :use_sudo, false

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

cap deploy:create_symlink

这为我更新了符号链接。

【讨论】:

【解决方案2】:

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

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

【讨论】:

  • 我只是在我的 capfile 中注释 load deploy:assets,现在 capistrano 创建了当前的符号链接。
猜你喜欢
  • 1970-01-01
  • 2015-05-03
  • 1970-01-01
  • 2022-06-11
  • 2014-09-20
  • 2019-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多