Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/smashingboxes/smashing_docs
https://github.com/smashingboxes/smashing_docs
Last synced: 7 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/smashingboxes/smashing_docs
- Owner: smashingboxes
- Created: 2016-02-17T19:27:48.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2018-01-03T14:57:51.000Z (almost 7 years ago)
- Last Synced: 2024-10-18T05:45:28.891Z (29 days ago)
- Language: Ruby
- Size: 184 KB
- Stars: 1
- Watchers: 4
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# SmashingDocs
### Based on [SmarfDoc](https://github.com/RickCarlino/smarf_doc) by [Rick Carlino](https://github.com/RickCarlino/)
## Gem Installation in Rails
In your gemfile add the following to your test group:
`gem 'smashing_docs', '~> 1.3.5'`
Installation differs for RSpec/Minitest, so scroll to the appropriate section for guidance.
## Automatic Installation (RSpec or Minitest!)
After you bundle, run:
`rails g docs:install`
SmashingDocs will be configured to run on all your controller tests with the default
template.If you're using RSpec and you haven't required `rails_helper` in your tests, do that now.
`require 'rails_helper'`
#### To generate your docs
Run `rails g docs:build_docs`, and your docs will be waiting for you in the `smashing_docs` folder.
## Manual RSpec Installation
Add this to your `rails_helper.rb` It should go outside of other blocks
(Do not place it inside the `RSpec.configure` block).
```ruby
SmashingDocs.config do |c|
c.template_file = 'smashing_docs/template.md'
c.output_file = 'smashing_docs/api_docs.md'
c.run_all = true
c.auto_push = false
c.wiki_folder = nil
end
```Add the following content to `spec_helper.rb` inside the `RSpec.configure` block
`# config.after(:suite) { SmashingDocs.finish! }`
It should look like this
```ruby
RSpec.configure do |config|
# Existing code
config.after(:each, type: :controller) do
SmashingDocs.run!(request, response, true)
end
# config.after(:suite) { SmashingDocs.finish! }
end
```#### To run on only select tests
Set the `c.run_all` line to `false` in `rails_helper.rb`
```ruby
SmashingDocs.config do |c|
# configs
c.run_all = false
# configs
end
```Then just add `SmashingDocs.run!(request, response)` to the tests you want to run
```ruby
it "responds with 200" do
get :index
expect(response).to be_success
SmashingDocs.run!(request, response)
end
```## Manual Minitest Installation
Add the code from below to `test_helper.rb`:
```ruby
class ActiveSupport::TestCase
# Already existing code
SmashingDocs.config do |c|
c.template_file = 'smashing_docs/template.md'
c.output_file = 'smashing_docs/api_docs.md'
c.run_all = true
c.auto_push = false
c.wiki_folder = nil
end
# More code
endclass ActionController::TestCase < ActiveSupport::TestCase
def teardown
SmashingDocs.run!(request, response, true)
end
endMiniTest::Unit.after_tests { SmashingDocs.finish! }
```#### To run on only select tests
Set the `c.run_all` line to `false` in `test_helper.rb`
```ruby
SmashingDocs.config do |c|
# configs
c.run_all = false
# configs
end
```Then just add `SmashingDocs.run!(request, response)` to specific tests
```ruby
def get_index
get :index
assert response.status == 200
SmashingDocs.run!(request, response)
end
```## Setting a template
If you used the auto-installer or copied the code from above, SmashingDocs will
look for a template file located in `smashing_docs/template.md`This template may be customized to fit your needs.
```erb
<%= request.method %>
<%= request.path %>
<%= request.params %>
<%= response.body %>
<%= information[:note] %>
```## Where to find the docs
By default, the docs are output to `smashing_docs/api_docs.md` in the Rails project.
You can change this by altering the config in `test_helper.rb` (MiniTest) or
`rails_helper.rb`(RSpec).## Additional Features
#### Skipping documentation on tests
To leave certain tests out of the documentation, just add `SmashingDocs.skip` to the test.
```ruby
it "responds with 200" do
SmashingDocs.skip
# test code
end
```#### Adding information, e.g. notes
SmashingDocs will log all requests and responses by default, but you can add some
**optional** parameters as well.```ruby
it "responds with 200" do
SmashingDocs.information(:note, "This endpoint only responds on Tuesdays")
# test code
end
```
You can store any information with `:note`, `:message`, or any other key you can think of.
To access information in the template, just use `<%= information[:key] %>`#### Auto-Push Docs to Your Project Wiki
SmashingDocs can automatically push your generated docs to your project wiki.
**To enable this feature**
1. Clone your wiki repo from Github into the same parent folder as your appYour folder structure should be
../projects/rails_app
../projects/my_rails_app.wiki
2. Set the name of your wiki folder (do **not** include '.wiki')
``` ruby
SmashingDocs.config do |c|
# configs
c.wiki_folder = "my_rails_app"
end
```3. Set auto_push to true in `rails_helper.rb` or `test_helper.rb`
``` ruby
SmashingDocs.config do |c|
# configs
c.auto_push = true
# configs
end
```4. Build your docs with `rails g docs:build_docs`
#### Generate Docs on Every Test Suite Run
If you prefer to have your docs built every time you run the test suite, and do
not want to run the build command, then uncomment the `SmashingDocs.finish` line
in your `rails_helper` or `test_helper`