-
Open a browser
# start an instance of firefox with selenium-webdriver driver = Selenium::WebDriver.for :firefox # :chrome -> chrome # :ie -> iexplore
- Go to a specified URL
// Takes a URL, param name, and data string | |
// Sends to the server.. The server can respond with binary data to download | |
jQuery.download = function(url, key, data){ | |
// Build a form | |
var form = $('<form></form>').attr('action', url).attr('method', 'post'); | |
// Add the one key/value | |
form.append($("<input></input>").attr('type', 'hidden').attr('name', key).attr('value', data)); | |
//send request | |
form.appendTo('body').submit().remove(); |
require 'active_model' | |
# Most of this is the basic boilerplate described in the docs for active_model/errors; ie, the bare minimum | |
# a class must have to use AM::Errors | |
class Post | |
extend ActiveModel::Naming | |
attr_reader :errors | |
attr_accessor :title, :author, :publication_date |
Periodically use pgbackups to pull latest production data.
Merge master into staging
git checkout master
git reset --hard origin/master
git pull
git checkout staging
git reset --hard origin/staging
#Model | |
@user.should have(1).error_on(:username) # Checks whether there is an error in username | |
@user.errors[:username].should include("can't be blank") # check for the error message | |
#Rendering | |
response.should render_template(:index) | |
#Redirecting | |
response.should redirect_to(movies_path) |
class ChangeCalculator | |
QUARTER = 0.25 | |
DIME = 0.10 | |
NICKEL = 0.05 | |
PENNY = 0.01 | |
COINS = [QUARTER, DIME, NICKEL, PENNY] | |
def calculate(x) | |
remaining = x | |
$h = COINS.inject({}) do |hash, coin| |
# app/models/ability.rb | |
# All front end users are authorized using this class | |
class Ability | |
include CanCan::Ability | |
def initialize(user) | |
user ||= User.new | |
can :read, :all |
# (v.respond_to?(:empty?) ? v.empty? : !v) is basically rails' .blank? in plain ruby | |
class Hash | |
def delete_blank | |
delete_if do |k, v| | |
(v.respond_to?(:empty?) ? v.empty? : !v) or v.instance_of?(Hash) && v.delete_blank.empty? | |
end | |
end | |
end |
def get_movie_duration video_file | |
# Run ffmpeg on the video, and do it silently | |
ffmpeg_output = `/usr/local/bin/ffmpeg -i "#{video_file}" 2>&1` | |
# Find the duration in the output, and force a return if it's found | |
/duration: ([0-9]{2}:[0-9]{2}:[0-9]{2}.[0-9]{2})/i.match(ffmpeg_output) { |m| return m[1] } | |
# If it didn't get a match, something is wrong. Log the error | |
return "FFMPEG ERROR" |