Развертывание Capistrano для постановки и производства

. Я пытаюсь развернуть приложение Ruby On Rails как для подготовки, так и для производства, используя Capistrano.

Единственная разница между ними — это домен :и репозиторий :

. Я следил за этим руководством здесь:https://github.com/capistrano/capistrano/wiki/2.x-Multistage-Extension

Я искал в сети, и все, что я нашел, это статьи, которые в основном перефразировали то, что у меня было выше.

Я попытался просто установить домен :и репозиторий :в файлах config/deploy/staging.rb и config/deploy/production.rb

. Я проверил свое правописание, чтобы убедиться, что я правильно написал поддиректории -и имена файлов.

Читая эту статью:staging и живое приложение с capistrano , похоже, я должен просто указать здесь различия.

Не похоже, что файл staging.rb на самом деле читается. Я изменил свой «deploy.rb», чтобы в первой строке было одно ругательство, «cap deploy» дает мне ожидаемую ошибку.

Если я помещу одно нецензурное слово в первую строку «staging.rb» или «production.rb», я получу ту же ошибку :

`method_missing': undefined local variable or method `domain'

. Речь идет о строке :

role :web, domain

. потому что значение не подбирается. Но ведь он должен терпеть неудачу из-за единственного ругательства в staging.rb или production.rb и вообще не запускаться?

Если я перемещаю домен :и репозиторий :обратно в основной файл «deploy.rb», я получаю сообщение об ошибке с матерным словом. Так что, казалось бы, я не могу задавать переменные в файлах "staging.rg" и "production.rb", а только выполнять задачи.

Любая помощь будет очень признательна, или вы думаете, что я должен просто взяться за работу по доставке пиццы...

развернуть.rb:

require 'capistrano/ext/multistage'
set :stages, %w(production staging)
set :default_stage, "staging"

set :user, 'dave'

set :applicationdir, "~/rails/example.com"

set :scm, 'git'

set :git_enable_submodules, 1 # if you have vendored rails
set :branch, 'master'
set :git_shallow_clone, 1
set :scm_verbose, true

set :keep_releases, 5
after "deploy:update", "deploy:cleanup"

# roles (servers)
role :web, domain
role :app, domain
role :db,  domain, :primary => true

after "deploy", "deploy:migrate"

# deploy config
set :deploy_to, applicationdir
set :deploy_via, :export
# set :rake, 'bundle exec rake'

# additional settings
default_run_options[:pty] = true  # Forgo errors when deploying from windows
set :ssh_options, {:forward_agent => true}
#ssh_options[:keys] = %w(/home/user/.ssh/id_rsa)            # If you are using ssh_keysset :chmod755, "app config db lib public vendor script script/* public/disp*"set :use_sudo, false


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

И мой файл config/deploy/staging.rb:

set :domain, 'example.com'
set :repository,  "ssh://dave@example.com/~/rails/chamonix-mont-blanc.net"

Если я помещу домен :и репозиторий :в основной файл «deploy.rb», все будет отлично работать.

6
задан Community 23 May 2017 в 11:53
поделиться