2014-10-29 3 views
0

У меня есть рельсы 4.1 приложение и многоступенчатое (промежуточное, производственное) развертывание с capistrano3.Специфичные для окружающей среды Capefile capistrano3 rails 4.1

Я хочу, чтобы развернуть его на одном этапе сервер (использование которого РВМ) и один производственный сервер (которые используют рубиновый окр)

По умолчанию все работает хорошо на производственном сервере, но без rvm1-capistrnao3 установлен камень и включен в Capefile Я не могу развернуть его.

Есть ли способ, чтобы требовать «rvm1/capistrano3» в Capefile, только если я развернуть на постановку, как этот

cap staging deploy

ответ

1

При запуске колпачок установки, он создает файл конфигурации/развертывание. rb и два файла в каталоге config/deploy: production.rb и staging.rb. Используйте файл config/deploy.rb для всех параметров, которые имеют как производственные, так и промежуточные серверы. Используйте другие два для соответствующих настроек на этих машинах. Я бы потребовал «capistrano/rvm» в вашем файле Capfile, но его можно использовать только в файле config/deploy/staging.rb. Capistrano запускает общий config/deploy.rb FIRST, а затем вызывает соответствующий файл staging.rb/production.rb, поэтому все установленные значения из config/deploy.rb доступны в файле staging.rb/production.rb.

+0

но когда Я требую «rvm1/capistrano3» в Capefile, это нарушило мои производственные настройки ... и производство крышки разворачивалось с ошибкой «Не могу найти rvm in»/home/user/.rvm'.' –

+0

Я ищу способ использовать rvm1-capi strano только при развертывании. Или проигнорируйте его каким-то образом в config/production при развертывании на производство –

+0

Я предполагаю, что /home/user/.rvm, который он ищет, находится на вашей производственной машине, а не на вашей локальной (развивающейся) машине, не так ли? Я действительно использую rbenv на всех моих (локальных/промежуточных и производственных) машинах. Однако при перечислении драгоценных камней Capistrano в группе разработчиков Gemfile я передаю «require: false» следующим образом: gem 'capistrano-rbenv', '~> 2.0', require: false –

2

Вот что я сделал, чтобы исправить это

Я сделал Capistrano по умолчанию многоступенчатой ​​установки, как сказал Даг Холл!

Хитрость является способ включить rvm1-capistrano3 в Capefile

обходной путь

знакомства Дипак здесь https://github.com/capistrano/rvm/issues/49

Так вместо того, чтобы просто require 'rvm1/capistrano3' в Capefile, сделайте это так

task :use_rvm do 
    require 'rvm1/capistrano3' 
end 

task 'staging' => [:use_rvm] 
Смежные вопросы