Версия 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 и производственных коробках.
Это позволяет легко переключаться и поддерживать несколько версий 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 конец конец