Как обновить версию Ruby, используемую Passenger, когда я обновляю Ruby и его Gemlist с помощью RVM и Capistrano? Каков наилучший способ проверить, использует ли мое приложение правильную рубиновую версию и gemset?Обновлен до версии Ruby 2.1.2, пассажир все еще на 1.9.3
У меня есть приложение Rails, работающее на сервере Linode (Ubuntu), с NGinx и Passenger. Перед тем, как он работал без каких-либо проблем.
Ранее мое приложение было работает Ruby On Rails 3.2.16 с Руби 1.9.3-P194
я использую RVM для управления версиями рубина как локально, так и на сервере. После того, как я установил Ruby-2.1.2 и обновил основные драгоценные камни (bundler, nokogiri и т. Д.), Я создал свой новый gemset для своего приложения.
В разработке (локально) Я использую Ruby 2.1.2, рельсы 3.1.19 (до перехода на Rails 4) и конкретный gemset для этого проекта.
Я изменил мой deploy.rb
для Capistrano, следуя RVM-Capistrano gem Integration
require "rvm/capistrano"
require "bundler/capistrano"
set :user, "myusername"
set :application, "myapp"
set :deploy_to, "/home/#{user}/apps/#{application}"
set :scm, :git
set :repository, "[email protected]:myusername/#{application}.git"
set :branch, "master"
set :rvm_ruby_string, :local # use the same ruby as used locally for deployment
set :rvm_autolibs_flag, "read-only" # more info: rvm help autolibs
set :use_sudo, false
set :deploy_via, :remote_cache
set :keep_releases, 3
default_run_options[:pty] = true
set :ssh_options, { :forward_agent => true }
before 'deploy:setup', 'rvm:install_rvm' # install/update RVM
before 'deploy:setup', 'rvm:install_ruby' # install Ruby and create gemset
after "deploy:restart", "deploy:cleanup"
after "deploy", "rvm:trust_rvmrc"
namespace :deploy do
task :start do ; end
task :stop do ; end
task :restart, :roles => :app, :except => { :no_release => true } do
run "#{try_sudo} touch #{File.join(current_path,'tmp','restart.txt')}"
end
# ... some more tasks for assets and symlinks
end
namespace :rvm do
task :trust_rvmrc do
run "rvm rvmrc trust #{release_path}"
end
end
Я побежал cap deploy
Я освежил мою страницу и Passenger бросает следующие ошибки:
It looks like Bundler could not find a gem. Maybe you didn't install all the gems that this application needs. To install your gems, please run:
bundle install
...
Could not find rake-10.3.2 in any of the sources (Bundler::GemNotFound)
/home/myusername/.rvm/gems/[email protected]/gems/bundler-1.5.3/lib/bundler/spec_set.rb:92:in `block in materialize'
...
Ruby interpreter command
/home/myusername/.rvm/gems/ruby-1.9.3-p194/wrappers/ruby
Таким образом, очевидно Пассажир все еще работает Ruby-1.9.3, а не Ruby-2.1.2. Я не уверен, что RVM-Capistrano установил/обновил версию Ruby и соответствующий gemset. Я не уверен, что я пропустил?
EDIT: Я проверил nginx.conf
в качестве корневого пользователя в /opt/nginx/conf/nginx.conf
В верхней части файла, который я нашел
...
http {
passenger_root /home/myusername/.rvm/gems/ruby-1.9.3-p194/gems/passenger-4.0.37;
passenger_ruby /home/myusername/.rvm/gems/ruby-1.9.3-p194/wrappers/ruby;
...
server {
listen 80;
server_name XXX.XXX.XX.XX myapp.com www.myapp.com *.myapp.com;
root /home/myusername/apps/myapp/current/public;
passenger_enabled on;
client_max_body_size 4G;
}
Означает ли это, что я должен изменить эти строки с рубинового 2.1.2? Есть ли способ автоматизировать это изменение?
UPDATE 2: Я изменил nginx.conf
http {
passenger_root /home/myusername/.rvm/gems/[email protected]/gems/passenger-4.0.53;
passenger_ruby /home/myusername/.rvm/gems/[email protected]/wrappers/ruby;
и в моем deploy.rb
я явно сказать, чтобы использовать gemset [email protected]
set :rvm_ruby_string, "[email protected]"
приложение работает отлично, рубин переводчик все же 1.9.3. Я даже распечатаны на странице администратора константа RUBY_VERSION
и отображает 1.9.3
Я не понимаю ...
Спасибо за вашу помощь
Спасибо за ваш ответ. Модуль «пассажир-nginx» уже установлен и обе работают. На Ruby 1.9.3 у меня есть жемчужина 4.0.37, а на Ruby 2.1.2 у меня есть жемчужина 4.0.53. Проблема заключается в том, что я изменяю свой файл deploy.rb capistrano с другой версией ruby, отличной от 1.9.3-p194, а затем развертываю его, пассажир отправляет кучу ошибок. –