[Ruby] home directory に置いた YAML ファイルを開く

設定ファイルを持って、読み込みたい。

ENVオブジェクトで home ディレクトリのパスを取得。

object ENV (Ruby 2.4.0)

% pry
[1] pry(main)> ENV['HOME']
=> "/Users/****"

File.join でパスを整える。

How to do a safe join pathname in ruby? – Stack Overflow

[2] pry(main)> file = File.join(ENV['HOME'], '.foo')
=> "/Users/****/.foo"

YAML ファイルを読み込み、Ruby オブジェクトに変換する。

Rubyist Magazine – プログラマーのための YAML 入門 (中級編)

[3] pry(main)> require 'yaml'
=> true
[4] pry(main)> config = YAML.load_file(file)
=> {"ignore"=>["atom", "omniplan1"]}
[5] pry(main)> config['ignore']
=> ["atom", "omniplan1"]

ファイルの存在は File.exist? でチェックする。

module function FileTest.#exist? (Ruby 2.4.0)

[6] pry(main)> File.exist?(file)
=> true

サンプルの YAML ファイルは、以下の形式。

~/.foo
ignore:
  - atom
  - omniplan1

Rspec で ENV を stub するには、こんな形で書くよう。

RspecでENVをどうstubするのがよいのか – Qiita

allow(ENV).to receive(:[]).with('HOME').and_return('')