完全に時代に取り残されつつ、『パーフェクト Ruby』を読んでいます。
この記事では、「3章の制御構造、4章のクラスとモジュール、5章の組込みラス」を読んでいる中で、忘れたくない部分を中心に備忘録メモしました!
🎳 rescueで同じ例外を再発させる
次のコードでは、resuce
内でエラーを再発できるそう。
begin raise StandardError, 'this' rescue => e logger.error e.message + hogehoge raise #<= 補足した例外を再発< span> end => |
🐝 外部コマンドを実行する
こちらは次のまとめがわかりやすいのでお勧め。
🎉 インスタンス変数へのアクセス
次のコードはClassのインスタンス変数へのアクセサを定義してくれます。
class Hoge attr_accessor :read_write #<=読み書き< span> attr_reader :read_only #<= 読み込みのみ< span> attr_writer :write_only #<= 書き込みのみ< span> end =>=>=読み書き<> |
🏈 モジュールのincludeとextend
これまで覚えられずに何度もトライしている部分です。今回は書籍とブログ『Rubyのmoduleをmix-inする際のincludeとextendの違いをシンプルな例で理解する - memo.yomukaku.net』を拝見しつつ、コードを書いてみました!
モジュールのinclude
では次のような感じ。
module ModuleA def self.class_method_a puts 'output form class_method_a' end def method_a puts 'output from method_a' end end
class Sample include ModuleA
def method_a super puts "Can overwrite!" end end
Sample.class_method_a #=> NoMethodError Sample.new.method_a #=> "output from method_a", "Can overwite!"の順に表示 Sample.method_a #=> output from method_a
|
一方でextend
では次のようになります。
module ModuleA def self.class_method_a puts 'output form class_method_a' end def method_a puts 'output from method_a' end end
class Sample extend ModuleA
def self.method_a super puts "Can overwrite!" end end
Sample.class_method_a #=> NoMethodError Sample.new.method_a #=> NoMethodError Sample.method_a #=> "output from method_a", "Can overwite!"の順に表示
|
ということでまとめです。
- include => モジュールのメソッドがincludeしたクラスのインスタンスメソッドになる
- extend => モジュールのメソッドがextendしたクラスのクラスメソッドになる
😎 Regexp - パターンマッチ
恥ずかしながらRegex#===
を知りませんでした。これはかなり便利!
# 0-9の数字を含めばtrueを返す /[0-9]/ === 'ruby' #=> false /[0-9]/ === 'ruby5' #=> true
|
😸 所感
『パーフェクト Ruby』が、Amazon書籍・プログラミング部門のベストセラーで25位…僕と同じく取り残された人が年末年始読んでるっぽいw
🖥 VULTRおすすめ
「VULTR」はVPSサーバのサービスです。日本にリージョンがあり、最安は512MBで2.5ドル/月($0.004/時間)で借りることができます。4GBメモリでも月20ドルです。
最近はVULTRのヘビーユーザーになので、「ここ」から会員登録してもらえるとサービス開発が捗ります!