Rubyからシェルスクリプトを実行する4つの書き方


Rubyからシェルの機能を呼びたいんじゃー!

Rubyからgitを叩いて、コミットリスト出してそれをプログラムでごにょごにょしてやるー!等

そういう方々に今日オススメの記事です。

$ irb

して動作検証をしてみる。

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中からミドルウェアを操作しにいく」みたいなケースでの濫用はやめましょう。

やろうと思えばアプリケーションサーバがそれより下のレイヤをいじりにいくことは不可能ではないですが、極めて不安定なアーキテクチャといえます。

ちょっとしたスクリプトを書く程度にとどめておくくらいにしておいたほうが無難ではないでしょうか。