Hijacked from Christian Neukirchen's Ruby Style Guide
These are guides, not rules. There are always reasons to not do something, but if you can stay on this road for as long as possible, at least Gus will be happy.
- Use common sense.
- Be consistent.
-----BEGIN PGP MESSAGE----- | |
Version: GnuPG v1 | |
hQIMA5qBTfxp70ruARAAlw6neEZ62CHefe6NhllFcGZ98I6vCOAkbtXTdOmocM4y | |
KfhocqhNjL9rWf35TEq1iP1kwXvz9mnAoWd8ZMftIOYf+2Hg7hbuxl+9MgUknxz7 | |
NkPwF4hIvebqIjylDQTvO8/ry+rAzmdYQWgNsnxomAUVOAzYBuDr8xfGkOvYRvdI | |
wAtGSViQ4eeZHLDZ0IGH2ptzHt/Wr5/6teDOBmb6D8yyS4MEJP0o/qhAvDXUWEMH | |
jCRyb/s3hXo0eXvG3Zczkvd2yrjqyo0t8sqi/lOV6yHarT5btzHpPMczyD/q6Leb | |
7ecaumtwlIY5Ysyirri2vJ1YRfMkhZNqvpM7aO6ANnW6WaP1xD3YlX+PQm0cAtYp | |
vKEr1E8IjmGxfHhx3tv2AAsvHL4kUFmQ7vCxRGXTKwN8M8OZGJ4rnfMt/wA+gHy+ |
Surround a heredoc with quotes and you can continue the code on the same line: | |
render :status => 404, :text => <<-'EOH' and return unless setup | |
article not found<br/> | |
I, as a server, have failed<br/> | |
https? | |
EOH | |
Quotes also give you more freedom/creativity with the terminal ID: |
type exp = | |
IntExp of int | |
| Builtin of (exp -> env -> exp) | |
| VarExp of string | |
| FunExp of string * exp | |
| LetExp of string * exp * exp | |
| IfExp of exp * exp * exp | |
| AppExp of exp * exp | |
and | |
env = (string * exp) list |
Hijacked from Christian Neukirchen's Ruby Style Guide
These are guides, not rules. There are always reasons to not do something, but if you can stay on this road for as long as possible, at least Gus will be happy.
Create an account on github.com (skip if you already have one)
Create a repo on github.com: using s-and-m for this example
Locally, run the following commands:
git svn clone -s svn://hostname/s-and-m
git clone ./s-and-m better-s-and-m
cd better-s-and-m
git remote rm origin
require 'rubygems' | |
require 'rake' | |
require 'pathname' | |
module ThumbleMonks | |
class Tastic # Formerly Rake::Static | |
def initialize(app, options={}) | |
@app = app |
require 'rubygems' | |
require 'riot' | |
context "Something" do | |
setup do | |
D = 8 | |
end | |
asserts("big") { 8==D } | |
asserts("bigger") { 8===D } |
This is example is taken from a live app I'm playing around with. It's been retrofitted and trimmed for example usage for one Mr. Ben Guthrie! Custom gists by demand. Get em' while they're hot!
# From mattetti's gc_stats.rb | |
# Basic middleware to help developers track their memory usage | |
# DO NOT USE IN PRODUCTION | |
# Currently only tested on Ruby 1.9 and no support guaranteed | |
# Output example: | |
# | |
# GC run, previous cycle was 255 requests ago. | |
# |
I'm not sure what the feature is called in 0.9.26, so I'll describe it instead; essentially, I can package (vendor/cache) my gems for use in deployment and if during the deployment (bundle install vendor/bundle) a gem is found in the shared gems repo (managed through RVM gemsets per project) then that gem is used without unpacking it in vendor/bundle. This is useful to me because my ops dude pre-installs gems needing compilation on all of the systems needing it (managed through Puppet for now); these gems are currently unicorn and bson_ext.
You can argue that he just shouldn't do that and I won't argue back, but that's something he likes since he doesn't want to have to recompile unicorn, bson_ext, etc. for each system as deploys are running; we have a few systems to manage and the list is growing; we also have several services working together and not all are ruby, so he just wants simple deploys. I also can't argue too much with that as there are oodles of things he concerns himself with that I don't have/