Rubyist じゃないけど Vagrantifile を読みたい
(=˘ ꒳ ˘=) kubernetes を試そうと Vagrant のリハビリしようとしたら Ruby の表記を思い出すのに手間取ったの巻...
Multi-Machine - Vagrant by HashiCorp の Vagrantfile
を例に、初見で読み方に困ったところを思い出しながら書き留めておきます。
Vagrant.configure("2") do |config| config.vm.provision "shell", inline: "echo Hello" config.vm.define "web" do |web| web.vm.box = "apache" end config.vm.define "db" do |db| db.vm.box = "mysql" end end
ブロック(do..end)
Vagrant.configure("2") do |config| # ... end
は以下の表現と等価ですではありませんでした。
Vagrant.configure("2") { |config| # ... }
どちらの表記も見かけるので迷いますね。複数行の場合は do..end
を使う...とかでしょうか。
引数のカッコを省略
config.vm.provision "shell", inline: "echo Hello"
は以下の表現と等価です。
config.vm.provision("shell", { inline: "echo Hello" })
他の言語から来ると悪魔のようにも見える表記ですが、慣れるとだんだん括弧が見えてくるようになりますね。 この表記のおかげで、私の中では「Rubyは設定ファイル言語」という先入観があります。
DSL-like 表記の面目躍如といった所ですね。