patorashのブログ

方向性はまだない

rake taskで実行確認をとるためにhighlineを使う

highlineという対話式のCLIを提供するgemがあります。

github.com

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を使うと簡単ですね〜。