Skip to content

Instantly share code, notes, and snippets.

@dnagir
dnagir / posts_controller.rb
Created October 26, 2011 05:16
CanCan optional load_and_authorize_resource
class PostsController < InheritedResources::Base
belongs_to :blog, :optional => true # The controller can be nested (/blog/1/posts) or flat (/posts)
# How do make load_and_authorize_resource accept optional :blog?
load_and_authorize_resource :blog
load_and_authorize_resource :post, :through => :blog
end
@dnagir
dnagir / content_switcher.js.coffee
Created October 30, 2011 23:34
Spine.js is not only for CRUD, it is also for TDD with JavaScript
href2selector = (href) -> href.match(/(#.+)/)[1]
class App.ContentSwitcher extends Spine.Controller
elements:
'li': 'items'
events:
'click li a': 'clickLink'
constructor: ->
super
@dnagir
dnagir / model.js
Created November 5, 2011 23:25
Model spec for boolean
it("can understand checkboxes as booleans", function(){
var form = $('<form />');
form.append('<input name="available" value="1" checked="checked" />');
var asset = Asset.fromForm(form);
expect(asset.available).toEqual(true);
form.find('input').prop('checked', false);
expect(Asset.fromForm(form).available).toEqual(false);
});
@dnagir
dnagir / min.rb
Created November 8, 2011 03:44
Spine minimization
files = %w{ajax.js list.js local.js manager.js relation.js route.js spine.js tabs.js tmpl.js}
all = files.inject('') {|m, c| m + File.read("lib/#{c}") }
puts "Initial size: #{all.length / 1024}kb" # =>
require 'closure-compiler'
content = Closure::Compiler.new.compile all
puts "Compressed size: #{content.length / 1024}kb"
File.write('spine-min.js', content)
@dnagir
dnagir / min.rb
Created November 8, 2011 04:01
Spine minimization sizes
require 'closure-compiler'
packages = {
bare: %w{spine.js},
core: %w{spine.js ajax.js route.js tmpl.js},
full: %w{ajax.js list.js local.js manager.js relation.js route.js spine.js tabs.js tmpl.js}
}
packages.each_pair do |package, files|
all = files.inject('') {|m, c| m + File.read("lib/#{c}") }
@dnagir
dnagir / sample_spec.rb
Created November 29, 2011 00:21
jRuby and RSpec shared examples issue
shared_examples_for "weird" do |options={}|
# Uncomment to make it work in jruby
#options = {} unless options.respond_to? :to_hash
it "should be a hash" do
options.should be_a Hash
end
end
@dnagir
dnagir / spec-results
Created November 30, 2011 00:26
architect4r failing specs
......................***......FFFFFFFF.FFF.....F...*..............FFFFFFFFFF*.F...............**........F..FFFF.FF.....FFF.FFFFF...F.......F**
Pending:
Architect4r::Server execute_cypher should return an array of nodes
# No reason given
# ./spec/core/cypher_methods_spec.rb:9
Architect4r::Server execute_cypher should return an array of relationships
# No reason given
# ./spec/core/cypher_methods_spec.rb:15
Architect4r::Server execute_cypher should the data unprocessed
@dnagir
dnagir / specs-run.sh
Created December 2, 2011 13:44
JRuby vs Ruby 1.9.3
# | wall time | specs |
# JRuby | 69s | 34s |
# Ruby 1.9.3 | 28s | 16s |
# x faster | x2.5 | 2.1 |
> ruby -v
jruby 1.6.5 (ruby-1.9.2-p136) (2011-10-25 9dcd388) (Java HotSpot(TM) 64-Bit Server VM 1.6.0_29) [darwin-x86_64-java]
> time bundle exec rspec spec
Finished in 33.8 seconds
@dnagir
dnagir / terminal.sh
Created December 7, 2011 02:03
No Stacktrace in JRuby
> rvm use jruby
Using /Users/dnagir/.rvm/gems/jruby-1.6.5
> bundle exec rspec spec/models/user_spec.rb --backtrace
NameError: uninitialized constant ActiveRecord
> rvm use 1.9.3
Using /Users/dnagir/.rvm/gems/ruby-1.9.3-p0
@dnagir
dnagir / environment.sh
Created December 7, 2011 03:05
JRuby no stacktrace repro
> rvm info
jruby-1.6.5:
system:
uname: "Darwin dima-mac.local 11.2.0 Darwin Kernel Version 11.2.0: Tue Aug 9 20:54:00 PDT 2011; root:xnu-1699.24.8~1/RELEASE_X86_64 x86_64"
bash: "/bin/bash => GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin11)"
zsh: "/bin/zsh => zsh 4.3.11 (i386-apple-darwin11.0)"
rvm: