Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
YARD cheatsheet


May 2020 - updated fork:

cribbed from

Templates to remind you of the options and formatting for the different types of objects you might want to document using YARD.


# Namespace for classes and modules that handle serving documentation over HTTP
# @since 0.6.0


# Abstract base class for CLI utilities. Provides some helper methods for
# the option parser
# @author Full Name
# @abstract
# @since 0.6.0
# @attr [Types] attribute_name a full description of the attribute
# @attr_reader [Types] name description of a readonly attribute
# @attr_writer [Types] name description of writeonly attribute
# @deprecated Describe the reason or provide alt. references here


# An alias to {Parser::SourceParser}'s parsing method
# @author Donovan Bray
# @see Description of URL
# @see SomeOtherClass#method
# @deprecated Use {#my_new_method} instead of this method because
#   it uses a library that is no longer supported in Ruby 1.9. 
#   The new method accepts the same parameters.
# @abstract
# @private
# @param [Hash] opts the options to create a message with.
# @option opts [String] :subject The subject
# @option opts [String] :from ('nobody') From address
# @option opts [String] :to Recipient email
# @option opts [String] :body ('') The email's body 
# @param (see User#initialize)
# @param [OptionParser] opts the option parser object
# @param [Array<String>] args the arguments passed from input. This
#   array will be modified.
# @param [Array<String, Symbol>] list the list of strings and symbols.
# The options parsed out of the commandline.
# Default options are:
#   :format => :dot
# @example Reverse a string
#   "mystring.reverse" #=> "gnirtsym"
# @example Parse a glob of files
#   YARD.parse('lib/**/*.rb')
# @raise [ExceptionClass] description
# @return [optional, types, ...] description
# @return [true] always returns true
# @return [void]
# @return [String, nil] the contents of our object or nil
#   if the object has not been filled with data.
# We don't care about the "type" here:
# @return the object
# @return [String, #read] a string or object that responds to #read
# @return description here with no types


# @todo Add support for Jabberwocky service
#   There is an open source Jabberwocky library available 
#   at that can be integrated easily
#   into the project.


# for block {|a, b, c| ... }
# @yield [a, b, c] Description of block
# @yieldparam [optional, types, ...] argname description
# @yieldreturn [optional, types, ...] description

This comment has been minimized.

Copy link

@nixpulvis nixpulvis commented Mar 22, 2013

This is a great reference, thank you.

Do you know what the best way to handle the remove and remove! situation, where you have 2 methods that do the same basic thing, I want to reference the documentation of the remove method and @see seems a bit to subtle.


This comment has been minimized.

Copy link

@VirtuosoJoel VirtuosoJoel commented Apr 30, 2013

I've started to use this kind of notation between closely related methods:


def uniq ...


This comment has been minimized.

Copy link

@axsuul axsuul commented Jan 11, 2018

Note that this reference sheet is outdated as of 2018


This comment has been minimized.

Copy link

@nimylian nimylian commented Jan 29, 2018

@axsuul can you provide some reference for that assertion?


This comment has been minimized.

Copy link

@ForeverZer0 ForeverZer0 commented Jun 22, 2018

@nimylian To answer your question, I assume what @axsuul was referring to was primarily the "Class" section above, while not technically "incorrect", is outdated and deprecated.

It clearly states that the @attr, @attr_reader, and @attr_writer tags are deprecated in favor of @!attribute [r|w] tag.
The former tags still work perfectly well, and do not issue any errors or warnings, but are technically deprecated. Those new to YARD and learning its syntax using a cheat-sheet would be better served to learn the the "modern" tags, not deprecated tags that may or may not exist in future releases.

Reference for Assertion


This comment has been minimized.

Copy link

@tiagopog tiagopog commented Nov 19, 2018

@chetan can you add an example for documenting the key and value types of a Hash? e.g. { foo: "bar" } #=> Hash<Symbol, String>


This comment has been minimized.

Copy link

@phansch phansch commented Jan 29, 2019

I have been keeping a forked version of this cheatsheet up to date here: Let me know if there's anything else that needs updating.


This comment has been minimized.

Copy link

@arthurmde arthurmde commented May 11, 2020

Sometimes, you may want to add a small block of code to your documentation with <code></code> tags. You can do this with the following structure:

+my code+ will produce <code>my code</code>


This comment has been minimized.

Copy link

@deepgreenAntennas deepgreenAntennas commented May 14, 2021

nice job, man. this looks very nice. You put in a great amount of time to produce this I am very happy for you. Any advice on swift integration with beta tools Big Sur would be helpful. ive got wine firing off just fine in Big Sur on command line level but building it as a scattergorry (spelling) is not something I tend to wonder will function with anything that rivals my R compendium. Thanks for sharing!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment