2015-11-07 6 views
1

Это рельсами сервис пумы/runit приложения в работает, пока я не попытался развернуть Sidekiq 3.5.3 камня с моим приложением с помощью шефChef развернут сервер Puma с работником Sidekiq терпит неудачу с неправильным рубиновым версии ошибкой

В моем рецепт я установил 2.0.0p576 через ruby_build рецепт

which ruby #gives me /usr/bin/ruby 
/usr/bin/ruby -v #return 2.0.0p576 

шаблоны/по умолчанию/SV-MyApp-run.erb

echo "$(ruby -e 'print RUBY_VERSION')" >> check_ruby.txt #returns 2.0.0 
exec chpst -u root:root bundle exec puma --config config/puma.rb 

Внутри журнала службы runit я получаю это сообщение бел вл

2015-11-04_06:23:50.99541 /var/lib/gems/1.9.1/gems/sidekiq-3.5.3/lib/sidekiq.rb:3:in `<top (required)>': Sidekiq 3.5.3 does not support Ruby 1.9. (RuntimeError) 

Поскольку это не происходит на месте - я привел полагать, что это что-то делать с шеф-поваром, и как я устанавливаю вверх рубин на хосте

Я также попытался установить rvm, система очистки рубинов и подтвердили, что по умолчанию (глобальный и локальный) в качестве> 2.0 - ничто из этого не изменило.

Я заметил, в/USR/местные/бен/пума декларация

#!/usr/bin/env ruby1.9.1 

Я редактировал это просто рубин - затем перезапустить службу, но никаких изменений. Есть ли способ заставить Puma работать под рубином +> 2.0?

ruby_build_ruby '2.0.0-p576' 

link "/usr/bin/ruby" do 
    to "/usr/local/ruby/2.0.0-p576/bin/ruby" 
end 



gem_package 'bundler' do 
    options '--no-ri --no-rdoc' 
end 

include_recipe "runit" 

deploy_revision("/opt/deploy") do 
    revision "develop" 
    repository "removed" 
    user "root" 
    action :deploy 
    shallow_clone true 
    keep_releases 3 
    rollback_on_error true # remove release if callbacks failed 
    migrate true 
    migration_command "rake db:migrate" 
    before_migrate do 
    execute "bundle install" do 
     command "bundle install" 
     cwd "#{release_path}" 
     user "root" 
    end 
    end 
    #restart_command "rails server -b 0.0.0.0" 
    # disable default behavior 
    symlink_before_migrate.clear 
    create_dirs_before_symlink.clear 
    purge_before_symlink.clear 
    symlinks.clear 
end 

Ubuntu 14.04, Bundler 1.10.6

Спасибо!

ответ

2

Я не думаю, что рубин, который вы установили, является значением по умолчанию для системы (или, по крайней мере, не тогда, когда Chef выполняет bundler). Я основываю это на /var/lib/gems/1.9.1/gems/sidekiq-3.5.3, который, похоже, указывает, что вы установили драгоценный камень под 1.9.1.

Я не знаю, есть ли у вас предпочтение rvm или rbenv, но у каждого есть популярная кулинарная книга сообщества, которая может установить рубиновый режим по умолчанию на тот, который вы хотите использовать, или даже для определенного пользователя (с тех пор вы используете root, я бы сказал, просто установите рубин системы как тот, который вы хотите).

Если вы использовали the rbenv cookbook, это будет выглядеть следующим образом:

include_recipe 'ruby_build' 
include_recipe 'ruby_rbenv' 
rbenv_global '2.0.0p576' 

Вы также могли бы пропустить эти ресурсы вы использовали раньше:

ruby_build_ruby '2.0.0-p576' 
link "/usr/bin/ruby" do 
    to "/usr/local/ruby/2.0.0-p576/bin/ruby" 
end 

Кроме того, я бы рекомендовал работающий как другой пользователь, чем root, так что вы можете только сломать рубины по умолчанию этого пользователя вместо рубина всей системы. Ура!

+0

Спасибо, Мартин - мне пришлось несколько дней попробовать это. В конце концов, это, по-видимому, разница между использованием ресурса chef «gem_package» и использованием ресурса bash для установки bundler - когда я переключился на bundler через bash, все стало хорошо. – MikeW

Смежные вопросы