Last active
January 19, 2017 05:50
-
-
Save nicholasjhenry/7904476 to your computer and use it in GitHub Desktop.
RDoc Example
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# * Style guide based on Rails documention | |
module Namespace #:nodoc: don't document this | |
# Generic Namespace exception class | |
class NamespaceError < StandardError | |
end | |
# Raised when... | |
class SpecificError < NamespaceError | |
end | |
# Document the responsibility of the class | |
# | |
# == Heading | |
# | |
# Use headings to break up descriptions | |
# | |
# == Formatting | |
# | |
# Embody +parameters+ or +options+ in Teletype Text tags. You can also use | |
# *bold* or *italics* but must use HTML tags for <b>multiple words</b>, | |
# <i>like this</i> and <tt>like this</tt>. | |
class Base | |
# RDOC documents constants as well | |
MAX_NUMBER_OF_BOOKINGS = 3 | |
# Write comments above for accessors, this will be presented as [R/W] | |
attr_accessor :first_name | |
# However this one will be presented as [R] | |
attr_reader :name | |
def initialize(string) #:notnew: stops RDoc from seeing the initialize method as the new method | |
end | |
# Desribe the behaviour of the method | |
# | |
# ==== Attributes | |
# | |
# * +remove_string+ - Document the first attribute | |
# * +append_string+ - Document the second attribute | |
# * +options+ - Document the third attribute | |
# | |
# ==== Options | |
# | |
# You may which to break out options as a separate item since there maybe | |
# multiple items. Note options are prefixed with a colon, denoting them | |
# as a | |
# | |
# * +:conditions+ - An SQL fragment like "administrator = 1" | |
# * +:order+ - An SQL fragment like "created_at DESC, name". | |
# * +:group+ - An attribute name by which the result should be grouped | |
# * +:limit+ - An integer determining the limit on the number of rows that should be returned. | |
# * +:offset+ - An integer determining the offset from where the rows should be fetched. | |
# * +:joins+ - Either an SQL fragment for additional joins like "LEFT JOIN comments ON comments.post_id = id" (rarely needed) | |
# | |
# ==== Examples | |
# | |
# Illustrate the behaviour of the method using examples. Indent examples: | |
# | |
# base = Base.new("Example String") | |
# base.method_name("Example", "more") | |
def method_name(remove_string, append_string, options) | |
end | |
end | |
end | |
# Examples from Active Record | |
module ActiveRecord #:nodoc: | |
# Generic Active Record exception class. | |
class ActiveRecordError < StandardError | |
end | |
# Raised when the single-table inheritance mechanism failes to locate the subclass | |
# (for example due to improper usage of column that +inheritance_column+ points to). | |
class SubclassNotFound < ActiveRecordError #:nodoc: | |
end | |
class Base | |
# A generic "counter updater" implementation, intended primarily to be | |
# used by increment_counter and decrement_counter, but which may also | |
# be useful on its own. It simply does a direct SQL update for the record | |
# with the given ID, altering the given hash of counters by the amount | |
# given by the corresponding value: | |
# | |
# ==== Attributes | |
# | |
# * +id+ - The id of the object you wish to update a counter on. | |
# * +counters+ - An Array of Hashes containing the names of the fields | |
# to update as keys and the amount to update the field by as values. | |
# | |
# ==== Examples | |
# | |
# # For the Post with id of 5, decrement the comment_count by 1, and | |
# # increment the action_count by 1 | |
# Post.update_counters 5, :comment_count => -1, :action_count => 1 | |
# # Executes the following SQL: | |
# # UPDATE posts | |
# # SET comment_count = comment_count - 1, | |
# # action_count = action_count + 1 | |
# # WHERE id = 5 | |
def update_counters(id, counters) | |
updates = counters.inject([]) { |list, (counter_name, increment)| | |
sign = increment < 0 ? "-" : "+" | |
list << "#{connection.quote_column_name(counter_name)} = #{connection.quote_column_name(counter_name)} #{sign} #{increment.abs}" | |
}.join(", ") | |
update_all(updates, "#{connection.quote_column_name(primary_key)} = #{quote_value(id)}") | |
end | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment