Как узнать, на какой версии ruby основан существующий проект rails?
У меня есть существующий проект ruby on rails. Как узнать, какая версия ruby изначально используется для приложения?
изменить: Подводя итог этой теме: Если нет конкретных драгоценных камней ruby-версии, каждый Рубин должен работать. Все ваши сообщения были полезными-спасибо.
6 ответов
Если не используются драгоценные камни конкретной версии, я не уверен, что можно определить точную версию ruby, используемую во время разработки. В любом случае, приложение может отлично работать с несколькими версиями, в зависимости от особенностей.
Если приложение имеет комплексные тесты, вы можете просто вернуться, чтобы найти последнюю версию, для которой все тесты проходят.
проверка минимальной версии Ruby, совместимой с используемой версией Rails, также поможет сузить поле.
некоторые люди используют rvm для управления gemsets в своих проектах, в этом случае .rvmrc содержит эту информацию, например: "ruby-1.9.2-p180@projectname"
ответы выше разделены между двумя случаями:
- где приложение все еще работает (в производстве или иначе), где вы можете подключиться к производственной консоли и проверить версию
- где единственный "артефакт" доступен исходный код приложения в исходном коде
для #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.