Управление многими приложениями Ruby on Rails разных версий - PullRequest
1 голос
/ 20 декабря 2009

Я изучаю Ruby on Rails с книгой AWDR и должен был точно указать, какую версию Rails и Ruby я использую на своей локальной машине. Я только что обнаружил, что мне нужно откатиться с ruby ​​1.8.7 на ruby ​​1.8.6 здесь . Мне также нужно было откатить Rails для поддержки метода скаффолда, чтобы я мог легко начать учебник.

У меня вопрос: когда я начну заключать контракты, разрабатывать и развертывать проекты в реальном мире, как я буду управлять всеми этими различными версиями?

Мне кажется, что низкая терпимость Rail к устаревшему коду сводит на нет его философию простоты использования! Но я уверен, что вырасту, чтобы оценить RoR.

Ответы [ 3 ]

3 голосов
/ 20 декабря 2009

Что касается Rails, то, что вы можете сделать, это заморозить вашу версию, например:

  1. Убедитесь, что установлена ​​правильная версия Rails, предположим, что вам нужна версия 2.2.2: gem install rails v = 2.2.2
  2. Заморозить и упаковать Rails с самим проектом: rake rails:freeze:edge RELEASE=2.2.2

Теперь вы найдете Rails, упакованный в папке vendor вашего проекта, так что вам не нужно устанавливать Rails на развертывающую машину.

А для Ruby мне нравится Ruby Version Manager (RVM), самый простой способ управления версиями Ruby.

2 голосов
/ 20 декабря 2009

RubyGems - менеджер пакетов Ruby. Вы можете установить столько версий гемов (пакетов), сколько захотите. Вы можете установить последнюю версию, запустив sudo gem install rails (на данный момент она установит 2.3.5). Если вам нужен 2.2.2, укажите это с помощью опции -v или --version: sudo gem install rails --version 2.2.2. Rails также устанавливает двоичный файл (да, я знаю, что это не бинарный файл) rails, который генерирует проект. Поскольку у вас есть несколько версий гема, вам нужно контролировать, какой двоичный файл вызывается. Когда вы устанавливаете гем rails, RubyGems помещает файл в bin/ dir, который является «ссылкой» на настоящий rails бинарный файл. Это тот, кого вы «вызываете», когда произносите rails в командной строке. Тем не менее, все исполняемые файлы rubygems "link" принимают собственный параметр, то есть какую версию вы хотите использовать. Вы бы использовали бинарник 2.2.2 рельсов, как это:

rails _2.2.2_ my_project

Я думаю, что по умолчанию используется самая последняя версия, поэтому, если вы хотите использовать самую последнюю версию, сделайте следующее:

rails myproject

Однако я вижу, что вы используете 2.2.2 для получения доступа к методу scaffold. Я настоятельно рекомендую вам не использовать этот метод, есть причина для его удаления. Метод scaffold скрывает код и усложняет настройку. Вместо этого используйте генератор строительных лесов:

./script/generate scaffold --help

Удачи в будущих приключениях на рельсах!

2 голосов
/ 20 декабря 2009

Последняя версия Agile Web написана для 2.2.2. Для этого основного приложения они проведут вас, я уверен, что оно должно работать с 2.3.x

Ответ на вопрос о том, как вы будете в курсе, заключается в том, что вы обновляете свои приложения по мере необходимости и читаете API и Changleogs, чтобы узнать, что изменилось, и исправить то, что не удается обновить. Отличный способ справиться с этим - иметь хороший набор тестов с хорошим тестовым охватом.

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