私のモデルで行うことは次のとおりです。
: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
私は本当にここで困惑しています。何か案は?