Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. CMS
Code

Строительство CMS: rubyPress

by
Difficulty:IntermediateLength:LongLanguages:

Russian (Pусский) translation by Shaun Murphy (you can also view the original English article)

После создания системы управления контентом (CMS) базовые структуры, и реальный сервер, используя поди Node.js вы готовы попробовать свои силы на другом языке.

В этот раз я с помощью языка Ruby для создания сервера. Я нашел, что путем создания такой же программы на нескольких языках, вы начнете получать новые идеи по улучшению способов реализации программы. Вы также видите больше возможностей, чтобы добавить функционал в программу. Давайте начнем.

Установка и загрузка библиотек

Программы на Ruby, вы должны иметь последнюю версию, установленную на вашей системе. Приходят многие операционные системы предварительно установленная с Рубином в эти дни (Linux и OS X), но они обычно имеют более старую версию. Этот учебник предполагает, что вы Ruby версии 2.4.

Самый простой способ обновить до последней версии Руби использовать РВМ. Чтобы установить RVM на Linux или Mac OS Х, введите следующую команду в терминале:

Это позволит создать безопасное подключение, чтобы скачать и установить РВМ. Это устанавливает последнюю стабильную версию Руби, а также. Вам придется перезагрузить вашу оболочку, чтобы завершить установку.

Для Windows, вы можете скачать установщик Windows Руби. В настоящее время, этот пакет составляет в Ruby 2.2.2, которая подходит для запуска библиотеки и скрипты в этом уроке.

После того, как язык Ruby установлен правильно, теперь вы можете установить библиотеки. Руби, как пойти и узлов, имеет менеджер пакетов для установки сторонних библиотек. В окне терминала введите следующее:

Это устанавливает Синатра, Руби руле, Kramdown, и тонкий библиотеки. Синатра-это платформа веб-приложений. Руби руле реализует руле шаблонизатора в Ruby. Kramdown является Markdown для HTML-конвертер. Тонкая Нефритовая аналог библиотеки, но он не содержит макроопределения Джейд. Таким образом, макросы, используемые в новостях и блоге индексы сейчас нормально Джейд.

Создание rubyPress.файл RB

В корневом каталоге создайте файл rubyPress.RB и добавьте следующий код. Я буду комментировать о каждом разделе по мере их добавления в файл.

Первое, что нужно сделать, это загрузить библиотеки. В отличие от с Node.js эти не загружаются в переменную. Библиотек Ruby добавить их функций в рамках программы.

Библиотека руле инициализируется с различными определенными вспомогательными функциями. Определенные вспомогательные функции-дата, с дата, и сэкономить.

Дата вспомогательную функцию берет текущую дату и время, и форматирует ее в соответствии со строкой формата, передаваемые помощником. функция cdate за исключением прохождения дата первого. Сохранить помощник позволяет указать имя и значение. Он создает новый помощник с именем name и возвращает значение. Это позволяет создавать переменные, которые заданы раз и влиять на многих местах. Эта функция также принимает версию перейти, которая ожидает строку с именем, ‘|’ в качестве разделителя, и значение.

Следующая часть кода для загрузки кэшируемые элементы веб-сайта. Это все в стили и макет для вашей темы, и элементы в части подкаталог. Глобальная переменная, $частей, сначала загружается с сервера.JSON-файл. Эта информация затем используется для загрузки нужной детали для макета и указанной теме. Руле шаблонизатор использует эту информацию, чтобы заполнить шаблоны.

Следующий раздел содержит определения для всех маршрутов. Синатра-это полный сервер совместимый остальные. Но для этой CMS, я буду только использовать глагол get. Каждый маршрут длится элементы от маршрута, чтобы перейти к функции получения нужной странице. В Sinatra название предшествует двоеточие указывает участке пути, чтобы передать в обработчик маршрута. Эти элементы находятся в параметры хэш-таблицы.

Функция возвращает страницы имя страницы с трассы и передает макет в переменной $части вместе с полным путем к файлу подкачки нужен для processPage функции. Функция processPage принимает эту информацию и создает соответствующую страницу, которая затем возвращается. В Ruby, выход последней функции является возвращаемым значением функции.

Функция пост-это просто как функция страницы, за исключением того, что она работает на всех страницах типа пост. Эта функция ожидает сообщение тип, категория поста, и сам пост. Это позволит создать адрес для правильного отображение страницы.

Функция figurePage использует функцию processPage, чтобы прочитать содержание страницы из файловой системы. Эта функция получает полный путь к файлу без расширения. затем figurePage тесты для файла с указанным именем с расширением HTML для чтения HTML-файл. Второй вариант для расширения MD для файла Markdown.

И наконец, он проверяет для расширением янтаря на файл Джейд. Помните: Янтарь-это имя библиотеки для обработки синтаксис Jade файлы в ходу. Я держал это же в функциональности. HTML-файл является просто сдал назад, в то время как все уценки и Жад файлы преобразуются в HTML, прежде чем перейти обратно.

Если файл не найден, то пользователь получит страницу 404. Таким образом, ваш “страница не найдена”, страница выглядит так же, как и любой другой странице, кроме содержания.

Функция processPage выполняет все дополнения шаблона на данные страницы. Он начинается с вызова функции figurePage получить содержание страницы. Затем он обрабатывает макет, переданный ему в руль, чтобы развернуть шаблон.

Затем функция processShortCode найдете и обработать все шорткоды в разделе. Результаты передаются в руль во второй раз в процесс любые макросы, оставленных в короткие. Пользователь получает конечный результат.

Функция processShortCodes принимает заданный текст, находит каждый шорткод, и запускает указанный короткий номер с аргументами и содержимое шорткода. Я использую шорткод подпрограмму для обработки содержание на короткие номера, а также.

Шорткод-это HTML-тег, который как использует -[ и ]- разграничить открывающий тег и - [и ]- закрывающий тег. Открывающий тег содержит параметры шорткода, а также. Таким образом, пример шорткода будет:

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

Последнее, что в файле-это $короткие хеш-таблицы, содержащей подпрограммы шорткод. Эти простые шорткоды, но вы можете создать другие шорткоды быть сложным, как вы хотите.

Все шорткоды должны принимать два параметра: args и содержание. Эти строки содержат параметры шорткода и содержание шорткоды окружают. Поскольку короткие номера внутри хэш-таблицы, я использовал лямбда-функции, чтобы определить их. Лямбда-функция-это функция без имени. Единственный способ для выполнения этих функций из хэш-массива.

Запуск сервера

После того как вы создали rubyPress.файл РБ с указанным выше содержанием, Вы можете запустить сервер с:

Поскольку в рамках Синатра работает с Ruby на Rails конструкции шкафа, вы можете использовать военнопленных для запуска сервера. Военнопленных будут созданы файлы вашей системы для запуска вашего сервера локально то же как бы из размещенных сайтов. Вы можете установить для военнопленных с порошком, используя следующие команды в командной строке:

Порошок-это программа командной строки рутины для управления сайтами PoW на вашем компьютере. Чтобы получить военнопленных, чтобы увидеть ваш сайт, вы должны создать мягкую ссылку на свой проект в каталог ~/.каталог военнопленных. Если сервер в папку /Users/проверка/документов/каталог rubyPress, следует выполнить следующие команды:

ЛН -ы создает мягкую ссылку в каталог, указанный во-первых, с именем, указанным во-вторых. Тогда пр будет настроить домен на компьютере с именем мягких ссылке. В приведенном выше примере, идя в http://rubypress.dev веб-сайт в браузере будет загружена страница с сервера.

Для запуска сервера, введите следующую после создания мягкой ссылке:

Перезагрузить сервер после внесения некоторых изменений в код, введите следующее:

rubyPress Main Page
Главная страница rubyPress

Зайдя на сайт в браузере будет результат на картинке выше. Пр будет настроить сайт по http://rubyPress.dev. Независимо от того, какой метод вы используете, чтобы запустить сайт, вы увидите тот же открывшейся странице.

Заключение

Ну, вы сделали это. Другой CMS, но в этот раз в Руби. Эта версия является самой короткой версии все с открытым кодом, созданные в этой серии. Экспериментов с кодом и посмотреть, как можно расширить эту основу.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.