2017-05-28 9 views
0

sidekiqスケジューラーgemを使用して、バックグラウンドでタスクをスケジュールして実行しています。 セットアップはうまく動作し、タスクは正しくスケジューリングされて実行されますが、私のレールモデルの中からメソッドを実行したい場合は、できません。これは私がsidekiqを実行する方法を示します。Sidekiqワーカークラス内でRailsモデルを呼び出せません

sidekiq -r ./app/workers/get_new_users.rb -e production 

どのように私は私のget_new_usersスクリプトは私のモデルにメソッドを呼び出すために得ることができますか?

require 'sidekiq-scheduler' 


class GetNewUsers 
    include Sidekiq::Worker 


    def perform 
    puts User.find(1) 
    end 
end 

おかげで

+0

「私のモデルの中からメソッドを実行する」と正確には何を意味していますか? モデルのインスタンスIDをワーカーに渡す場合は、 User.find(id) などのrmodelsをインスタンス化し、その上でメソッドを呼び出すことができるはずです。私は、実行するのではなく、呼び出し意味タイプミスだ – trueunlessfalse

+0

:) 私はUser.find(id)を呼び出すと、私はこのエラーを取得: NameError:初期化されていない定数GetNewUsers ::ユーザ – rubyist

+0

あなたがに追加労働者 – Iceman

答えて

2

だけ-rパラメータとsidekiqは、あなたのレールの環境をロードしますドロップ(読み:すべてのモデルや他のものを)

また、その後取らされる(-eをドロップすることができますRAILS_ENV env varから、とにかく設定する必要があります)。

そして、バイナリをバンドラで実行することをお勧めします。したがって、あなたのコマンドは次のようになります。

bundle exec sidekiq 
+0

ありがとう!これでうまくいきました。スケジューラの宝石を追加したときに-rスイッチを入れました。 – rubyist

関連する問題