Учимся делать личный сайт на Ruby и CommonMark Markdown
Создание личного сайта может показаться сложной задачей, но с правильными инструментами и знаниями это становится гораздо проще. В этой статье мы рассмотрим, как использовать язык программирования Ruby и формат разметки текста CommonMark Markdown для создания персонального веб-сайта.
Что такое Ruby?¶
Ruby – это динамический, объектно-ориентированный язык программирования общего назначения. Он часто используется для разработки веб-приложений благодаря своей простоте и гибкости. Основные преимущества Ruby включают его читаемость, поддержку множества библиотек и фреймворков, а также широкое сообщество разработчиков.
Что такое CommonMark Markdown?¶
CommonMark Markdown – это стандартизированная версия формата Markdown, которая позволяет легко создавать форматированные текстовые документы. Это удобный способ структурировать контент без необходимости использовать HTML или другие сложные инструменты. CommonMark поддерживает такие элементы, как заголовки, списки, цитаты, ссылки и многое другое.
Инструменты для работы¶
Для создания сайта нам понадобятся следующие инструменты:
- Ruby
- RubyGems (для установки пакетов)
- Puma (веб-сервер)
- Sinatra (минималистичный веб-фреймворк)
- Bundler (управление зависимостями)
- CommonMark (библиотека для работы с CommonMark Markdown)
Установка необходимых инструментов¶
-
Установите Ruby: Если у вас еще нет установленного Ruby, загрузите и установите последнюю версию с официального сайта. Для Windows пользователей есть официальный установщик, а для Linux и macOS можно воспользоваться менеджерами пакетов, такими как
apt
илиbrew
. -
Установите Bundler: Используйте команду
gem install bundler
для установки пакета управления зависимостями. -
Установите Puma: Установите Puma с помощью команды
gem install puma
. -
Установите Sinatra: Установите Sinatra с помощью команды
gem install sinatra
. -
Установите CommonMark: Установите библиотеку CommonMark с помощью команды
gem install commonmark
.
Создание проекта¶
Создадим новый проект для нашего сайта.
- Перейдите в директорию, где хотите создать проект.
- Создайте новую директорию для вашего проекта:
mkdir my_website && cd my_website
. - Создайте файл Gemfile с содержимым:
source 'https://rubygems.org'
gem 'sinatra', '~> 2.0'
gem 'commonmark', '~> 0.9'
- Запустите команду
bundle install
, чтобы установить необходимые зависимости.
Базовый шаблон¶
Теперь создадим базовый шаблон для нашего сайта. Откройте текстовый редактор и создайте файл app.rb
с следующим содержанием:
require 'sinatra'
require 'commonmark'
get '/' do
markdown = CommonMark::Parser.new('Hello World!').to_html
erb :index, :locals => {:content => markdown}
end
get '/about' do
markdown = CommonMark::Parser.new('About Me').to_html
erb :index, :locals => {:content => markdown}
end
get '/contact' do
markdown = CommonMark::Parser.new('Contact Us').to_html
erb :index, :locals => {:content => markdown}
end
get '/articles/:id' do
id = params[:id]
filepath = File.join('articles', "#{id}.md")
if File.exist?(filepath)
markdown = File.read(filepath).strip
content = CommonMark::Parser.new(markdown).to_html
erb :index, :locals => {:content => content}
else
redirect '/404'
end
end
get '/404' do
erb :error404
end
get('/robots.txt') {
erb :robotstxt
}
get('/favicon.ico') {
erb :favicon
}
get('/css/:name') {
erb :stylesheet, :locals => {:filename => params[:name]}
}
get('/js/:name') {
erb :javascript, :locals => {:filename => params[:name]}
}
get('/images/:name') {
send_file File.join('public/images', params[:name])
}
get('/fonts/:name') {
send_file File.join('public/fonts', params[:name])
}
get('/favicons/:name') {
send_file File.join('public/favicons', params[:name])
}
set :public, 'public'
helpers do
def stylesheet_link(filename)
"<link rel='stylesheet' href='/css/#{filename}'>"
end
def javascript_script(filename)
"<script src='/js/#{filename}'></script>"
end
def favicon_link()
"<link rel='shortcut icon' type='image/x-icon' href='/favicon.ico'>"
end
end
set :logger, Logger.new($stdout)
run! if app_file == $PROGRAM_NAME
Этот код использует Sinatra для обработки HTTP-запросов и CommonMark для преобразования Markdown в HTML. Мы создали несколько маршрутов для основных страниц сайта, включая главную страницу, страницы «О себе», «Контакты» и статьи. Также добавлены дополнительные маршруты для статических ресурсов, таких как CSS, JavaScript, изображения и фавикон.
Шаблоны страниц¶
Создайте файлы .erb
для наших шаблонов:
-
views/index.erb
:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title><%= @page_title || "My Website" %></title>
<%= favicon_link %>
<% stylesheet_link("style.css") %>
</head>
<body>
<header>
<h1><%= @page_title || "My Website" %></h1>
</header>
<main>
<%= yield %>
</main>
<footer>
© 2023 Your Name
</footer>
<% javascript_script("script.js") %>
</body>
</html>
-
views/error404.erb
:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Error 404</title>
<%= favicon_link %>
<% stylesheet_link("style.css") %>
</head>
<body>
<header>
<h1>Error 404</h1>
</header>
<main>
<p>Page not found.</p>
</main>
<footer>
© 2023 Your Name
</footer>
<% javascript_script("script.js") %>
</body>
</html>
-
views/robotstxt
:
User-agent: *
Disallow: /
-
views/favicon
:
<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico">
-
views/stylesheet.erb
:
<link rel="stylesheet" href="/css/#{filename}" />
-
views/javascript.erb
:
<script src="/js/#{filename}"></script>
-
views/favicon.erb
:
<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico">
Ресурсы и структура каталогов¶
-
Public directory: Создайте директорию
public
внутри вашего проекта и поместите туда все статические ресурсы, такие как CSS, JavaScript, изображения и фавиконы. -
Стили и скрипты: Добавьте файлы
style.css
иscript.js
в директориюpublic/css
иpublic/js
соответственно. - Фавикон: опционально, можно не добавлять.
Теперь ваш проект готов к запуску. Чтобы начать работу, выполните следующую команду:
bundle exec puma -C config/puma.rb
Затем откройте браузер и перейдите по адресу http://localhost:9292
. Ваш сайт будет работать на порту 9292 по умолчанию.
Ваш сайт теперь работает на Ruby и CommonMark Markdown. Вы можете редактировать и добавлять новые статьи в формате Markdown в директории articles
, и они будут автоматически преобразованы в HTML при загрузке страницы.
Вы можете найти дополнительную информацию и примеры использования CommonMark Markdown на официальном сайте: https://commonmark.org/.
Хотите добавить какие-нибудь дополнительные функции или оптимизировать структуру вашего сайта? Пожалуйста, дайте знать!
Комментарии