Версия Force Ruby - PullRequest
       19

Версия Force Ruby

6 голосов
/ 21 января 2010

Я просто сгорел, потому что я использовал find_index для массива на моем компьютере разработчика (OSX с Ruby 1.8.7), а машина для развертывания работает на Ruby 1.8.6. (В чем разница между find_index и index? Последний работает на 1.8.7 и 1.8.6)

Итак, это заставило меня задуматься: Каков наилучший способ заставить Rails работать с определенной версией Ruby?

Поскольку это, вероятно, актуально (установите несколько рубинов!), Мне нужно знать это для OSX, но было бы полезно знать и для Linux, Windows и Commodore 64.

Позже: Конечно, я сейчас работаю в виртуальном устройстве, но я хотел бы иметь возможность контролировать свои версии Ruby, если это возможно, на моем компьютере.

Примечание: Меня не слишком волнует запрет Rails, работающий с неверной версией Ruby. Меня больше интересует запуск ПРАВИЛЬНОЙ рубиновой версии. Извините за путаницу.

Ответы [ 4 ]

5 голосов
/ 21 января 2010

Это не требует обязательной версии ruby, но вы, возможно, захотите использовать что-то вроде RVM, чтобы легко управлять средой ruby ​​на ваших разработчиках и производственных блоках.

http://rvm.io/

Это позволяет вам легко переключать и поддерживать несколько версий ruby ​​в вашей системе.

4 голосов
/ 21 января 2010

Это грубая сила и невежество, но один подход будет

raise "Wrong ruby version, please use ruby 1.8.7" unless RUBY_VERSION == "1.8.7"
1 голос
/ 21 января 2010

Другой способ взглянуть на проблему - игнорировать различия в версии Ruby, которую вы используете. Мой бэкпорт драгоценный камень обновляет Ruby 1.8.6 в строке 1.8.x (включая предстоящий 1.8.8) и большую часть 1.9:

require "backports"

Или же, для менее смелых среди нас, вам могут потребоваться только функции 1.8.7:

require "backports/1.8.7"
1 голос
/ 21 января 2010

Используйте константу RUBY_VERSION в вашем контроллере приложений. Это показывает рендеринг страницы с ошибкой 500. Вы хотите настроить новую страницу в общедоступном каталоге с соответствующим сообщением.

before_filter: check_ruby_version

def check_ruby_version если RUBY_VERSION == "1.8.7" render: file => File.join (Rails.public_path, '500.html'),: status => 500 конец конец

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...