Skip to content

Instantly share code, notes, and snippets.

View yasaichi's full-sized avatar
😇

Yuichi Goto yasaichi

😇
View GitHub Profile
@yasaichi
yasaichi / behaves_like.rb
Last active August 29, 2015 14:19
Object#behaves_like?
class Object
def behaves_like?(object)
expected_methods =
if object.respond_to?(:instance_methods)
object.instance_methods
else
object.methods
end
(expected_methods - methods).empty?
@yasaichi
yasaichi / config.ru
Created April 5, 2015 09:28
パーフェクト Ruby on Rails 10章
require './basic_auth'
App = lambda do |env|
[200, { "Content-Type" => "text/html" }, ["Hello, Rack world!"]]
end
use BasicAuth, user_name: 'test:user', password: 'pass'
run App
@yasaichi
yasaichi / basic_auth.rb
Created April 5, 2015 09:11
パーフェクト Ruby on Rails 10章
require 'base64'
class BasicAuth
def initialize(app, user_name:, password:)
@app = app
@user_name = user_name
@password = password
end
def call(env)
@yasaichi
yasaichi / keys.rb
Created March 13, 2015 01:28
rails/rails/blob/4-2-stable/activesupport/lib/active_support/core_ext/hash/keys.rb
class Hash
def transform_keys
return enum_for(:transform_keys) unless block_given?
result = self.class.new
each_key do |key|
result[yield(key)] = self[key]
end
result
end
@yasaichi
yasaichi / camelize_keys.rb
Last active August 29, 2015 14:16
Hash#camelize_keys
require 'active_support/core_ext'
class Hash
unless method_defined?(:camelize_keys)
def camelize_keys(first_letter = :upper)
transform_keys { |key| key.camelize(first_letter) rescue key }
end
end
unless method_defined?(:camelize_keys!)