自分の備忘録を兼ねて書いておく
Rails関連
gem
activerecord
Active Record – Object-relational mapping in Rails
RailsではなくActiveRecordだけ使いたいなら下記を参考に
ActiveRecordを単独で使う
activerecord-diff
https://github.com/tim/activerecord-diff
ActiveRecordのモデル同士で差分比較したいので使った
使いたいModelにincludeすればいいだけなのでお手軽
一時期hashdiffも検討した
が、sequelでhashdiff使ってスクリプト書こうとして面倒になってActiveRecordに乗り換えて使い出した
activerecord-import
https://github.com/zdennis/activerecord-import
使いたかったんだけど、なんかエラーが出てうまくいかなかった
Oracleだとだめなのかな。。。?
読み物とか
Ruby on Rails ガイド:体系的に Rails を学ぼう
http://railsguides.jp/
ActiveRecord使い出すにあたってとりあえずモデル関連を読んだ
あとはActive Support コア拡張機能とか読んでおくと、いろいろ発見がある
Rails SQL Injection Examples
http://rails-sqli.org/
ActiveRecord便利だけど使い方間違えるとセキュリティ的にまずいからよんでおけ、というもの
ちょうどプレースホルダ使わずにUser.where("NAME LIKE '#{name}%'")
とかやっちゃってて焦って直した
N+1問題 / Eager Loading とは - Rails Webook
http://ruby-rails.hatenadiary.com/entry/20141108/1415418367
リレーション設定したはいいものの、どうもパフォーマンスが出ない場合はこのケースかも
まあ、1件あたりはmsecでも積み重なれば大きいよね
Ruby関連
読み物とか
るびま
『Rubyist Magazine』、略して『るびま』は、日本 Ruby の会の有志による Rubyist の Rubyist による、Rubyist とそうでない人のためのウェブ雑誌です。
標準添付ライブラリ紹介 【第 6 回】 委譲を何度も読んでる
最速Rubyリファレンスマニュアル検索! | るりまサーチ
サクサク引ける Rubyリファレンスマニュアル
http://miyamae.github.io/rubydoc-ja/
最速Rubyリファレンスマニュアル検索! | るりまサーチより手軽に引ける気がする
RubyGems Guides for Japanese
http://rubygems-guides-jp.herokuapp.com/
翻訳は未完っぽいけど基礎的事項は十分かと
gem
pry
pry/pry GitHub
irbからこっちに変えて捗りだした
Ruby - pryを使う - Qiita
sequel
http://sequel.jeremyevans.net/
ORM
ActiveRecordに挫折してしばらく使ってた
ActiveRecord的なModelも作れて、ModelでいじりだしてからActiveRecordに乗り換えた
- DB直接いじる感じのこともできる
- いちいちモデル作らなくてもデータ取れる
- migration
- http://sequel.jeremyevans.net/rdoc/files/doc/migration_rdoc.html
- integerかtimestampか
- integerのがシンプルでおススメとのこと
- transaction
- http://sequel.jeremyevans.net/rdoc/files/doc/transactions_rdoc.html
- transactionのオプションでrollbackとかあって、alwaysでつねにrollbackするようになったり
- conn
- チートシート
- sqliteのファイルなくても使えるっぽい
- モデルの作成
- http://sequel.jeremyevans.net/rdoc/files/README_rdoc.html#label-Creating+new+records
- Model.create
- Model.new
- どちらもブロックを引数に取れる
- 削除とhook
- deleteはhookしない
- destroyはhookする
- 上記に関連して、deleteはクエリ一発だけど、destroyはレコードごとにクエリ発行っぽい
- http://sequel.jeremyevans.net/rdoc/files/README_rdoc.html#label-Deleting+records
- モデルのデフォルトスコープ?の設定
- Model.set_dataset
- http://sequel.jeremyevans.net/rdoc/files/README_rdoc.html#label-Sequel+Models
- あれ?でもこっちかな?
- http://sequel.jeremyevans.net/rdoc/files/README_rdoc.html#label-Extending+the+underlying+dataset
- http://sequel.jeremyevans.net/rdoc/classes/Sequel/Model/ClassMethods.html#method-i-dataset_module
hashdiff
https://github.com/liufengyun/hashdiff
データベースレコードの差分比較とかやりたくて、ORMにsequelを使っていたころに検討
結局ARに変更してactiverecord-diffに切り替えた
事前にModelをHashにすんのもなんか面倒だったし
単純にHash同士の比較ならば便利だと思う
parallel
https://github.com/grosser/parallel
並列処理とかやってみたい、と使い出したけどwindowsだから:in_processes
じゃなくて:in_threads
しかできなかったして悩む