Ищем лучшие практики SVN при создании Rails-приложений в Ubuntu

Сначала немного фона.

Я работаю на платформе MS всю свою карьеру разработчика. Вплоть до 2 недель назад я никогда не загружал никакие другие ОС, кроме 98/XP/Vista. Я начал использовать VSS очень давно, и сделал изменения в SVN около 2 лет назад. С SVN я использую TortiseSVN и использую стандартную установку branch/tag/trunk.

Мои проекты также самодостаточны, то есть я могу перейти в новую коробку разработчика, развернуть один репозиторий, открыть VS, нажать F5, и он запустится (большую часть времени). Все зависимости хранятся в lib папка, исходный код находится в src папка и т.д...

Стремясь узнать что-то новое, я решил создать приложение Ruby on Rails и создал машину для разработки на основе Ubuntu. У меня есть сервер SVN, работающий и работающий с другим человеком в этом проекте. Он использует Mac для своей машины для разработки.

А теперь по вопросам.

Кажется, я борюсь с тем, как управлять различными версиями ruby, rails и всеми плагинами, с которыми я работаю. Я также, кажется, борюсь с использованием SVN в Ubuntu.

Итак, Ubuntu поставляется с предустановленным Ruby. Я хочу сказать, что это версия 1.8.5. В любом случае, мне нужно было установить несколько гемов для плагина, который я использую (Community Engine). Будучи новичком в *nix, я не использовал sudo при их установке и столкнулся с всевозможными проблемами. Я закончил тем, что полностью сдул Руби и начал все заново. Это, казалось, сработало.

Проблема, однако, в том, что после того, как я фиксирую свой код, а другой парень получает последнюю версию, он должен пройти весь процесс установки гемов.

Какова лучшая практика для управления гемами и плагинами в приложении RoR? Мне все равно, если в SVN будут добавлены миллионы файлов. Дисковое пространство и пропускная способность сети дешевы. Я просто не знаю, как сделать это правильно.

Итак, к SVN.

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

Я на самом деле немного RTFM прошлой ночью и обнаружил, что я должен создать закладку для своих репозиториев, а затем сделать "рабочую копию извлечения" из этой закладки. Я не уверен, почему, но хорошо, это то, что говорится в руководстве...

Каковы некоторые рекомендации по использованию SVN в проекте RoR в Ubuntu?

Я буквально ищу пошаговый процесс на этом.

Я забыл упомянуть, я использую NetBeans для своей IDE, хотя я не смотрел, чтобы увидеть, какую поддержку SVN он имеет, если таковая имеется. Я посмотрел на RubyMine и хотел бы использовать его, но сейчас он кажется слишком нестабильным.

4 ответа

Решение

Что касается плагинов, я бы лично порекомендовал просто вставить их в папку vendor и добавить их в SVN, как если бы вы написали код самостоятельно. Поршень также был отличным решением, но отказался от него, когда все распространенные плагины начали перемещаться на github (поршень с тех пор стал ненадежным)

Надеемся, что для драгоценных камней вы используете рельсы 2 или выше. Вы должны перечислить драгоценные камни, которые вам нужны в вашем config/environment.rb с помощью config.gem, Вот куча информации об этой функции

Это означает, что если вы добавите новый драгоценный камень, то в следующий раз, когда ваш коллега обновится, его приложение rails не загрузится, пока он не получит необходимые драгоценные камни. Затем он может установить их за один шаг, используя sudo rake gems:install

Вы можете сделать еще один шаг вперед и поместить свои драгоценные камни в каталог поставщиков. Это обычно известно как "продавец всего". Самый простой способ сделать это - перечислить все драгоценные камни, которые вы используете в environment.rb как указано выше, а затем запустить rake gems:unpack, Однако у этого подхода есть 2 проблемы, поэтому я предпочитаю не использовать его сам.

  1. Если у вас есть 10 приложений, и каждый из них выпускает свои драгоценные камни, вы в конечном итоге сохраняете 10 копий распространенных драгоценных камней в Subversion, что значительно замедляет обновление всех ваших сайтов.
    Это может не быть проблемой для вас, или может стоить смириться, это просто личное предпочтение.

  2. Некоторые гемы (такие как mongrel или hpricot) имеют собственные расширения, написанные на C. Это означает, что при их установке .c исходный код загружен, и gcc запускается, чтобы скомпилировать его специально для вашей системы.
    Если вы установили собственное расширение C в Ubuntu, затем поместите его в папку vendor, а затем попытались запустить его в OS X (или, возможно, в другой версии Ubuntu), это, скорее всего, приведет к сбою процесса ruby ​​и вызовет ваше приложение. вниз.
    Если все ваши драгоценные камни чисто-рубиновые, то это не проблема, но это просто то, о чем нужно знать.

Многие люди используют Piston или Desert для управления плагинами и установки гемов в папку местного поставщика Rail (хранится в SVN).

http://www.rubyinside.com/advent2006/12-piston.html http://pivotallabs.com/users/brian/blog/articles/459-build-your-own-rails-plugin-platform-with-desert

Я также рекомендую использовать geminstaller, который поможет вам установить все одинаковые гемы и их версии

http://geminstaller.rubyforge.org/

Я использую SVN из командной строки, но если вам удобнее работать с TortiseSVN, вы можете попробовать интегрированные среды разработки, в которых SVN хорошо интегрирована, например RadRails и NetBeans. В среде IDE очень похожи графические менеджеры SVN, подобные Tortise, если вы хотите работать с линией cmd, просто найдите простое 10-минутное руководство по SVN, и вы должны быть в порядке.

Я никогда не слышал о быстром SVN, и обычный SVN-инструмент всегда работал, просто находи меня, почти никогда не вызывая проблему блокировки папок.

Орион упомянул необходимость перестраивать драгоценные камни, которые продавались при совместном использовании их между разными ОС - вы можете использовать задачу gems:build rake, чтобы перестроить их автоматически.

Сначала выясните svn из командной строки. Svn-книга находится на линии. Это не так уж сложно сделать svn status или svn commit -m "бла". Большинство проблем возникает, если вы используете функции ОС для удаления или переименования файлов. Используйте для этого команды svn.

Далее, если Rapidsvn не работает для вас, попробуйте svn-workbench. Ненавижу это говорить, но ни один из инструментов linux svn GUI, которые я видел, не так хорош, как tortoisesvn.

Плагины и SVN являются проблемой. Существует инструмент под названием " поршень", который призван прояснить это, хотя я им не пользуюсь. Я проверяю плагины в моем каталоге vendor / plugins. Если выйдет новая версия, которая мне действительно нужна, я использую мой верный скрипт-сценарий update_plugin для обновления плагина:

#!/bin/bash

#  reinstall the plugin in an svn friendly way
plugin="some_plugin"
plugin_url="http://some_server/some_plugin/trunk"

for f in site1 site2 site3
do
  echo $f
  cd ~/rails/$f

  svn delete vendor/plugins/$plugin
  rm -rf vendor/plugins/$plugin
  svn -m "remove $plugin" commit
  script/plugin install $plugin_url
  svn add vendor/plugins/$plugin
  svn -m "add $plugin" commit

done
Другие вопросы по тегам