Skip to content

Instantly share code, notes, and snippets.

View reu's full-sized avatar

Rodrigo Navarro reu

View GitHub Profile
@reu
reu / presenters.rb
Created June 16, 2012 20:03
Simplest "presenter" ever
class Presenter < BasicObject
def initialize(object)
@object = object
end
def method_missing(method, *args, &block)
@object.send method, *args, &block
end
module RailsHelpers
require "thread"
class Account
attr_reader :amount
def initialize(amount)
@amount = amount
end
def debit(amount)
@reu
reu / mixin.coffee
Created June 7, 2012 23:55
CoffeeScript mixins
# Of course we can make something like this
class Module
@include: (mixin) ->
this.prototype[name] = method for name, method of mixin
Saveable =
save: -> alert "#{@name} saved!"
class User extends Module
@reu
reu / README.md
Created May 21, 2012 14:36
Ruby annotations

Imagine this case:

class Account < ActiveRecord::Base
  def transfer(other, quantity)
    tries = 0
    begin
      tries += 1
      transaction do
        self.quantity -= quantity
@reu
reu / benchmark.rb
Created April 16, 2012 17:00
NUM2DBL slow BigDecimal convertion
# Passos para rodar:
# 1. ruby extconf.rb
# 2. make
# 3. ruby benchmark.rb
require 'benchmark'
require 'bigdecimal'
require './test'
n = 50
@reu
reu / custom-colors.js
Created February 24, 2012 13:06
Highchart bonitinho
$(document).ready(function() {
Highcharts.setOptions({
colors: ["#259E01", "#058DC7", "#7F8DA9", "#ADD981", "#DAF0FD", "#CD0D74"],
chart: {
borderWidth: 0,
marginTop: 50,
plotBackgroundColor: 'rgba(255, 255, 255, .9)',
plotShadow: false,
plotBorderWidth: 0,
marginLeft: 50,
@reu
reu / assets.rb
Created February 19, 2012 11:19
Overriding capistrano assets:precompile task to precompile only when there are changes in any of the assets.
namespace :deploy do
namespace :assets do
task :precompile, :roles => :web, :except => { :no_release => true } do
if capture("cd #{latest_release} && #{source.local.log(source.next_revision(current_revision))} vendor/assets/ lib/assets/ app/assets/ | wc -l").to_i > 0
run "cd #{latest_release} && #{rake} RAILS_ENV=#{rails_env} #{asset_env} assets:precompile"
else
logger.info "No changes on assets. Skipping pre-compilation."
end
end
end
@reu
reu / gist:1827467
Created February 14, 2012 15:12
svp.rake
task :synchronize_site_names => :environment do
require "csv"
first_line_skipped = false
CSV.foreach("doc/sgpd_svp.csv") do |line|
first_line_skipped = true and next unless first_line_skipped
svp_site_id, svp_site_name, oas_site_name = line
class TwitterBootstrapFormBuilder < ActionView::Helpers::FormBuilder
delegate :capture, :content_tag, :tag, :to => :@template
%w[text_field text_area password_field collection_select].each do |method_name|
define_method(method_name) do |name, *args|
errors = object.errors[name].any? ? " error" : ""
error_msg = object.errors[name].any? ? content_tag(:span, object.errors[name].join(","), :class => "help-inline") : ""
content_tag :div, :class => "clearfix#{errors}" do
field_label(name, *args) + content_tag(:div, :class => "input#{errors}") do
@reu
reu / gist:1481649
Created December 15, 2011 16:07
Selenium alert box
page.driver.browser.switch_to.alert.accept
page.driver.browser.switch_to.alert.dismiss
page.driver.browser.switch_to.alert.text
http://code.google.com/p/selenium/wiki/RubyBindings#JavaScript_dialogs