🐚

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

2021/01/07に公開

実装したいもの

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