Нужно ли мне возвращаться к более старой версии Rails только для запуска одного устаревшего приложения (среди других проблем)?

У меня есть более старое приложение Rails, которое мне нужно запустить. Но у меня последняя версия Rails.

Когда я пытаюсь запустить это старое приложение, оно говорит:

Отсутствует гем Rails 1.99.0. Пожалуйста gem install -v=1.99.0 rails

Но когда я запускаю команду: gem install -v = 1.99.0 rails

ОШИБКА: не удалось найти рельсы для драгоценных камней локально или в репозитории.

Не уверенны что делать дальше. Может ли кто-нибудь помочь мне понять, что здесь происходит?

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


person Bijou    schedule 28.04.2009    source источник


Ответы (3)


AFAIK, v1.99.0 - это своего рода предварительный релиз v2.0, поэтому вы можете попробовать установить v2.0.x, изменить RAILS_GEM_VERSION в config/environment.rb и запустить rake rails:update.

Если задуматься, это не так глупо, как может показаться поначалу. Вы делаете приложение, используя быстро развивающийся веб-фреймворк как RoR. Ваш выбор: продолжить разработку приложения примерно в том же темпе, что и фреймворк, или заморозить драгоценный камень rails (и все остальное, от чего зависит ваше приложение, например драгоценные камни, плагины) в своем приложении, чтобы сделать его менее уязвимым для ожидаемого драгоценного камня. обновления.

person xyz    schedule 28.04.2009
comment
О, что я имел в виду под словом «глупый»: мне нужно установить гем для запуска этого приложения, а затем мне нужно удалить его и установить другой гем rails для другого приложения. Мне это кажется глупым. Есть ли способ установить гем rails для каждой из версий rails, которые мне нужно запускать, а затем запускать все, что мне нужно каждый раз? Или мне нужно повторно устанавливать и удалять? - person Bijou; 29.04.2009
comment
Вы можете иметь несколько установок Rails в системе одновременно - это то, для чего разработан RubyGems. Ваша конкретная проблема здесь в том, что 1.99.0 не был настоящим выпуском и, следовательно, больше не доступен на серверах гемов. - person Sarah Mei; 29.04.2009
comment
Это сработало! Спасибо, парни. Итак, rails знает, что мне нужна версия 2.0.1, потому что это то, что я поместил в файл environment.rb? Поэтому, когда я запускаю скрипт / сервер, мне не нужно передавать какие-либо явные параметры. И я все еще могу запускать свои новые приложения Rails, ничего не удаляя, потому что environment.rb укажет на использование для них более новой версии Rails. Надеюсь, я правильно понял. - person Bijou; 29.04.2009
comment
Я бы использовал 2.0.3 (я думаю), в нем есть некоторые исправления безопасности, но, скорее всего, оно будет поддерживать ваше приложение. - person nitecoder; 29.04.2009

По поводу второго вопроса: да, это глупо. К счастью, команда Rails заметила эту глупость и в какой-то момент дала нам возможность «заморозить» версии библиотек Rails, необходимые для приложения (а также определенные версии гемов) в каталоге vendor.

Чтобы заморозить вашу версию Rails:

rake rails:freeze:gems

Некоторое время назад есть хорошее сообщение в блоге, описывающее это.

person Mike Woodhouse    schedule 29.04.2009

Если вы не установите и не развернете RVM, ваша установка откатит установку системных рельсов, что повлияет на другие ваши проекты. Если вы хотите вручную администрировать среду разработки таким образом, вы можете сначала удалить rails, а затем установить желаемую версию rails для текущего проекта.

Но попробуйте вместо этого установить гем rails с таким синтаксисом:

sudo gem install rails -v 1.99.0
person mike montagne    schedule 21.05.2012