Развертывание приложения Rails 3 с использованием Bundler и Capistrano - PullRequest
4 голосов
/ 31 марта 2011

Во время развертывания приложения Rails3 в Capistrano я хочу, чтобы мой сервер устанавливал гемы, используя Gemfile.lock, каждый раз при развертывании. И так как мой сервер не имеет rvm и все .. Все гемы должны быть установлены как системные гемы.

Чтобы установить системные гемы, нам нужно поместить sudo gem install anygem или для бундера, нам нужно дать команду sudo bundle install внутри нашего каталога current структуры развертывания capistrano.

Каждый раз, когда я развертываюсь, мое развертывание прерывается в процессе установки гемов. Мне нужно sudo bundle install, чтобы бежать. Для этого мне нужен крюк развертывания для Capistrano Предустановленные, которые поставляются самим пакетом самоцветов, у меня не работают. Моя путаница сводится к этим трем вопросам.

  1. Когда я должен вызывать команду sudo bundle install в процессе развертывания - я имею в виду, после какой задачи capistrano?

  2. Для выполнения sudo команд с использованием capistrano, какие объявления я должен указать в моем файле cap? Примечание. Я уже выдвинул свой открытый ключ в качестве авторизованных ключей на моем сервере.

  3. Как записать хук установки пакета в файл cap?

Пожалуйста, помогите.

Ответы [ 3 ]

5 голосов
/ 31 марта 2011

Добавление require "bundler/capistrano" к вашему deploy.rb должно просто работать. Он должен объявить папку для установки гемов, для которой не требуется доступ sudo, независимо от rvm.

Это все еще не подходит для вас?

2 голосов
/ 31 марта 2011

Если вы запускаете bundle install --deployment, вам не нужен доступ к sudo, поскольку гемы должны быть установлены в вашем приложении или в комплекте, а не в самой системе.

0 голосов
/ 05 декабря 2011

Я использую это в моем deploy.rb:

require "bundler/capistrano"
... deploy recipe

namespace :bundle do
  desc "Install bundles into application"
  task :install, :roles => [:app] do
    run "cd #{current_path} && LC_ALL='en_US.UTF-8' bundle install --deployment --without test"
  end
end

Затем после обычного развертывания я запускаю "cap bundle: install"

note: Использование UTF-8 для предотвращения ruby1.9Проблемы с ASCII-символами.

...