Crystalにプルリクテロ
github/tbrand
自己紹介
鈴木 太一郎
青葉というラーメンが大好きすぎて週一以上で通う
研究 C, CUDA
業務 Ruby, Java, Swift
趣味 Crystal, Ruby, Android
私情によりここは非公開とさせてくださいませm(_ _)m
発表内容
「結構痛めの日本人がめっちゃプルリク出してくるよ」
プルリク1
Crystalを知った次の日に出したプルリク
CrystalってRubyとの互換があるらしい
=> RubyにあってCrystalにないもの実装したらいいでは
=> Array#nitemsを実装(crystal/pull/3501)
=> そういうことじゃねぇと弾かれる
プルリク2
Crystalをいろいろ試していた時に気付いてプルリク
URI.escapeの挙動がRubyと致命的に違う
=> Rubyの方の挙動をする関数を追加(crystal/pull/3515)
=> 無視
プルリク3
Crystalで個人的に不便に感じたためプルリク
`crystal build`がコードを指定しないと動かない
=> プロジェクトのルートではコードを指定しなくても動けばいいのに
=> `crystal init`でshard.yml作るし
=> 実装(crystal/pull/3538)
=> 「shardsで実装してくんない?」
プルリク4
プルリク3をshardsに出す
言われたように`shards build`を実装(shards/pull/136)
=> 紆余曲折
=> マージ!
最近のプルリク
• `crystal init`で作成される.gitignoreに/bin/を追加
• crystal/pull/3596
• => マージ!
• crystal-mysqlのMemoryIOをIO::Memoryに
• crystal-mysql/pull/13
• => マージ!
まとめ
• これからも痛い日本人代表でプルリクを出していきたいです。
完
宣伝
Topazというライブラリを開発中
github: tbrand/topaz
シンプルなDBラッパー(crystal-mysqlをサポート)
Version 0.0.2をリリース!
awesome-crystal にも追加していただきました
モデルの定義
class SampleModel < Topaz::Model
columns(
{name: name, type: String},
{name: age, type: Int32},
{name: score, type: Float64}
)
end
テーブルの作成・削除
SampleModel.create_table
データの作成・削除・検索・更新
SampleModel#create,delete,update,select
SampleModel.where(“age = 25”).order(“score”).range(0, 10).select
モデルの関連付け
has, belongs など
dependencies:
topaz:
github: tbrand/topaz
インストール

Crystal勉強会#4 LT資料