df
コマンドを実行して、自分のサーバに接続されているディスクの統計情報を表示しようとしています。ただし、ディスクのサイズは常に0として返されます。本番環境内のレールコンソールで同じコマンドを実行すると、ディスクのサイズが返されます。ここでRailsコントローラ対Railsコンソールでコマンドを実行するときの相違
は、私のコードが構成されている方法です
class Disk
def self.metrics
`df -h`
end
end
そして、これは、私はコントローラにそれを呼び出す方法です
class DiskController
def metrics
@metrics = Disk.metrics
end
end
しかし、私は結果を見しようとすると、それは常にnilを返します。ビュー。しかし、同じコマンドはRailsコンソールで動作します。
私はsystem
とPOPEN
を使用しようとしましたが、すべてが同じ結果を返します。
また、同じことは開発中(Mac OSX)でも動作しません(Linux Ubuntu)。
実稼働マシンに 'df'プログラムがインストールされていますか?時にはこれらのものがあなたの 'ENV ['PATH']'にないので、あなたはそれを綴る必要があります。通常は '/ usr/bin/df'のようなものですが、いくつかの設定でどこが隠れているかも知れません。 – tadman
しかし、同じコマンドはRailsコンソールの同じ環境で動作します。 Ubuntuマシンで 'RAILS_ENV = production rails c'を実行してコマンドを実行します。それですべてが機能します。 –
railsアプリケーションが実行されているユーザーアカウントに問題がある可能性があります。もし 'PATH'のようなあなたの環境変数は、もしそうならば、レールコンソールでは異なる可能性があります。 – edhurtig