-
Notifications
You must be signed in to change notification settings - Fork 20
Site development
Welcome to the hspace wiki!
Описание проекта на самом сайте: http://hackerspace.by/projects/8
- http://hackerspace.by/ - главная страница
- http://hackerspace.by/calendar - календарь
- http://hackerspace.by/contacts - контакты
- http://hackerspace.by/rules - правила
- http://hackerspace.by/users/sign_in - форма входа
- http://hackerspace.by/projects - список проектов
- http://hackerspace.by/projects/[0-9]+ - страница конкретного проекта
Юзеры могут логиниться в систему и создавать/редактировать описание проектов.
Проекты могут быть public - тогда их может редактировать любой авторизованный юзер.
Или не public - тогда его может редактировать только создатель.
Статус проекта - произвольная строка.
Описание проекта - html или markdown.
В качестве основы для внешнего вида взят Bootstrap Framework v3. Если вам надо что-то поменять на странице или добавить что-то из элементов, посмотрите сначала стандартные решения и классы этого фреймворка. Не стоит заново изобретать велосипед.
Для деплоя на боевой сервер необходимо, чтобы public key деплоящего был в authorized_keys на сервере. Иначе никак.
Запуск деплоя - mina deploy
.
Посмотреть в rails console
на боевом сервере без коннекта по ssh – mina console
.
Сам процесс описан в файле config/deploy.rb
Если очень просто, то внутри происходит следующее:
- Скрипт заходит на сервер, через
git pull
и стягивает последнюю версию изmaster
. - Устанавливаются все новые
gems
и запускаются миграции базы, если есть, что устанавливать и запускать. - Перезапускает веб серверы
nginx
иpuma
, чтобы подхватить новые изменения. - Если что-то пошло не так, откатывает всё назад.
- Каждая новая версия устанавливается в новую папку с номером == номер предыдущей + 1.
- При успешном деплое на свежую папку симлинкается папка
current
- Логи, файл кофигурации базы, картинки проектов и прочие shared вещи хранятся в единой папке
shared
, она при каждом новом деплое не меняется.
Целью SpaceAPI является определение единой спецификации для хакерспейсов которая может быть использована, чтобы предоставлять информацию веб-приложениям или любым другим приложениям.
- http://hackerspace.by/projects.json - список всех проектов
- http://hackerspace.by/projects/[0-9]+.json - информация об конкретном проекте
- http://hackerspace.by/hackers.json - список всех участников (доступно залогиненым пользователям, также доступно в csv)
Решение двух видов задач:
- Сбор, хранение и предоставление данных генерируемых устройствами внутри хакерспейса.
Устройство - клиент, сайт - сервер. - Асинхронный доступ к API устройств расположенных внутри хакерспейса.
Устройство - сервер, сайт по отношению к устройству - клиент, сайт по отношению к пользователю - прокси.
На данный момент реализован первый вариант (Устройство - клиент, сайт - сервер).
Устройства, у которых есть имя (name) и пароль (password), посылают на сайт запросы создать запись о событии с содержимым в виде ключ-значение, только в нашем случае event_type и value.
-
hackerspace.by/events/add
- добавление записи в лог
Добавление событий через GET:
http://localhost:3000/events/add?name=device1&password=111111&event_type=light&value=on
curl http://localhost:3000/events/add\?name\=device1\&password\=111111\&event_type\=light\&value\=on
Создается событие, либо выводится exception.
Если login/pass неправильные, вернет 401 вместо 200.
-
hackerspace.by/events
- просмотр последних записей лога -
hackerspace.by/events.csv
- все записи лога -
hackerspace.by/devices/[0-9]+
- просмотр последних событий конкретного устройства в folded формате (будет отображаться только смена состояний).
данные можно получить в альтернативных форматах:
hackerspace.by/devices/[0-9]+.json
hackerspace.by/devices/[0-9]+.csv