Все нижеизложенное относится к любым RoR-проектам и может быть использовано как памятка на все дальнейшие начинания.
-
Инструкция написана в контексте ОС Ubuntu или чего-то подобного. Для тех, кто предпочитает OS X я рекомендую использовать Vagrant или искать всю инфу самому. В основном все отличия заключаются в использовании brew вместо apt-get. Но есть и некоторые тонкости, из-за которых могут возникнуть проблемы. Используйте Vagrant.
-
Установка RVM.
\curl -sSL https://get.rvm.io | bash -s stable
RMV (Ruby Version Manager) - это средство для управления версиями Ruby. Подробно здесь.
- Далее устанавливаем Ruby 1.9.3.
rvm install 1.9.3
И устанавливаем Rails как обычный гем.
gem install rails -v 3.2.13
Важно! Убедитесь, что установлены именно указанные версии Ruby и Rails.
-
Установка и настройка PostgreSQL.
-
Установка MongoDB.
-
После этого клонируем приложение из репозитория на гитхабе. Из папки приложения запускаем bundle для установки нужных гемов. Рекомендую перед установкой гемов прописать в файл
~/.gemrcследующее:
gem: --no-rdoc --no-ri
Возможно, некоторые гемы откажутся ставиться с первого раза и будут выпадать ошибки. Решение как всегда - гугл, первая ссылка. Скорее всего, что-то нужно доставить через apt-get, например nodejs, minimagic и т.д. Здесь придется немного повозиться, а может и нет и все пройдет гладко как у Шумахера (в известном смысле).
- Прогоняем миграции (подготавливаем структуру базы). Сначала скопируйте файл
config/database.sample.ymlвconfig/database.ymlи перепишите его под свои настройки postgres. Затем:
rake db:setup && rake db:migrate
(чтобы узнать все команды rake наберите rake -T)
Вообще на этом этапе возникает больше всего проблем, которые, как правило, решаются индивидуально. Чаще всего проблема с локализацией postgres или вы где-то облажались в файле config/database.yml. Проверьте еще, запущен ли postgres (в ошибке выдается что-то о том, что невозможен коннект к соккету). Но чаще всего (процентов 99 случаев) проблема в файле config/database.yml.
- Наконец, мы готовы запустить приложение. Скорее всего, в качестве веб-сервера будет использоваться unicorn и поэтому делается это так:
inicorn_rails -p 3000
После чего в браузере на localhost:3000/ вы увидите запущенное приложение с чистой, как слеза Святой Девы Марии, базой, которую вы всегда можете засидить из консоли Rails (rails c).
Используем git-flow. Читаем и делаем все, как там написано. Все очень просто:
- Есть ветка
master. Ее не трогаем никогда. Никогда - это означает ни что иное, как никогда. develop- рабочая ветка. Сюда сливаем все из веток-фич, предварительно pull-request.- Для каждой новой фичи создаем отдельную ветку вида
feature/согласно git-flow:
git flow feature start my_new_branch
- для мелких фиксов и срочных багов -
hotfix/(по-хорошему, должно использоваться редко).
Если работаешь с кем-то в одной ветке, в начале работы проверяешь статус и далее git pull --rebase. Если не знаешь, как работает rebase не используешь его никогда (см. выше, что такое никогда) за исключением этого случая.
Если однажды ты замечаешь за собой, что твоя рука набирает что-то типа git ... --f, остановись и подумай. Если дело дошло до того, что ты набрал git ... --for, то ударь себя по руке. Если ты набрал git ... --force и нажал enter, то ты либо мудак, либо у тебя были веские на то причины, подумай над этим.
Прошу следовать этим правилам и тогда разработка будет легка и приятна, как легкий ветерочек на берегу озера Селигер.
Пакетный менеджер для javascript-а, подробней тут.
Для корректной установки сделайте след. действия, взял отсюда:
sudo apt-get update
sudo apt-get install -y python-software-properties
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs
sudo npm install bower -g
Теперь ставим js-ные пакеты с помощью bower-rails:
rake bower:install
Работа с очередью сообщений. Использует многопоточность при обработки сообщений. В качестве бэкенда - Redis.
Инструкции по установке и запуску Redis - тут.
Запуск очереди - bundle exec sidekiq -C config/sidekiq.yml
Монитор - /sidekiq
Иногда для работы чего-то нужно заранее задать конфигурацию, например конфиги по работе с API Амазона или смс-провайдера. Эти данные не должны попасть в гит, поэтому передаются каким-то другим способом. Такие конфиги должны быть прописаны в файле config/initializers/confgus.rb перед запуском приложения. Пример содержимого - config/configus.sample.rb.