Проверка правописания: Яндекс.Спеллер
Сайт работает на Jekyll. Это статический
генератор сайтов. Когда мы запускаем jekyll build, Jekyll обрабатывает шаблоны
Liquid, и мы получаем полностью
готовый к развёртыванию сайт в директории _site. В процессе построения сайта
Jekyll склеивает файлы, заменяет специальные теги на свойства страниц,
генерирует определённые элементы в цикле и т.д. Пример шаблонной страницы можно
увидеть
здесь - это
главная нашего сайта. Этот файл довольно подробно аннотирован комментариями - в
нём можно разобраться.
Развёртывание сайта - это просто копирование файлов в директорию, которую раздаёт веб-сервер (например, nginx).
Вся динамичность и изменяемое содержимое достигается за счёт сторонних сервисов.
Наш сайт находится в репозитории на GitHub. Мы пишем новые публикации в виде
Pull Request'ов. Когда PR принят, Travis делает jekyll build, получает
статический сайт, и разворачивает его на сервере. Так достигается динамичность
публикаций.
Комментарии реализованы на Disqus. Disqus просто берёт id страницы (в нашем
случае это часть URL, не включающая имя сайта: например,
/%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5/2016/03/17/debugging-rust-with-gdb.html)
и привязывает к нему набор комментариев, которые грузятся и отправляются
асинхронно с помощью JavaScript. Они хранятся в Disqus, а не у нас.
_config.yml - конфигурация Jekyll.
Файлы в корне с расширениями .html, .xml или .md - это страницы сайта. Они
должны иметь "front matter" (обложку), в которой указан вид страницы и другая
метаинформация. Эти файлы становятся простыми файлами .html после обработки
Jekyll и сохраняют своё базовое имя. Например, in-progress.md превращается в
in-progress.html.
Gemfile - это описание проекта Ruby. Jekyll написан на Ruby, и мы пользуемся
пакетами Ruby для расширения функциональности. Также мы используем
bundler для управления зависимостями.
Gemfile.lock - это файл, фиксирующий конкретные версии зависимостей.
Используется Bundler.
.travis.yml - это конфигурация Travis.
Теперь о директориях. Все директории, начинающиеся с _, являются стандартными
для сайтов на Jekyll.
css - директория со стилями. Там почти все стили откуда-то взяты (из
Bootstrap, например). Главный файл - main.scss. Он включает в себя
_sass/style.scss и больше ничего. _sass/style.scss - это главный файл
стилей.
fonts - директория со шрифтами. Сейчас там только glyphicons из Bootstrap.
images - директория с картинками. Картинки к определённой публикации должны
лежать в директории, которая называется так же, как и файл с публикацией.
_includes - директория с частями HTML-файлов, которые включаются в готовые
страницы с помощью Liquid. Например, head.html - это содержимое HTML-тега
head, которое является общим для всех страниц сайта.
js - директория со скриптами. Никаких интересных скриптов здесь нет - всё
взято из Bootstrap.
_layouts - директория с шаблонами страниц. Например, post.html описывает
шаблон страницы публикации.
_locales - директория с файлами локализации.
_plugins - директория с плагинами. Они являются исходным кодом на Ruby.
_posts - директория с публикациями. Публикации написаны в формате Markdown.
Поддерживаются все основные расширения, как на GitHub.
В директории _site появляется сгенерированный сайт, когда вы запускаете
Jekyll.
Для локального запуска нужен Ruby.
Рекомендуемая версия - 2.2.3.
Рекомендуемый способ установки - RVM.
RVM нужен, чтобы легко поставить нужную версию Ruby. Вот как его установить:
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
\curl -sSL https://get.rvm.io | bash -s stable --ruby=2.2.3
После этого откройте новый терминал и сделайте:
rvm use --default 2.2.3
Затем в том же терминале клонируем и собираем сайт:
git clone https://github.com/ruRust/rustycrate.ru.git
cd rustycrate.ru
gem install bundler
bundle install --path vendor/bundle
bundle exec jekyll serve
Пишите в Gitter-чат этого сайта - мы поможем разобраться.