Версия Force Ruby

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

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

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

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

Примечание: мне все равно, слишком много запрещающих рельсы, работающие с неправильной версией Ruby. Меня больше интересует правильная версия ruby для запуска. Извините за беспорядок.

4 ответов


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

http://rvm.io/

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


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

raise "Wrong ruby version, please use ruby 1.8.7" unless RUBY_VERSION == "1.8.7"

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

require "backports"

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

require "backports/1.8.7"

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

before_filter: check_ruby_version

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