Skip to content

Instantly share code, notes, and snippets.

@jswanner
jswanner / routes.rb
Last active December 12, 2015 01:38
Rails 3 concern-like, with options.
sociable = ->(options = {}) {
resources :comments, options
resources :categories, options
resources :tags, options
}
resources :messages do sociable.(only: :create) end
resources :posts, &sociable
resources :items, &sociable
@jswanner
jswanner / nulls_last.rb
Created September 13, 2012 20:03
ActiveRecord Postgres Nulls Last
ActiveSupport.on_load(:active_record) do
module Arel::NullsLastPredications
def nulls_last
Arel::Nodes::NullsLast.new self
end
end
module Arel::Nodes
class NullsLast < Unary
def gsub *args
@jswanner
jswanner / Weather.js.diff
Created July 20, 2012 14:57
Prevent OS X dashboard weather widget from moving around.
--- /Library/Widgets/Weather.wdgt/Weather.js 2012-07-20 10:53:24.000000000 -0400
+++ /Library/Widgets/Weather.wdgt/Weather.js 2012-07-20 10:53:40.000000000 -0400
@@ -406,7 +406,7 @@
if (entry != null)
{
iconData.push(entry);
- maxOffset = entry.voffset > maxOffset ? entry.voffset : maxOffset;
+ // maxOffset = entry.voffset > maxOffset ? entry.voffset : maxOffset;
if (entry.hoffset < 0)
@jswanner
jswanner / address.rb
Created July 18, 2012 17:28
Haversine formula with Arel, with possibility of portability.
class Address < ActiveRecord::Base
def self.order_proximity_to(latitude, longitude)
order(Arel::Nodes::Haversine.new(arel_table[:latitude],
arel_table[:longitude],
latitude,
longitude))
end
end
@jswanner
jswanner / 0-Ruby-1.9.3-p194
Created July 17, 2012 17:58
Compare: gem executable, bundler binstubs, bundle exec gem executable
$ time rspec --help > /dev/null
real 0m0.292s
user 0m0.221s
sys 0m0.064s
$ time ./bin/rspec --help > /dev/null
real 0m1.167s
user 0m1.017s
sys 0m0.137s
@jswanner
jswanner / 0-readme.md
Created July 17, 2012 00:34
ruby-1.9.3-p194 cumulative performance patch.

Patched ruby 1.9.3-p194 for 30% faster rails boot

What is this?

This script installs a patched version of ruby 1.9.3-p194 with patches for boot-time performance improvements (#66 and #68), and runtime performance improvements (#83 and #84). It also includes the new backported GC from ruby-trunk.

Huge thanks to funny-falcon for the performance patches.

@jswanner
jswanner / application.rb
Created June 22, 2012 18:01
Basic auth for certain RefineryCMS page.
module MyApplication
class Application < Rails::Application
config.to_prepare do
Refinery::PagesController.class_eval do
before_filter :require_auth, :only => [:show]
def require_auth
if params[:id] == 'secret-page'
authenticate_or_request_with_http_basic('Administration') do |username, password|
username == 'admin' && password == 'password'
end
@jswanner
jswanner / gist:2002935
Created March 8, 2012 19:44
Unique table alias names
terms = ['asdf', 'ghjk']
alias_numbers = (1..terms.length).to_a
tags = Tags.arel_table.alias "tags_#{alias_numbers.shift}"
%script#extras-column-template(type="text/x-jquery-tmpl")
%div.extras(data-bind="foreach: extrasAndExpenses")
%div
/ ko text: text
/ /ko
%a.delete-link X
# OR
%script#extras-column-template(type="text/x-jquery-tmpl")
<!DOCTYPE html>
<html>
<head>
<title>on key press test</title>
<script>
function keyPress(e) {
var keynum, keychar;
if(window.event) { // IE
keynum = e.keyCode;