rubyでrakeの外部コマンドが失敗した時のエラーハンドリング
webpackerを使用していて、webpacker install
って出ているのに、installは失敗していた。
これはムカつくからpullreq出してやろうと思ったら、すでにあった。
さすがだ。
んで、実際のエラーハンドリング方法が思いつかなったので、これは参考になりました。
run './bin/yarn add webpack webpack-merge path-complete-extname babel-loader babel-core babel-preset-env coffee-loader coffee-script compression-webpack-plugin rails-erb-loader glob' unless $?.success? puts set_color 'Failed to install webpack!', :red exit $?.exitstatus end
$?
はprocessの実行結果がいます。
これを見て、成功したかどうかを判定して、エラー内容を記述していました。
芸がこまかい。
そして、$?
自体初めて知りました。
スレッドで最後の実行結果が入っているのですね。
$?
自体がUNIXの実行結果の可否を調べるものなので、それと同じ動きをしていたってことですね。
% cat foo =>cat: foo: No such file or directory % echo $? =>1
この辺はUNIX/Linux使いで、シェルとか作ってる人は分かるのでしょうが、自分は使ってないので、思いつかなかったので、これをきっかけに覚えておく。
以上です。