0

私は ruby​​ スケジューラー、つまり rufus-scheduler を作成しています。1 分ごとにタスクを実行するために、config フォルダー内の初期化セクションにコマンドを記述する必要があります。この中のモジュールからメソッドにアクセスしようとしています。だから私のコードは次のようになります

scheduler.every("1m") do
  puts("HELLO #{Time.now}")
  ModelName.methodname("WHAT ARE YOU DOING")
end

これはどういうわけか、モデルで必要な操作を実行しません。また、構成ファイル内でモデルを呼び出すなど、これが正しい方法であるかどうかもわかりません。このコードをモデルに配置するより良い場所はありますか? または、構成ファイル内でモデルを呼び出すことは完全に良い習慣です。ruby でのさまざまな種類のファイルの使用法を確認するためにインターネットを調べましたが、適切な資料が見つかりませんでした。ヘルプやガイダンスをいただければ幸いです。

4

2 に答える 2

2

スタンドアロンタスクからモデルにアクセスする場合は、rails runnerラッパーを使用するのが最善の方法です。たとえば、スクリプトを次のように呼び出します。

rails runner call_model.rb

これはRails環境にロードされてからスクリプトを実行するため、自分で実行する必要はありません。Railsのコンテキストが不足しているため、モデル自体は機能しません。

それでも不十分な場合はconfig/environment.rb、rufus-scheduler構成に含めることにより、Rails環境をより直接的にロードする必要があります。

于 2011-11-24T16:04:54.037 に答える
1

ある種の実際にスケジュールされたアクションが実際に必要なようです。構成ファイルは構成用であり、その種の実際の作業コード用ではありません。

Railsでスケジュールされたタスクを実行する方法はたくさんあります。

google「railsdaemons」または「railsscheduledtasks」で始めましょう。

cronを使用したスケジュールされたタスクのベストプラクティスの適切なリストは次のとおりです 。railsのcronジョブ:ベストプラクティス?

于 2011-11-24T14:16:16.323 に答える