🐚
Rubyからシェルスクリプトを実行する4つの書き方
実装したいもの
Rubyからシェルを実行したい
Rubyからコマンドを実行する4つの方法
1.``で囲む
`echo ruby` =>"ruby\n"
2.%x記法
%x(python) =>pythonのインタラクティブシェルが起動。exit()で戻ると、このメソッド自体は空文字を返している。
3.Kernel#system
system('rubocop -a') # rubocopがオートコレクトモードでプロジェクト中を走り回る
4.Kernel#exec
exec('rubocop -a') # rubocopがオートコレクトモードでプロジェクト中を走り回る
注意点として、3.Kernel#systemで動かした場合と違い、4の記法では制御が戻ってこないことに注意する。
まとめ
Rubyからシェルスクリプトを呼ぶ4つの方法をご紹介しました。
しかし、例えば「Rail中からミドルウェアを操作しにいく」みたいなケースでの濫用はやめましょう。
やろうと思えばアプリケーションサーバがそれより下のレイヤをいじりにいくことは不可能ではないですが、極めて不安定なアーキテクチャといえます。
ちょっとしたスクリプトを書く程度にとどめておくくらいにしておいたほうが無難ではないでしょうか。
Discussion