Skip to content

Instantly share code, notes, and snippets.

View ledermann's full-sized avatar
🏠
Remote only

Georg Ledermann ledermann

🏠
Remote only
View GitHub Profile
require 'ya2yaml' # Better than to_yaml, because it saves as UTF-8 and sorts hash by keys
namespace :locales do
desc "Parses ActiveRecord models and updates locale files"
task :update => :environment do
Dir.glob(File.join(RAILS_ROOT, 'config', 'locales', '*.yml') ).each do |locale_file|
# Read single locale file
locale_hash = YAML.load(File.read(locale_file))
language = locale_hash.keys.first
# Rails-FormBuilder for creating forms with <label>-Tags
class LabeledFormBuilder < ActionView::Helpers::FormBuilder
helpers = field_helpers +
%w{date_select datetime_select time_select} +
%w{collection_select select country_select time_zone_select} -
%w{radio_button hidden_field label fields_for} # Don't decorate these
helpers.each do |name|
define_method(name) do |field, *args|
# Building authenticated and expiring URL for S3
# Based on
# http://github.com/logandk/paperclip_hacks/blob/master/lib/paperclip.rb
# and
# http://thewebfellas.com/blog/2009/8/29/protecting-your-paperclip-downloads
module Paperclip
class Attachment
def authenticated_url(style = nil, expires_in = 5.minutes)
if @storage.to_s == 's3' && file?
AWS::S3::S3Object.url_for(path(style || default_style), bucket_name, :expires_in => expires_in, :use_ssl => s3_protocol == 'https')
# Liquid methods reflection for ActiveRecord
# Wanna know the defined liquid_methods for a given model?
#
# Example usage:
#
# class Person < ActiveRecord::Base
# liquid_methods :first_name, :last_name
# end
#
# Person.find(123).reflect_on_liquid_methods
# Import a posterous.com Blog into nanoc (http://nanoc.stoneship.org)
# Uses Nokogiri to parse the XML data from the posterous API
require 'rubygems'
require 'nanoc3'
require 'nokogiri'
require 'open-uri'
module Nanoc3::Extra
module Importers
@ledermann
ledermann / patch_acts_as_taggable_on.rb
Created August 5, 2010 16:10
Monkey patch for the Rails plugin "acts_as_taggable_on" to handle dirty tracking
# Monkey patch for the Rails plugin "acts_as_taggable_on" to handle dirty tracking
# http://github.com/mbleigh/acts-as-taggable-on/issues#issue/1
module ActsAsTaggableOn::Taggable
module Core
module InstanceMethods
def set_tag_list_on_with_dirty_tracking(context,new_list)
value = new_list.to_s
attr = "#{context.to_s.singularize}_list"
source :gemcutter
gem 'rails', '~> 2.3.11'
gem 'i18n'
gem 'mysql'
gem 'authlogic'
gem 'declarative_authorization'
gem 'configatron'
gem 'mime-types', :require => 'mime/types'
gem 'ya2yaml'
@ledermann
ledermann / .gitignore
Created May 20, 2011 16:54 — forked from trevorturk/cache_assets.rake
rake deploy and rake cache_assets for Heroku (storing JS minimized and gzipped on Amazon S3)
# Add this
public/javascripts/all.js
@ledermann
ledermann / ransack.rb
Created November 23, 2012 11:29
Ransack with scopes
# Patch for ransack (https://github.com/ernie/ransack) to use scopes
# Helps migrating from Searchlogic or MetaSearch
# Place this file into config/initializer/ransack.rb of your Rails 3.2 project
#
# Usage:
# class Debt < ActiveRecord::Base
# scope :overdue, lambda { where(["status = 'open' AND due_date < ?", Date.today]) }
# end
#
# Ransack out of the box ignores scopes. Example:
@ledermann
ledermann / bigdecimal-with-1-9-3.rb
Last active August 29, 2015 13:56
Dividing with BigDecimal - Ruby 1.9.3 vs. Ruby 2.1.0
# Using Ruby 1.9.3 on OS X, installed via rbenv
~ $ irb
irb(main):001:0> require "bigdecimal"
true
irb(main):002:0> BigDecimal("0.2") / BigDecimal("0.5")
0.4