Ruby で expect してみた
ちなみにオリジナルの expect は使ったことがなく、以下の解釈が正しいかどうかはまったく分からないのであしからず。
気をつけることは、
- とにかく一定の順番を見つけること
以下、ハマったところ。
- パターンにマッチしない場合を考えて timeout をセットしないと永遠に終わらない可能性アリ
- パターンにマッチしなかった場合は nil しか得られないので、何の処理に失敗したのかは判別不能
- 正規表現マッチをあまり厳密にしたらまずい?
全部苦労したけど 3 は今でもなんかすっきりする答えを見つけられないでいる。上のコードで prompt を見つける正規表現に $ があったりなかったりするのはそれが理由。基本的には $ まで書いてキッチリ表現したいんだけど、つけるとなぜかマッチしなくなったりして、意味がよく分からないのであまり絞りすぎないことにした。でもそうすると予期しないところにマッチしそうで気持ちよくない。
なんでこんなことしてたかというと、sudo の使えないサーバで root 権限でコマンドを実行したかったから。ほんとは Capistrano で片付くと思っていたけど sudo が使えないということで急遽 expect のお出ましとなった。やってみると実際には expect だけで解決するわけでもなく、なかなか苦労の大きな作業になってしまった。
でもまぁ expect が使えれば自動化できる処理はけっこう増えるわけで、タイミング的にはちょっとつらかったが必要に迫られたおかげでまた一つ幅が広がったと喜んでおくことにした。
cf.
More
Recent Posts
- » Gemini Advancedでもうゲームが変わっていた
- » 今さらLLMのモデルの違いとプロンプトエンジニアリングについて
- » Bundler環境でIRBでもLSPでもドキュメントを利用する方法
- » Ruby 3.2と3.3のirb historyの扱いの違いと対処方法
- » Result型とRailway Oriented Programmingをめぐる旅
- » dry-operationのススメとエラー情報をViewまで持っていく方法の模索
- » aligach.netのRubyとViteをバージョンアップした
- » ViteRuby 3.7.0は起動方法のデフォルトがnpx経由になった
- » GmailからSpreadsheetとGoogle Driveへ書き出すGASライブラリを作った
- » 面倒くさがり屋のためのTypeScript環境