highlineという対話式のCLIを提供するgemがあります。
rake taskで検証用データの自動生成を行いたかったのだけれど、検証用なので本番環境で実行されたら困ります。 そこで、本当に実行するか確認を取るようにしたかったので、今回はこれを使いました。
対話式のCLIを提供してくれるので、今回使いたい確認だけでなく、入力の受付や選択肢から選んだり、単にメッセージを表示するだけなどもできます。 その際に、注意を促すためにメッセージの色を変えたり、太字にしたりなどもできます。めっちゃ便利ですね。
highlineで確認させる。
例えば、bin/rake foo:bar
を実行すると、確認が出て、yesと入力したら実行されるようにするには、以下のようにagree
メソッドを使います。
require 'highline/import' namespace :foo do desc 'アグリーできる?' task bar: :environment do |x, args| say("<%= color('!!! 注意 !!! 本番環境では絶対に実行しないでください!', :red, BOLD) %>") if agree("<%= color('本当に実行しますか?', :red, BOLD) %> (y)es or (n)o") puts "アグリーです" else puts "アグリーできかねます" end end end
まとめ
対話式のCLI作るのはhighlineを使うと簡単ですね〜。