Многоступенчатый Capistrano - не создавать символические ссылки dev/prod (только 'current')

Я настроил это раньше, но не могу заставить его работать сейчас. Я хочу разработку и производство сайта. Когда я выполняю cap развертывание, он устанавливает "текущую" символическую ссылку (не знаю, как я это сделал, поскольку долгое время он этого даже не делал). Но как мне заставить его развернуть и настроить необходимую символическую ссылку для dev/prod?

Мой файл deploy.rb:

#require 'bundler/capistrano'
require 'capistrano/ext/multistage'
require 'capistrano_colors'

set :stages, %w(development production)
set :default_stage, 'development'

set :application, "myapp"
set :repository,  "***"

# Target directory on the server
set :deploy_to, "/var/www/#{application}"

set :scm, :git
set :deploy_via, :remote_cache

set :user, '***'
set :use_sudo, false

role :web, "68.225.130.30"                          # Your HTTP server, Apache/etc
role :app, "68.225.130.30"                          # This may be the same as your `Web` server
role :db,  "68.225.130.30", :primary => true # This is where Rails migrations will run

# List of symlinks to be generated. Keys are subdirectories of release_path.
SYMLINKS = { :config => ['database.yml'],
             :public => ['system'] }

namespace :deploy do
  task :start do ; end
  task :stop do ; end
  task :restart, :roles => :app, :except => { :no_release => true } do
    run "#{try_sudo} touch #{File.join(current_path,'tmp','restart.txt')}"
    # Not working =/
    #run "touch /var/www/#{current_path}/tmp/restart.txt"
  end

  desc "Set up application symlinks."
  task :app_symlinks do
    SYMLINKS.keys.each do |key|
      dir = key.to_s
      SYMLINKS[key].each do |path|
        run "ln -nfs #{shared_path}/#{dir}/#{path} #{release_path}/#{dir}/#{path}"
      end
    end
  end
end

мой файл deploy/development.rb:

set :deploy_to, "/var/www/#{application}"
set :branch, "master"
unset :rails_env
set :rails_env, "development"

UPDATE / ОТВЕТ:

Проблема была с переменной current_path. Странно, так как я пытался использовать

set:current_path, "development"

а также

set:current_path, "#{application}/development"

и это не сработало. Похоже, я должен установить весь путь, что кажется странным, так как я использовал последний ранее.

set :current_path, "/var/www/#{application}/development"

Кто-нибудь знает почему?

1 ответ

:current_path устанавливается capistrano на основе пути:deploy_to + имя: приложения. Вы можете использовать только:current_path в своих задачах с пространством имен.

Другими словами, это вспомогательная переменная, используемая для создания символических ссылок, перезапуска серверов и других задач.

Другие вопросы по тегам