рельсы, новая установка Ubuntu, Capistrano, RVM вопросы - PullRequest
1 голос
/ 04 декабря 2011

Я новый пользователь Capistrano и использую его для развертывания приложения rails 3.1. Кажется, есть проблема с установкой gem на удаленном сервере.

У меня есть следующие вопросы:

  1. Похоже, что установка пакета cap работает на gemfile? Есть ли какие-то зависимости, чтобы это работало успешно? У меня есть rvm и bundler на моем сервере. Нужны ли уже установленные рельсы?

  2. Я вручную установил bundle_cmd в моем deploy.rb следующим образом:

    set :bundle_cmd, '/usr/local/rvm/gems/ruby-1.9.2-p290/bin/bundle'
    

    Должно ли это быть правильно?

  3. Есть ли способ получить подтверждение при развертывании шапки, что ВСЕ необходимые драгоценные камни есть? Или каков наилучший способ отладки неудачной установки пакета на удаленном сервере? Можете ли вы назвать что-то вроде cap gem-list; надеялся, что что-то вроде cap invoke=gem list сделает это, но не похоже на это.

Редактировать # 1

Я получаю следующую ошибку: не удалось: "rvm_path = / usr / local / rvm / usr / local / rvm / bin / rvm-shell" по умолчанию "-c" cd / data / sites / myserver / apps / myapp / Releases / 20111204181321 && установка пакета --gemfile / data / sites / myserver / apps / myapp / Releases / 20111204181321 / Gemfile --path / data / sites / myserver / apps / myapp / shared / bundle --deployment --quiet --without development test '"в 173.230.xxx .xxx

Если я захожу в предыдущий выпуск и запускаю пакетную установку, он говорит, что все установлено правильно, чего не было.

Там написано:

Your bundle is complete! It was installed into /data/sites/myserver/apps/myapp/shared/bundle

но если я зайду туда, то нет ничего, кроме ruby ​​1.9.1, который, насколько я знаю, я не установил (используя ruby ​​1.9.2-p290)

Есть ли способ в capistrono указать его, чтобы не удалять развернутый выпуск, чтобы я мог отладить это явно? Мне нужно жестко указать путь к моему пакету в моем скрипте deploy.rb?

спасибо снова

РЕДАКТИРОВАТЬ 2 Если я войду в текущий выпуск по адресу:

/data/sites/myserver/apps/myapp/current

и запустить:

$ which bundle
/usr/local/rvm/gems/ruby-1.9.2-p290/bin//bundle

Я получаю:

$ bundle install
/usr/local/rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs': Could not find bundler (>= 0) amongst [minitest-1.6.0,rake-0.8.7, rdoc-2.5.8] (Gem::LoadError)
from /usr/local/rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:256:in `to_spec'
from /usr/local/rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems.rb:1210:in `gem'
from /usr/local/rvm/gems/ruby-1.9.2-p290/bin/bundle:18:in `<main>'

1 Ответ

1 голос
/ 04 декабря 2011
  1. Вам уже не нужно устанавливать рельсы, но я думаю, что вам нужно установить пакет. gem install bundler

  2. Вы можете использовать интеграцию RVM и упаковщика из capistrano. В этом случае вам не нужно указывать путь к упаковщику.

    $:.unshift(File.expand_path('./lib', ENV['rvm_path']))
    require "rvm/capistrano"     
    require "bundler/capistrano"     # Load RVM's capistrano plugin.
    
    set :rvm_type, :system
    set :rvm_ruby_string, '1.9.2@gemset_name'
    
  3. Вы можете использовать 'cap shell' для запуска команд через Capistrano на сервере. Вы можете использовать это, чтобы проверить установку всех ваших драгоценных камней. Используйте cap -T, чтобы увидеть все возможности.

Кстати, вам действительно нужны rvm gemsets для вашего приложения? Я использую RVM для установки и обновления моих рубинов на моем производственном сервере, но я позволил Bundler справиться с разделением моих драгоценных камней. Так как стандартные настройки комплектов в производстве помещают все ваши драгоценные камни в поставщика / комплект, это уже отделяет ваши драгоценные камни друг от друга. Это прекрасно работает и с Capistrano.

См. Аналогичный вопрос и ответ здесь . Дополнительную информацию о настройке capistrano / bundler / rvm / passenger можно найти в этом руководстве .

...