Как узнать, на какой версии ruby основан существующий проект rails?

У меня есть существующий проект ruby on rails. Как узнать, какая версия ruby изначально используется для приложения?

изменить: Подводя итог этой теме: Если нет конкретных драгоценных камней ruby-версии, каждый Рубин должен работать. Все ваши сообщения были полезными-спасибо.

6 ответов


Если не используются драгоценные камни конкретной версии, я не уверен, что можно определить точную версию ruby, используемую во время разработки. В любом случае, приложение может отлично работать с несколькими версиями, в зависимости от особенностей.

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

проверка минимальной версии Ruby, совместимой с используемой версией Rails, также поможет сузить поле.


некоторые люди используют rvm для управления gemsets в своих проектах, в этом случае .rvmrc содержит эту информацию, например: "ruby-1.9.2-p180@projectname"


ответы выше разделены между двумя случаями:

  1. где приложение все еще работает (в производстве или иначе), где вы можете подключиться к производственной консоли и проверить версию
  2. где единственный "артефакт" доступен исходный код приложения в исходном коде

для #2, ответов покрыть ее довольно много. Вам, ребята, повезло.

для #1, его больше археологической экспедиции. Я считаю, что OP в этом ситуация и я сегодня были в похожей ситуации.

просмотр версий gem, вероятно, лучший способ сделать это.

вот несколько подсказок, которые можно использовать, для справки каждого. (В интересах тех, кто наткнется на эту статью в будущем):

знаки приложение было построено в Ruby 1.8.7

  • существование драгоценного камня SystemTimer в Gemfile.lock (1)
  • существование ruby-debug в GemFile, в отличие от ruby-debug19 для 1.9. Я считаю, что это также может означать 1.8.6

знаки приложение было построено в Ruby 1.9

  • наличие ruby-debug19 в Gemfile
  • строка#force_encoding используется
  • кодировка: UTF-8 в верхней части каждой страницы

знаки приложение было построено с jruby

  • использование ffi

В общем, если Вы читаете старые " руководства по миграции из 1.8.7 для 1.9", в котором перечислены различия, вы можете использовать эти различия, чтобы помочь вам найти ключи. См.:

этот вопрос так:

в чем разница между Ruby и Ruby 1.8 1.9

и это сообщение в блоге airbnb:

http://nerds.airbnb.com/upgrading-from-ree-187-to-ruby-193/

удачи!

(1): "Использование этого драгоценного камня в Ruby 1.9 бесполезно и не имеет никакого смысла! Система таймера попытка обойти некоторые ограничения модели "зеленой нити", используемой в Ruby 1.8 (MRI). Вижу http://ph7spot.com/musings/system-timer для более подробной информации."Выпадающая замена SystemTimer-это timeout.rb от Ruby core.21 октября 2011 " Источник: https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=systemtimer%20gem


для меня я вошел на сервер, где был размещен проект, чтобы увидеть, какая версия была установлена там:ruby --version


Проверьте, использует ли он ruby1.9 только файлы gem, такие как ruby-debug19, или, наоборот, драгоценные камни, которые предназначены только для 1.8. Посмотрите, используется ли String#force_encoding - он может намекнуть, что это 1.9. Другие 1.9 функции реже используются AFAIK.


напишите это: puts RUBY_VERSION