Skip to content

Instantly share code, notes, and snippets.

View olivierlacan's full-sized avatar

Olivier Lacan olivierlacan

View GitHub Profile
@kneath
kneath / controllers.rb
Created October 18, 2012 21:26
Given a controller in need of refactoring into multiple controllers, how can I redirect to new controller actions based upon a feature flag?
# Given a controller in need of refactoring into multiple controllers, how
# can I redirect to new controller actions based upon a feature flag?
#
# The current code "works" but doesn't exercise the controller action.
#
# Rails 2.3 or 3.0 methods accepted
class BetterController
def overview
# .. a small amount of auth/permissions code
@wesgarrison
wesgarrison / gist:3921560
Created October 20, 2012 01:10
October 19 2012 - rubygems.org - notes on server

[transcript from http://www.youtube.com/watch?v=z73uiWKdJhw and irc]

Why is the server unhappy?

  • Bundle API is 70%-80% of traffic and it has to resolve the dependency graph and Marshal
  • x Processes are spinning in Ruby with 380% (of 400% total CPU [4 x 100%])
  • x Bundle can only use vanilla gems, so that's why we have to use Marshal
  • Redis Heapsize
  • Diskspace

Timing - middle of the day US

@todd
todd / 2.0.0-preview1.sh
Created November 2, 2012 02:01
Shell Script to Install Ruby-2.0.0-preview1 with rbenv
curl https://raw.github.com/gist/3998177/0ac991d732fbfba9f3d8cfd14b861461ef2d9393/2.0.0-preview1 > /tmp/2.0.0-preview1
rbenv install /tmp/2.0.0-preview1
@sferik
sferik / passwords_controller.rb
Created November 17, 2012 00:18 — forked from kazpsp/passwords_controller.rb
StrongParameters with Devise
# app/controllers/users/password_controller.rb
class Users::PasswordsController < Devise::PasswordsController
def resource_params
params.require(:user).permit(:email, :password, :password_confirmation, :reset_password_token)
end
private :resource_params
end
@cjmeyer
cjmeyer / snake_case.rb
Created December 12, 2012 15:32
Ruby: Convert camelCase/PascalCase to snake_case.
def snake_case
return downcase if match(/\A[A-Z]+\z/)
gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2').
gsub(/([a-z])([A-Z])/, '\1_\2').
downcase
end
"FooBar".snake_case #=> "foo_bar"
"HeadlineCNNNews".snake_case #=> "headline_cnn_news"
"CNN".snake_case #=> "cnn"
@henrik
henrik / rules.md
Last active May 23, 2022 12:31
Sandi Metz' four rules from Ruby Rogues episode 87. Listen or read the transcript: http://rubyrogues.com/087-rr-book-clubpractical-object-oriented-design-in-ruby-with-sandi-metz/
  1. Your class can be no longer than 100 lines of code.
  2. Your methods can be no longer than five lines of code.
  3. You can pass no more than four parameters and you can’t just make it one big hash.
  4. When a call comes into your Rails controller, you can only instantiate one object to do whatever it is that needs to be done. And your view can only know about one instance variable.

You can break these rules if you can talk your pair into agreeing with you.

@kincorvia
kincorvia / gist:4540489
Created January 15, 2013 17:54
VCR Depecrations
# Typically in Rails to use VCR we setup the RSpec config like so:
RSpec.configure do |config|
config.extend VCR::RSpec::Macros #deprecated
end
# This gives us access to the use_vcr_cassette method:
describe Reviewed::Article do
use_vcr_cassette 'article/grill'
end
@searls
searls / japan_guide.md
Last active June 27, 2025 13:20
Japanese Travel Survival Guide

Japanese Travel Survival Guide

Update 8/16/2015: I updated this guide a bit and posted it to Medium

A few notes about things I do when I travel to Japan.

Survival

Travel light

@sdball
sdball / sandi_metz_rules_for_developers.md
Created January 18, 2013 18:47
Rules for good development from Sandi Metz

Sandi Metz’ rules for developers

  1. Your class can be no longer than a hundred lines of code.
  2. Your methods can be no longer than five lines of code
  3. You can pass no more than four parameters and you can't just make it one big hash.
  4. In your controller, you can only instantiate one object, to do whatever it is that needs to be done.
  5. Your view can only know about one instance variable.
  6. Your Rails view should only send messages to that object i.e., no Demeter violations.[ "thunder dome principal". Translated: one model in, one model out! ]
  7. Rules are meant to be broken if by breaking them you produce better code. [ ...where "better code" is validated by explaining why you want to break the rule to someone else. ]
@olivierlacan
olivierlacan / 1_poltergeist_flash.rb
Last active December 11, 2015 16:59
Poltergeist has a neat but unintuitive way of returning cookies from `page.driver.cookies` or `Capybara.current_session.driver.cookies`, here's how you get them to play nice with assertions in RSpec integration specs using Capybara for example.
module PoltergeistFlash
module TestHelpers
def flash_cookie
cookie = CGI.unescape Capybara.current_session.driver.cookies["flash"].value
return {} unless cookie
JSON.parse(cookie).with_indifferent_access
rescue JSON::ParserError
{}
end
end