0

メソッドをループおよびバックグラウンドで実行する必要があるプロジェクトがあります。

基本的に、Webサービスを呼び出す→データを読み取る→データベースに保存する→何度もループするメソッドがあります。

「loops」という宝石を見つけましたが、おそらく 2 つの問題があります。

  1. Rails 3 と Ruby 1.9.3 をサポートしているかどうかはわかりません。

  2. サポートされていないようです (最後のコミットは半年前です)。

4

5 に答える 5

1

Ruby にはループ構造があります。

loop { puts "hi" }

于 2012-11-03T03:37:10.337 に答える
0

あなたはいつでも宝石を使うことができます。この宝石を通してこの種の仕事をするのは簡単です。

このトピックに関する無料のレールキャストもあります

ループするメソッドを呼び出すrakeタスクを作成します。(それを行う方法については、他の回答を参照してください)。

そして、あなたはそのevery 1.minuteように言うスケジュールを作成することができます。

于 2012-11-04T05:08:49.890 に答える
0

次のような単純なループ プログラムを作成します。

loop do
  data = read_data_from_web_service
  store_data_to_db(data)
end

でスクリプトを設定しますupstartforemanこれには gem を使用できます。foremanそれ以外はご都合に合わせてそのままご利用いただけますupstartリンクをチェック

monitまたは、スクリプトの監視などのツールを使用できます。

于 2012-11-03T07:13:49.080 に答える
0

私の理解が正しければ、あなたの目標はコードをバックグラウンドで無限にループさせることです。

必要な部品は次のとおりです。

loop do <code> end

現在のスレッドで < code> ノンストップでループします

mythread = Thread.new(<args>) do |<args>| <code> end
mythread.run

< code> を別のスレッド (バックグラウンド、別名非同期) で実行し、あたかも関数であるかのように < args> をそれに渡します。

やりたいことは、スレッド内で < code> をループすることです。そう... (あなたが合格したいと仮定すると

myloop = lambda do loop do <code> end end
mythread = Thread.new(myloop) do |loop| loop.call end
mythread.run
于 2012-11-03T23:07:04.103 に答える
0

rake タスクからメソッドを呼び出して、コマンド ラインから rake タスクを開始するには、nohup.

例:

lib/tasks/fetch_data.rake

task :fetch_and_save => :environment do
  loop do
    Model.method() # Do whatever you need to do here
  end
end

その後、で開始できます$ nohup rake fetch_and_save

于 2012-11-03T03:46:24.600 に答える