1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173
|
**DO NOT READ THIS FILE ON GITHUB, GUIDES ARE PUBLISHED ON http://guides.rubyonrails.org.**
Ruby on Rails Guides Guidelines
===============================
This guide documents guidelines for writing Ruby on Rails Guides. This guide follows itself in a graceful loop, serving itself as an example.
After reading this guide, you will know:
* About the conventions to be used in Rails documentation.
* How to generate guides locally.
--------------------------------------------------------------------------------
Markdown
-------
Guides are written in [GitHub Flavored Markdown](https://help.github.com/articles/github-flavored-markdown). There is comprehensive [documentation for Markdown](http://daringfireball.net/projects/markdown/syntax), as well as a [cheatsheet](http://daringfireball.net/projects/markdown/basics).
Prologue
--------
Each guide should start with motivational text at the top (that's the little introduction in the blue area). The prologue should tell the reader what the guide is about, and what they will learn. As an example, see the [Routing Guide](routing.html).
Headings
------
The title of every guide uses an `h1` heading; guide sections use `h2` headings; subsections use `h3` headings; etc. Note that the generated HTML output will use heading tags starting with `<h2>`.
```
Guide Title
===========
Section
-------
### Sub Section
```
When writing headings, capitalize all words except for prepositions, conjunctions, internal articles, and forms of the verb "to be":
```
#### Middleware Stack is an Array
#### When are Objects Saved?
```
Use the same inline formatting as regular text:
```
##### The `:content_type` Option
```
Linking to the API
------------------
Links to the API (`api.rubyonrails.org`) are processed by the guides generator in the following manner:
Links that include a release tag are left untouched. For example
```
http://api.rubyonrails.org/v5.0.1/classes/ActiveRecord/Attributes/ClassMethods.html
```
is not modified.
Please use these in release notes, since they should point to the corresponding version no matter the target being generated.
If the link does not include a release tag and edge guides are being generated, the domain is replaced by `edgeapi.rubyonrails.org`. For example,
```
http://api.rubyonrails.org/classes/ActionDispatch/Response.html
```
becomes
```
http://edgeapi.rubyonrails.org/classes/ActionDispatch/Response.html
```
If the link does not include a release tag and release guides are being generated, the Rails version is injected. For example, if we are generating the guides for v5.1.0 the link
```
http://api.rubyonrails.org/classes/ActionDispatch/Response.html
```
becomes
```
http://api.rubyonrails.org/v5.1.0/classes/ActionDispatch/Response.html
```
Please don't link to `edgeapi.rubyonrails.org` manually.
API Documentation Guidelines
----------------------------
The guides and the API should be coherent and consistent where appropriate. In particular, these sections of the [API Documentation Guidelines](api_documentation_guidelines.html) also apply to the guides:
* [Wording](api_documentation_guidelines.html#wording)
* [English](api_documentation_guidelines.html#english)
* [Example Code](api_documentation_guidelines.html#example-code)
* [Filenames](api_documentation_guidelines.html#file-names)
* [Fonts](api_documentation_guidelines.html#fonts)
HTML Guides
-----------
Before generating the guides, make sure that you have the latest version of
Bundler installed on your system. As of this writing, you must install Bundler
1.3.5 or later on your device.
To install the latest version of Bundler, run `gem install bundler`.
### Generation
To generate all the guides, just `cd` into the `guides` directory, run `bundle install`, and execute:
```
bundle exec rake guides:generate
```
or
```
bundle exec rake guides:generate:html
```
Resulting HTML files can be found in the `./output` directory.
To process `my_guide.md` and nothing else use the `ONLY` environment variable:
```
touch my_guide.md
bundle exec rake guides:generate ONLY=my_guide
```
By default, guides that have not been modified are not processed, so `ONLY` is rarely needed in practice.
To force processing all the guides, pass `ALL=1`.
If you want to generate guides in a language other than English, you can keep them in a separate directory under `source` (eg. `source/es`) and use the `GUIDES_LANGUAGE` environment variable:
```
bundle exec rake guides:generate GUIDES_LANGUAGE=es
```
If you want to see all the environment variables you can use to configure the generation script just run:
```
rake
```
### Validation
Please validate the generated HTML with:
```
bundle exec rake guides:validate
```
Particularly, titles get an ID generated from their content and this often leads to duplicates. Please set `WARNINGS=1` when generating guides to detect them. The warning messages suggest a solution.
Kindle Guides
-------------
### Generation
To generate guides for the Kindle, use the following rake task:
```
bundle exec rake guides:generate:kindle
```
|