Переключите ruby ​​при перезапуске приложения rails, развернутого на Passenger - PullRequest
2 голосов
/ 05 апреля 2011

Можно ли переключиться с Ruby 1.8.7 на 1.9.2 при перезапуске приложения Rails, развернутого в Passenger?Должна быть возможность изменить PassengerRuby в httpd.conf и перезапустить Apache.Я хочу знать, как это можно сделать, не перезапуская Apache каждый раз.

Дополнительная информация: у нас есть два разных приложения, одно на Rails 2.3.8 и одно на 3.0.5 с одинаковым именем, и мы хотим переключаться между ними в целях тестирования.

Спасибо.

Ответы [ 3 ]

1 голос
/ 06 апреля 2011

Вам не нужна перекомпиляция.Вам просто нужно изменить параметр PassengerRuby на веб-сервере.Однако вам действительно нужно перезапустить веб-сервер, просто прикоснувшись к restart.txt, недостаточно.

Вы также можете использовать Passenger Standalone в качестве замены для настройки обратного прокси-сервера Thin / Mongrel / Unicorn, о которой упоминал bioneuralnet.На самом деле у нас есть пост в блоге, посвященный запуску нескольких версий Ruby с помощью Passenger Standalone: ​​http://blog.phusion.nl/2010/09/21/phusion-passenger-running-multiple-ruby-versions/

1 голос
/ 24 июня 2011

Да, вы можете выбрать, какую версию ruby ​​вы используете. Жизнь проста, если вы используете rvm (http://rvm.beginrescueend.com/).). Затем вы можете установить gem для пассажиров в разных средах ruby, а когда вы делаете это в каждой среде, команда passenger-install-apache2-module сообщит вам, что поместить в файл конфигурации apache. Например, мой сейчас (Mac OSX - должен быть похож на другие * никсы):

### system ruby and passenger
#LoadModule passenger_module /Library/Ruby/Gems/1.8/gems/passenger-3.0.7/ext/apache2/mod_passenger.so
#PassengerRoot /Library/Ruby/Gems/1.8/gems/passenger-3.0.7
#PassengerRuby /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby

### rvm gemset 1.8.7@rails2.3.11 ruby and passenger
LoadModule passenger_module /Users/matt/.rvm/gems/ruby-1.8.7-p334@rails2.3.11/gems/passenger-3.0.7/ext/apache2/mod_passenger.so
PassengerRoot /Users/matt/.rvm/gems/ruby-1.8.7-p334@rails2.3.11/gems/passenger-3.0.7
PassengerRuby /Users/matt/.rvm/wrappers/ruby-1.8.7-p334@rails2.3.11/ruby

Я могу прокомментировать / раскомментировать соответствующий файл и перезапустить apache с другой версией ruby. Это также работает для ruby ​​1.9.2 и ruby ​​Enterprise Edition.

0 голосов
/ 05 апреля 2011

Поскольку тип Passenger «встраивает» себя в Apache, я не могу переключать интерпретаторы ruby ​​без перезапуска (и, возможно, даже перекомпиляции Passenger?). Чтобы достичь такого уровня гибкости, вам может понадобиться какая-то настройка обратного прокси-сервера с использованием автономного сервера приложений, такого как Thin, Unicorn или Mongrel, работающего за Apache или Nginx.

Если об этом не может быть и речи, то приложения Rails 2.3.8 и 3.0.5 строго могут работать на Ruby 1.8.7. У меня есть несколько приложений Rails 3, развернутых на 1.8.7, хотя, надеюсь, это скоро изменится. Если ваше приложение 3.0.5 не имеет явных зависимостей 1.9, почему вы не можете просто запустить их вместе на 1.8 на отдельных виртуальных хостах?

...