Использование Gem Dependencies, если сервер 2.0 вместо 2.1 - PullRequest
0 голосов
/ 24 декабря 2010

На работе для внутренних приложений Rails на сервере работают Rails 2.0.4 и Ruby 1.86. Насколько я знаю, это не изменится в ближайшее время, и я не могу это контролировать. Я собирался попробовать и проверить это между парой компьютеров, и мне было любопытно, если бы кто-нибудь знал, что произойдет.

Поскольку сервер работает на 2.0.4, я бы хотел построить приложения Rails 2.3.5 для этого сервера, если это вообще возможно. Из того, что я понимаю до сих пор, это не будет проблемой, если я заморозу драгоценные камни и зависимость upack. Это звучит правильно?

Кроме того, на внутреннем рабочем сервере нет драгоценных камней, кроме того, что устанавливает Rails. Что мне интересно, так это то, что если я могу успешно запустить приложение 2.3.5 на сервере 2.0.4, могу ли я использовать дополнительные гемы и распаковать их для использования, даже если на сервере их нет? Я знаю, что это была версия 2.1, которая представила зависимости Gem, чтобы приложение 2.3.5 Rails, работающее на сервере 2.0.4, могло использовать требуемые гемы, распакованные в приложение?

Одной из худших вещей в этой ситуации является то, что даже если вышеуказанные вещи работают, сервер на 1.86 не позволит мне использовать много действительно крутых гемов, для которых требуется Ruby 1.87 (например, Formtastic).

Спасибо

Ответы [ 2 ]

0 голосов
/ 25 декабря 2010

Я пошел вперед и сделал ногу, чтобы проверить это. Если это кому-нибудь еще поможет:

Rails 2.3.5 будет нормально работать на сервере 2.0.x. С Rails 2.1 или выше вы можете распаковать гемы, и ваше приложение будет работать на сервере 2.0.x (сервер более низкой версии). Это шаги, которые я предпринял по порядку. Единственное, что здесь уникально, так это версия Rack, специфичная для Rails 2.3.5 (и ниже). В версии 2.3.6 и выше они перешли на стойку 1.1. Я придерживаюсь 2.3.5 из-за проблем с Rack с 2.3.6 и более поздних версий, например, из-за прерванных загрузок из нескольких частей).

  • (внутри директории вашего приложения).
  • рельсовые рейки: заморозить: драгоценные камни
  • rake gems: распаковать: зависимости
  • (создайте папку Gems в папке поставщика, если ее там нет)
  • (Перейдите в папку с гемами: your_app \ vendor \ gems)
  • gem unpack rack -v = "1.0.1"
  • (Теперь внутри папки gem должна быть папка "rack-1.0.1")
  • (вернуться обратно в корневую папку вашего приложения)
  • rake gems: refresh_specs

Я проверил это с помощью authlogic gem - перенес проект на запасной ноутбук, на котором был установлен только Rails 2.0.4 и никаких других гемов (кроме MySQL и Mongrel). Единственное, в чем я пока не уверен, так это в том, что гем, требующий файл сценария, будет запущен для установки после того, как будет работать файл гема (например, Simple Forms). Я собираюсь проверить это в следующий раз, когда у меня будет время.

0 голосов
/ 24 декабря 2010

Вы можете вручную указать версию Rails, используемую в приложении, в файле conf / environment.rb с помощью переменной RAILS_GEM_VERSION.

Вы не сможете использовать гемы, которые не установлены на вашем сервере, потому что приложение не сможет найти библиотеки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...