# Anchor
click_link 'Save'
# Button
click_button 'awesome'
# Both above
# Generates SQL from migrations | |
# | |
# Usage: | |
# rake db:[migrate,rollback]:with_sql | |
# | |
# The previous rake task will run migrations and create a file in `db/migrate_sql` | |
# Depending on migrate or rollback a file will be created with the respective | |
# sufix. | |
# | |
# Drawbacks: |
# https://37signals.com/svn/posts/2742-the-road-to-faster-tests | |
# spec/support/performance/deferred_garbage_collection.rb | |
class DeferredGarbageCollection | |
DEFERRED_GC_THRESHOLD = (ENV['DEFER_GC'] || 15.0).to_f | |
@@last_gc_run = Time.now | |
def self.start |
# app/models/concerns/slugable.rb | |
module Slugable | |
extend ActiveSupport::Concern | |
included do | |
validates_format_of :slug, :without => /^\d/ | |
before_save :generate_slug | |
end |
# Use this setup block to configure all options available in SimpleForm. | |
SimpleForm.setup do |config| | |
# you need an updated simple_form gem for this to work, I'm referring to the git repo in my Gemfile | |
config.input_class = "form-control" | |
config.wrappers :bootstrap, tag: 'div', class: 'form-group', error_class: 'error' do |b| | |
b.use :html5 | |
b.use :placeholder | |
b.use :label | |
b.use :input |
# encoding: UTF-8 | |
# pt-BR translations for Devise | |
pt-BR: | |
devise: | |
confirmations: | |
confirmed: 'Sua conta foi confirmada com sucesso. Você está logado.' | |
send_instructions: 'Dentro de minutos, você receberá um e-mail com instruções para a confirmação da sua conta.' | |
send_paranoid_instructions: 'Se o seu endereço de e-mail estiver cadastrado, você receberá uma mensagem com instruções para confirmação da sua conta.' | |
failure: | |
already_authenticated: 'Você já está logado.' |
By default, Rails applications build URLs based on the primary key -- the id
column from the database. Imagine we have a Person
model and associated controller. We have a person record for Bob Martin
that has id
number 6
. The URL for his show page would be:
/people/6
But, for aesthetic or SEO purposes, we want Bob's name in the URL. The last segment, the 6
here, is called the "slug". Let's look at a few ways to implement better slugs.
en: | |
errors: | |
messages: | |
wrong_content_type: "is the wrong content type" |
In researching topics for RailsCasts I often read code in Rails and other gems. This is a great exercise to do. Not only will you pick up some coding tips, but it can help you better understand what makes code readable.
A common practice to organize code in gems is to divide it into modules. When this is done extensively I find it becomes very difficult to read. Before I explain further, a quick detour on instance_eval
.
You can find instance_eval
used in many DSLs: from routes to state machines. Here's an example from Thinking Sphinx.
class Article < ActiveRecord::Base
sudo apt-get install libdjvulibre-dev libjpeg-dev libtiff-dev libwmf-dev libmagickcore-dev libmagickwand-dev libmagick++-dev rvm | |
sudo gem install rmagick | |
ok! | |
Fetching: rmagick-2.13.1.gem (100%) Building native extensions. This could take a while ... Successfully installed rmagick-2.13.1 1 gem installed | |
require 'RMagick' #=> true |