0

私のモデルで行うことは次のとおりです。

:after_save after_save

def after_save
    self.delay.do_thing
end

def do_thing
    Dir.mkdir("#{Rails.root}/my/path")
    system("cd #{Rails.root}/my/path && wget -with-some-flags")
end

これは開発中に問題なく動作します。ただし、本番環境では何も起こりません。エラーはありません。何もありません。

次のようないくつかのことを確認しました。

  • コマンドを実行する前にコマンドをログに送信して、実際に正しくビルドされていることを確認する
  • コマンドを手動で実行して動作を確認する
  • 実稼働の Rails シェルを開いて を実行するとmyobject.do_thing、これも機能します。
  • バックティックとコマンドを切り替えsystem()て、サブシェルと関係があるかどうかを確認します
  • 絶対コマンド パスを追加します。/usr/bin/wget代わりに、コマンド ラインでも機能しますが、Web ブラウザーでは機能しません。
  • 保存先のフォルダの権限を確認しました

wgetの結果ではなく、ファイルシステムに表示されるdo_thing実行中のフォルダーも作成されるため、メソッドが実行されていることがわかります。thing

私は本当にここで困惑しています。何か案は?

4

0 に答える 0