Webアプリエンジニア養成読本ではあまり説明できなかったRubyの便利なヤーツ
Webアプリエンジニア養成読本 Advent Calendar 2014 - Qiita の21日目です。ガチで書くことがなくなってきました!恐縮です。
Webアプリエンジニア養成読本[しくみ、開発、環境構築・運用…全体像を最新知識で最初から! ] (Software Design plus)
- 作者: 和田裕介,石田絢一(uzulla),すがわらまさのり,斎藤祐一郎
- 出版社/メーカー: 技術評論社
- 発売日: 2014/03/11
- メディア: 大型本
- この商品を含むブログ (5件) を見る
擬似変数たち
本書ではあまり触れていませんでしたが、Rubyでは擬似変数と呼ばれる、変数のような値がいくつか存在します。例えば、true
やfalse
もそれに該当します。
それ以外で面白いものとして、__FILE__
や__LINE__
等があります。これらは実行した時点でのファイルのパスや行数を取得することができます。
ちなみに、Ruby 2.0.0からは__dir__
というメソッド(これは特殊変数ではないのだった)も追加されていて、これを使うと File.dirname(__FILE__)
相当……つまり、該当のファイルが格納されているディレクトリ部分を取得できます。
こんな感じのコードで試してみましょう。
cat hoge.rb puts "start:hoge" puts __FILE__ puts __LINE__ puts __dir__ puts "end:hoge"
これを実行してみると
$ ruby hoge.rb start:hoge hoge.rb 3 /private/tmp end:hoge
こんな感じで取得できます。
詳しくは 変数と定数 を見てください。
その他によく使うもの
擬似変数のようなくくりではありませんが、例えばコマンドライン引数を扱うための値として、ARGVやARGFがあります。
ARGV.each do |arg| puts arg end
これを引数付きで実行するとこんな感じになります。
$ ruby sample.rb foo bar baz foo bar baz
ARGFを使うと、引数の値をファイルパスとみなして、内容を読み込むことができます。詳しくは constant Object::ARGV と object ARGF を参照してください。
ここらへんのオブジェクトなどを利用できるようになると、ちょっとしたコマンドラインツールを作るときに役に立ちますね。
おまけ
Rubyではputs
等のレシーバを指定しないメソッドはおおよそKernelに定義されているものです。 module Kernel あたりを見ると、例えば exit
や sleep
等のメソッドが定義されているのがわかります。ちょっとしたコードを書くときに知っておくと便利なヤーツがあるので、ここらへんのメソッド・特殊変数は抑えておくと良いでしょう。
書かなくてはいけない宣伝
今回のエントリで書いたようなことは書けていませんが、書店などで見つけたらぜひ立ち読みでもしてみて、あわよくば購入してみてくださいね。
Webアプリエンジニア養成読本[しくみ、開発、環境構築・運用…全体像を最新知識で最初から! ] (Software Design plus)
- 作者: 和田裕介,石田絢一(uzulla),すがわらまさのり,斎藤祐一郎
- 出版社/メーカー: 技術評論社
- 発売日: 2014/03/11
- メディア: 大型本
- この商品を含むブログ (5件) を見る
enjoy!