Skip to content

Instantly share code, notes, and snippets.

@sunaot
sunaot / capybara_win.md
Created April 10, 2014 10:30
capybara on windows
@sunaot
sunaot / exception_in_ruby.md
Created March 10, 2014 11:31
Ruby で Exception

Ruby でアプリケーション例外をつくるときの作り方。

begin
  # 通常の処理
rescue SomeErrorException => e
  # Exception から継承したクラスや StandardError から継承したクラスを指定で受ける
rescue => e # StandardError
  # 継承木に StandardError がいるクラスのみひっかかる
else
@sunaot
sunaot / eigenclass.md
Last active July 4, 2019 02:32
class << self によるクラスメソッドの定義のイディオムの説明とその背景にある特異クラスのかんたんな解説

Ruby のコードを読んでいると

class Hoge
  class << self
    def hello
      puts 'hello'
    end
  end
end
@sunaot
sunaot / product.rb
Created January 16, 2014 13:09
全網羅のテストをしたいときこんなんすると組合せをつくってくれて便利。
test_cases = [
%w[ docomo softbank au emobile willcom ],
%w[ development production testing staging ],
%w[ jp uk de ],
]
test_cases.first.product(*test_cases[1..-1]) do |carrier, env, region|
p carrier: carrier,
env: env,
region: region
end
@sunaot
sunaot / segfault_spec.rb
Created November 13, 2013 11:24
rspec で Ruby が segmentation fault 吐いた (Ruby: 2.0.0p195/2.0.0-p247, RSpec: 2.14.7)
require 'bundler/setup'
module ExtendModule
def foo
'foo'
end
def bar
'bar'
end
@sunaot
sunaot / exception.md
Created August 2, 2013 09:13
例外設計の話

例外設計の話。

こんな指針がいいのかなー 2013 夏 ver.

例外の目的とは?

.NET の「例外のデザインのガイドライン」にもこう書いてある。

  • スローテスト問題
    • なぜスロー?
      • DB アクセス、GUI からのテスト、etc
    • 対策は?
      • 並列実行
      • GC 止めたら速くなったYO!
      • setup に時間のかかるリソースを prefork するように
    • ほんとにそれ対策になってるの?
      • CI 管理者が今あるテストを前提に高速化をする話と明日書くコードが遅い話は混ぜちゃダメ
  • 明日書くコードは生まれながらに高速に書けばいい
select
  c.id
from
  user u
  join
  recipient r
    on (u.id = r.user_id)
  join
 conversation c
@sunaot
sunaot / if.md
Last active October 2, 2019 15:15
条件分岐とのつきあい方

条件分岐とのつきあい方

プログラムが複雑になる一番の理由は条件分岐 (if 文など) です。

条件分岐がなければ、一本道で読み下していけばいいのでバグが入り込む余地は大変少なくなります。

ということで、

  • 条件分岐を書かなくていいように書く
  • 条件分岐を書くなら、わかりやすく局所化して書く