PrometheusRuby

Материал из ALT Linux Wiki
Версия от 23:38, 7 апреля 2012; 109.254.49.16 (обсуждение) (Первая версия)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

По просьбе трудящихся привожу маленькое руководство по заведению своего маленького-локального prometheus.

Для начала нам потребуется rvm (https://rvm.beginrescueend.com/) которым мы поставим нужный нам ruby 1.9.3p125. На сайте rvm достаточно хорошо расписано как его поставить. Вместо rvm можно использовать rbenv, но это уже вкусовщина. После чего нам потребуется следующее:

0) Поставить базовую систему для сборки (gcc/gcc-c++/make/etc). Поставить libxml-devel, libxslt-devel, zlib-devel и libssl-devel. Поставить redis, postgresql, memcached, sphinx, gettext, node, git, nginx, coreutils. nginx нужен только для production. coreutils у всех уже и так стоит. :) К postgresql не забываем про его devel пакеты. Для gettext -- пакет который содержит всякие msgmerge и etc. (Точных имён пакетов для Sisyphus я сейчас сказать не могу, у меня сейчас osx только под рукой.)

1) Поставить ruby 1.9.3p125:

 $ rvm install 1.9.3

2) Делаем его дефолтовым для shell:

 $ rvm --default 1.9.3

3) Ставим rubygems 1.8.19:

 $ rvm rubygems 1.8.19

4) Ставим bundler:

 $ gem install bundler

5) Клоним репозиторий:

 $ git clone git://github.com/biow0lf/prometheus2.0.git

6) Заходим шеллом в prometheus2.0 и подтверждаем что мы доверяем .rvmrc (если этого не сделать то mc будет "зависать" при попытке зайти в папку): $ cd prometheus2.0/

==================================================================

NOTICE

==================================================================

RVM has encountered a new or modified .rvmrc file in the current directory

This is a shell script and therefore may contain any shell commands.

Examine the contents of this file carefully to be sure the contents are

safe before trusting it! ( Choose v[iew] below to view the contents )

==================================================================

Do you wish to trust this .rvmrc file? (/Users/biow0lf/tmp/prometheus/prometheus2.0/.rvmrc) y[es], n[o], v[iew], c[ancel]> y Using /Users/biow0lf/.rvm/gems/ruby-1.9.3-p125 $

7) Ставим все нужные джемы через bundler. Эта команда поставит все нужные джемы для ruby (в том числе и бинарые, которые будут собраны при установке из исходников). А так же сделает клоны git репозиториев из которых используются джемы из master.

 $ bundle

8) Теперь надо настроить базы данных для сайта (production, development и test). Скопируем config/database.yml.sample в config/database.yml. И отредактируем его. Создаём базы в postgresql.

9) Теперь настроим redis. Для этого надо скопировать config/redis.yml.sample в config/redis.yml.

10) Создадим базу и мигрирует на последнюю версию схемы данных:

$ bundle exec rake db:create db:schema:load

и для test окружения также:

$ RAILS_ENV=test bundle exec rake db:create db:schema:load

Если всё было сделано правильно, то теперь можно запустить тесты и убедиться что они проходят.

$ bundle exec rake

Теперь о том как запустить локальную версию для разработки. 1) Запускаем в соседнем терминале redis-server (или сервис если такое есть). Для тестов этого делать не надо т.к. в них используется fakeredis gem.

2) Запускаем rails сервер:

$ bundle exec rails server

или более коротко:

$ bundle exec rails s

Всё классно, но у нас данных в базе нет. Для этого нам понадобится срез Сизифа или любого другого бранча. Или даже все бранчи. Берём rsync и вытягиваем например Сизиф.

1) Нам нужны начальные данные (бранчи, зеркала etc. лежат в db/seeds.rb):

$ bundle exec rake db:seed

2) Теперь сами пакеты. В начале надо исправить путь к бранчу. К примеру, если бранч у нас Sisyphus, то надо исправить lib/tasks/sisyphus.rake. Т.е. "/ALT/Sisyphus/" заменить на правильный путь на файловой системе. Ну а дальше:

$ bundle exec rake sisyphus:srpms $ bundle exec rake sisyphus:binary $ bundle exec rake sisyphus:acls $ bundle exec rake sisyphus:leaders (сломано в текущий момент, так что этот пункт нужно сейчас пропускать) $ bundle exec rake sisyphus:teams (сломано в текущий момент, так что этот пункт нужно сейчас пропускать) $ bundle exec rake sisyphus:bugs $ bundle exec rake sisyphus:repocops $ bundle exec rake sisyphus:repocop_patches $ bundle exec rake gear:import $ bundle exec rake perlwatch:update $ bundle exec rake ftbfs:update

После этого у нас с базе лежат все данные из Сизифа.

3) Закешируем данные в redis:

$ bundle exec rake redis:cache

Теперь пара слов и поиске. Для того что поиск заработал локально нужно: 1) Создать конфиг для sphinx:

$ bundle exec rake thinking_sphinx:configure

2) Создать индекс:

$ bundle exec rake thinking_sphinx:index

3) Запустить сам sphinx:

$ bundle exec rake thinking_sphinx:start

4) Останаливать sphinx так:

$ bundle exec rake thinking_sphinx:stop

Эти все шаги описаны для development/test окружений. Для production кое что изменится, но описывать это здесь смысла не имеет.

Исходники лежат на https://github.com/biow0lf/prometheus2.0 и там действует правило: один хороший принятый коммит == доступ на коммит. Ну что, кто хочет стать героем? :)

Удачи!