こんにちは。
Misoca開発チームのめろたん(@renyamizuno_)です。
最近のマイブームは脚の毛を剃ることです。
前回に引き続きMisocaで使っている便利・おすすめGemを紹介します!
hirb
rails console
でレコードの結果を表示することがよくあると思います。
ですが、
[#<User id:1, name: "merotan">, ………
のように表示されてとても見づらく、わかりにくいですね。
そこでこの hirb
を使いましょう!
Gemの追加
Gemfile
にhirb
と日本語を表示するためにhirb-unicode
を追加して、コンソールでbundle install
します。
group :development do gem "hirb" gem "hirb-unicode" end
使い方
rails console
で
Hirb.enable
と実行し、その後、レコードを表示しましょう!
そうすると、
User.all User Load (0.9ms) SELECT `users`.* FROM `users` +----+----------+ | id | name | +----+----------+ | 1 | merotan | +----+----------+ | 2 | hoge | . . . .
このように表のように表示されるのでとても見やすくなります!
Pryを使っている場合
irb
では無く、pry
を使っています!
という方は FAQ · pry/pry Wiki · GitHub の
How can I use the Hirb gem with Pry?
の項目を参考に設定しましょう!(僕はこれをやっていなかったので、出来ねーなーって1時間くらい無駄にしました。)
hashie
hashieとは、Hashを強力かつ使いやすくするためのgemです!
Hashに入れる値の型を強制したり、各要素をメソッドでアクセスできるようにしたり、指定したキー以外は使えなくするようにしたり…
といった感じにできます!
Gemの追加
Gemfile
にhashie
を追加して、コンソールでbundle install
します。
gem "hashie"
使い方
型の強制
型の強制を行うには
class HogeHash < Hash include Hashie::Extensions::Coercion include Hashie::Extensions::MergeInitializer coerce_key :age, Integer end
のように Hashie::Extensions::Coercion
とHashie::Extensions::MergeInitializer
をinclude
し
coerce_key :age, Integer
のように、型を強制したいキー(この場合age
)と型(この場合Integer
)を書きます。
そして以下が実際に使ってみた結果です!
HogeHash.new(age: 1) # => {:age=>1} HogeHash.new(age: "1") # => {:age => 1} HogeHash.new(age: true) # => Hashie::CoercionError: Cannot coerce property :age from TrueClass to Integer: undefined method `to_i' for true:TrueClass
String
で渡した場合でもInteger
に強制されていますね!
また強制できない場合はError
を出してくれます。いい感じですね。
メソッドでアクセス
メソッドでアクセスするには
class HogeHash < Hashie::Mash end
上のようにHashie::Mash
を継承しましょう!これでメソッドで各要素にアクセスできるようになります!
hoge = HogeHash.new hoge.fuga? # => false hoge.fuga = "fuga!" hoge.fuga # => "fuga!" hoge.fuga? # => true
このようにメソッドでアクセスできるようになります! とても読みやすくて使いやすいです!
指定したキー以外は使えなくする
指定したキー以外は使えないようにするには、
class HogeHash < Hashie::Trash property :fuga end
上のようにHashie::Trash
を継承し、アクセスできるキーをproperty :fuga
のように指定します!
hoge = HogeHash.new hoge.fuga = 123 hoge.fuga # => 123 hoge.hogehoge # => NoMethodError: undefined method `hogehoge' for #<HogeHash fuga=123>
このように、指定したキー以外は NoMethodError
となります!
hashieまとめ
ここで取り上げたのはほんの一部です。 他にも沢山ありますのでご自身で使って頂けたらと思います!
woothee
UserAgentを取って色々見たり、処理を分岐させたいと思うことがあると思います。
ですが、 "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36"
のような文字列で表示されても、見づらいですし扱いづらくわかりにくいです。
そんな時はwoothee
を使いましょう!
Gemの追加
Gemfile
にwoothee
を追加して、コンソールでbundle install
します。
gem "woothee"
使い方
使い方はとてもシンプルで、
Woothee.parse("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36") => {:name=>"Chrome", :category=>:pc, :os=>"Mac OSX", :os_version=>"10.10.3", :version=>"43.0.2357.130", :vendor=>"Google"}
のように使えます。
簡単でとても便利です!
補足
作者さんのブログを読んでいただくととても良い話が読めると思います!
またwoothee
はJava
,Python
,Perl
等多くの言語に対応していて
「完全に一致する挙動のUserAgent判定機」*1
なので、他の言語でも使うといいと思います!
最後に
如何でしたか?
これ便利だな〜〜と思っていただけたら幸いです!
次回もよろしくおねがいします!
*1:tagomorisさんのブログから