Рекомендации для руководств по Ruby on Rails
Это руководство документирует рекомендации по написанию руководств по Ruby on Rails. Это руководство следует самому себе в изящном цикле, являясь примером для самого себя.
Это руководство документирует рекомендации по написанию руководств по Ruby on Rails. Это руководство следует самому себе в изящном цикле, являясь примером для самого себя.
После прочтения этого руководства вы узнаете:
- О соглашениях, используемых в документации Rails.
- Как генерировать руководства локально.
Markdown
Руководства написаны на GitHub Flavored Markdown. Имеется полная документация по Markdown, а также шпаргалка.
Пролог
Каждое руководство должно начинаться с мотивационного текста сверху (это маленькое введение в голубой области). Пролог должен рассказать читателю, о чём это руководство и что они изучат. В качестве примера смотрите руководство по роутингу.
Заголовки
Название каждого руководства использует заголовок h1; разделы руководства — заголовок h2; подразделы — заголовок h3; и так далее. Отметьте, что сгенерированный в HTML результат будет использовать теги заголовков, начиная с <h2>.
Guide Title
===========
Section
-------
### Sub SectionПри написании заголовков начинайте с заглавной буквы все слова, кроме предлогов, союзов, внутренних артиклей и форм глагола "to be":
#### Assertions and Testing Jobs inside Components
#### Middleware Stack is an Array
#### When are Objects Saved?Используйте такое же inline-форматирование, как и в обычном тексте:
##### The `:content_type` OptionПримеры кода
Оборачивайте примеры кода в синтаксис ограждений кода с использованием обратных кавычек:
```ruby
puts "Hello World!"
```Всегда указывайте используемый в примере язык. Поддерживаемые ярлыки языков включают: ruby, html, irb, html+erb, bash и js.
```js
alert("Hello World!")
```Имена файлов для примеров
Если пример ссылается на конкретный файл, добавьте имя файла в комментариях:
```ruby
# app/model/product.rb
class Product < ApplicationRecord
end
```NOTE: Комментарии с именами файлов игнорируются кнопкой копирования.
Для шаблонов ERB используйте комментарии ERB:
```html+erb
<%# app/views/products/show.html.erb %>
<h1><%= @product.name %></h1>
<%= link_to "Back", products_path %>
```Примеры с командной строкой
Для примеров bash используйте $ как символ приглашения:
```bash
$ cd my_app
$ bin/rails server
```NOTE: Приглашения игнорируются кнопкой копирования.
Для примеров консоли Rails используйте application(environment)> как приглашение:
```ruby
store(dev)> Product.first
=> #<Product:0x00000001221f6260 id: 1, name: "T-Shirt", created_at: "2024-11-09 16:35:01.117836000 +0000", updated_at: "2024-11-09 16:35:01.117836000 +0000">
```Подсветка кода
Для больших примеров небольшие изменения может быть сложно заметить. Подсветите строки, передав их номера:
```ruby#4,7-9
# app/model/product.rb
class Product < ApplicationRecord
validates :name, presence: true
validates :price, presence: true
def back_in_stock?
inventory_count_previously_was.zero? && inventory_count.positive?
end
end
```Это подсветит строку 4 и строки с 7 по 9:
# app/model/product.rb
class Product < ApplicationRecord
validates :name, presence: true
validates :price, presence: true
def back_in_stock?
inventory_count_previously_was.zero? && inventory_count.positive?
end
endПримечания, советы и предупреждения
Иногда абзац заслуживает чуть большего внимания. Например, чтобы разъяснить распространённое заблуждение или предупредить о чём-то, что может сломать приложение.
Чтобы выделить абзац, начните его с NOTE:, TIP: или WARNING::
NOTE: Используйте `NOTE`, `TIP` или `WARNING`, чтобы выделить абзац.Это обернёт абзац в специальный контейнер с таким результатом:
NOTE: Используйте NOTE, TIP или WARNING, чтобы выделить абзац.
NOTE
Используйте NOTE, чтобы выделить что-то, относящееся к теме и контексту.
Чтение этой пометки поможет вам понять данную тему или контекст или
прояснит важный момент.
Например, раздел, описывающий файлы локалей, может содержать такое NOTE:
NOTE: Необходимо перезапустить сервер при добавлении новых файлов локалей.
TIP
TIP — это просто дополнительная информация по теме, но не обязательно
существенная для понимания. Она может направить вас к другому руководству или сайту:
TIP: Чтобы узнать больше о роутинге, смотрите Роутинг в Rails извне внутрь.
Или показать полезную команду для просмотра дополнительных опций:
TIP: Для дополнительной помощи с генераторами выполните bin/rails generate --help.
WARNING
Используйте WARNING для того, чего следует избегать и что может сломать приложение:
WARNING: Воздерживайтесь от использования методов вроде update, save или любых других методов,
вызывающих побочные эффекты на объекте, внутри ваших колбэк-методов.
Или предупредите о том, что может скомпрометировать безопасность приложения.
WARNING: Храните свой master key в безопасности. Не коммитьте свой master key.
Ссылки
Используйте описательные ссылки и избегайте ссылок "здесь" и "подробнее":
# ПЛОХО
См. документацию Rails Internationalization (I18n) API для [подробностей](i18n.html).
# ХОРОШО
См. [документацию Rails Internationalization (I18n) API](i18n.html) для
подробностей.Используйте описательные ссылки и для внутренних ссылок:
# ПЛОХО
Мы рассмотрим это [ниже](#multiple-callback-conditions).
# ХОРОШО
Мы рассмотрим это в [разделе о нескольких условиях колбэка
](#multiple-callback-conditions) ниже.Ссылки на API
Ссылки на API (api.rubyonrails.org) обрабатываются генератором руководств следующим образом:
Ссылки, включающие тег релиза, оставляются неизменными. Например
https://api.rubyonrails.org/v5.0.1/classes/ActiveRecord/Attributes/ClassMethods.htmlне модифицируется.
Пожалуйста, используйте их в заметках о релизе, так как они должны указывать на соответствующую версию вне зависимости от генерируемого таргета.
Если ссылка не включает тег релиза и генерируются edge-руководства, домен заменяется на edgeapi.rubyonrails.org. Например,
https://api.rubyonrails.org/classes/ActionDispatch/Response.htmlстановится
https://edgeapi.rubyonrails.org/classes/ActionDispatch/Response.htmlЕсли ссылка не включает тег релиза и генерируются руководства релиза, вставляется версия Rails. Например, если генерируются руководства для v5.1.0, ссылка
https://api.rubyonrails.org/classes/ActionDispatch/Response.htmlстановится
https://api.rubyonrails.org/v5.1.0/classes/ActionDispatch/Response.htmlПожалуйста, не ссылайтесь на edgeapi.rubyonrails.org вручную.
Перенос колонок
Не переформатируйте старые руководства просто ради переноса колонок. Но новые разделы и руководства должны переноситься на 80 колонках.
Рекомендации по документированию API
Руководства и API должны быть согласованы и последовательны, насколько это уместно. В частности, эти разделы Рекомендаций по документированию API также применяются к руководствам:
Руководства в HTML
До генерации руководств убедитесь, что в вашей системе установлена последняя версия Bundler. Чтобы установить последнюю версию Bundler, выполните gem install bundler.
Если Bundler уже установлен, обновить его можно командой gem update bundler.
Генерация
Чтобы сгенерировать все руководства, просто сделайте cd в директорию guides, выполните bundle install и:
$ bundle exec rake guides:generateили
$ bundle exec rake guides:generate:htmlРезультирующие файлы HTML будут в директории ./output.
Чтобы обработать только my_guide.md и ничего больше, используйте переменную окружения ONLY:
$ touch my_guide.md
$ bundle exec rake guides:generate ONLY=my_guideПо умолчанию неизменённые руководства не обрабатываются, поэтому ONLY редко нужна на практике.
Чтобы принудительно обработать все руководства, передайте ALL=1.
Если вы хотите сгенерировать руководства на языке, отличном от английского, вы можете держать их в отдельной директории под source (например, source/es) и использовать переменную окружения GUIDES_LANGUAGE:
$ bundle exec rake guides:generate GUIDES_LANGUAGE=esЕсли вы хотите увидеть все переменные окружения, которые можно использовать для настройки скрипта генерации, просто выполните:
$ rakeВалидация
Пожалуйста, проверяйте сгенерированный HTML с помощью:
$ bundle exec rake guides:validateВ частности, заголовки получают ID, сгенерированный на основе их содержания, и это часто ведёт к дубликатам.
Руководства для Kindle
Генерация
Чтобы сгенерировать руководства для Kindle, используйте следующую rake-задачу:
$ bundle exec rake guides:generate:kindle