Skip to content

Instantly share code, notes, and snippets.

@ordinaryzelig
ordinaryzelig / active_record_sand_boxed.rb
Created February 26, 2010 22:22
internal sandbox mode
# rollback whatever was done in this block.
class ActiveRecord::Base
def self.sand_boxed
transaction do
yield
raise ActiveRecord::Rollback
end
end
@ordinaryzelig
ordinaryzelig / attributes_for.rb
Created March 14, 2010 02:46
attributes hash for any object
# convert results of calling methods into attributes hash.
# e.g. Date.today.attributes_for(:day, :month, :year) would return
# {:day => 13, :month => 3, :year => 2010}
class Object
def attributes_for(*method_names)
method_names.inject({}) do |hash, method_name|
hash[method_name] = send(method_name)
hash
end
# application_controller.rb
before_filter :april_fool
def april_fool
unless logged_in? && session[:april_fooled]
session[:april_fooled] = true
flash.now[:april_fool] = 'error 10.4.1: you may have corrupted data. contact administrator immediately.'
# get it? 2010.4.1!
end
# app/helpers/application_helper.rb
def update_flash
[:notice, :error].each do |type|
message = flash[type]
concat "$('#flash_#{type}').html('message')"
end
end
// app/views/articles/create.js.erb
<% update_flash %>
// javascript code...
<!-- app/views/layouts/application.html.erb. -->
<!-- inside <head> -->
<script type="text/javascript">
<% update_flash %>
</script>
# app/controllers/articles_controller.rb
respond_with :js
def create
flash[:notice] = 'Hello World'
end
// app/views/layouts/application.js.erb
alert(<%= flash[:notice]) %>)
// app/views/layouts/application.js.erb
<% update_flash %>
<%= yield %>
class Ruby
class << self
define_method :'<3' do
puts 'ZOMG I love you!'
end
end
end
Ruby.send('<3')