blogyuji.developerによる落書き。プログラミングやカメラをメインにだらだらと書いてます。apps2018年3月16日金曜日RubyでCSVを読み込む時に各行をPOROで取得出来るようにするGem「ReciteCSV」を作りましたRubyでCSVを読み込む時に各行をオブジェクト(PORO)で取得するGem「ReciteCSV」を作りました。https://github.com/yujideveloper/recite_csvどういうもの?RubyでCSVを読むときに各行を普通のオブジェクト(PORO)で扱いたいことないですか?僕はあります。RubyでCSVを読み込む時は↓のような感じでHashっぽいCSV::RowのインスタンスかArrayで扱うことになりますよね。row[0]endReciteCSV使うと↓のような感じで使えるようになります。row.col1end特定のカラムの値を決まったルールで変換して処理するみたいなのもできたり。カラムの変換ロジックを切り出せるのでテスト書きやすくなったりするかもしれません。Readerクラスを作るのをサポートするためのGemです。今のところWriterをサポートする予定はないです。いい感じのコードが思いついたらやるかもしれません。Builderパターンを採用しています。Builderパターンについて知らない人はTechRachoさんの以下の記事が参考になるので読んでみると良いと思います。Builderパターンを使ったおかげでancestorsもきれいになっているはずです。作成されるReaderクラスやそのRowクラスのancestorsに無名モジュールや無名クラスが現れないように気を配ったりしてます。無名クラスがあると継承関係を追いにくいとかありますしね。おわりに作りましたと言っても2017年末にはもう最初のバージョンをリリースしてました。怪しい挙動をするところなどあるかもしれませんが、良ければ使ってみてください。ちなみにReciteCSVの名前の「Recite」は「朗読する」とかそういう感じのところから来ています。CSVを朗読するように良い感じに扱いたいみたいな思いでつけました。バグ修正とか機能追加とかなにかあれば気軽にPRもらえると嬉しいです。