Skip to content

Instantly share code, notes, and snippets.

@moro
moro / gist:916881
Created April 13, 2011 02:59
ライブラリpreload + fork()のコンセプト
require 'cucumber'
while(f = File.read('features/run').strip) do
Process.detach(Process.fork {
::ActiveRecord::Base.connection.reconnect!;
::Cucumber::Cli::Main.new([f], $stdout, $stderr).execute!
}).join
puts 'done!!'
end
require 'rubygems'
require 'bundler'
require 'benchmark'
Benchmark.bm do |bm|
bm.report('Bundle.setup'.ljust(50)) do
Bundler.setup
end
bm.report('require "rails/all"'.ljust(50)) do
require 'bundler'
Bundler.setup
require 'active_record'
require 'erb'
ActiveRecord::Base.establish_connection(
YAML.load(ERB.new(File.read('config/dev_database.yml')).result)["test"]
)
module TypeColumn
def type_column(column_name, types = nil)
types ||= const_get(column_name.to_s.pluralize.upcase)
raise if types.blank?
validates_inclusion_of column_name, :in => types
types.each do |t|
scope t, where(column_name => t)
class_eval(%[def #{t}?; #{column_name} == #{t.dump}; end], __FILE__, __LINE__)
end
#!/Users/moro/opt/ruby192/bin/ruby
magicome = "# coding: #{Encoding.default_external.to_s.downcase}"
ARGV.each do |fname|
File.open(fname, 'r+:BINARY') do |src|
content = src.read
src.rewind
src.puts magicome
src.write content
end
@moro
moro / gist:789517
Created January 21, 2011 10:35
.git/hooks/pre-commit
#!/Users/moro/opt/ruby192/bin/ruby
excludes = ['db/schema.rb']
invalids = `git diff --name-only --cached`.each_line.inject([]) do |r, f|
f.strip!
if (f =~ /\.rb\Z/) && !excludes.include?(f) && (File.open(f, "r", &:gets) !~ /\A\#coding:/)
r << f
else
r
end
end
@moro
moro / gist:783979
Created January 18, 2011 04:14 — forked from jugyo/gist:783967
class MyFilter
class << self
def method_missing(m_name, *ignore)
new(m_name)
end
end
def initialize(bar)
@bar = bar
end
@moro
moro / gist:746211
Created December 18, 2010 05:52
neocomplepop snippet for rspec uesr.
snippet describe
abbr describe DESC do before do end end
describe '${1:DESC}' do
before do
${2}
end
end
snippet RS::M
abbr RSpec::Matcher.define
module ImportUtil
module ClassMethods
def inside_import?
Thread.current[:inside_import]
end
def step_into_import
t = Thread.current[:inside_import]
begin
Thread.current[:inside_import] = true
require 'rspec'
require 'active_support/core_ext/array'
describe do
def parent_subject
self.class.ancestors[1].instance_variable_get('@explicit_subject_block').call
end
subject { [:one, :two, :three] }