2017-05-31 10 views
0

sidekiqスケジューラを使用して毎分メソッドを実行しようとしています。しかし、私がcronジョブを実行しようとすると、私のデータベースにアクセスすることはできません。Rails 5:RedisでSidekiqスケジューラを使用しているときにデータベースにアクセスできない

私はこのようなcronジョブを実行しようとするとこれは私が

uninitialized constant ApplicationController 
/home/raghav/workspace/apps/Shotgun/app/controllers/products_controller.rb:3:in `<top (required)>' 
/usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:120:in `require' 
/usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:120:in `require' 
/var/lib/gems/2.3.0/gems/sidekiq-5.0.0/lib/sidekiq/cli.rb:262:in `boot_system' 
/var/lib/gems/2.3.0/gems/sidekiq-5.0.0/lib/sidekiq/cli.rb:54:in `run' 
/var/lib/gems/2.3.0/gems/sidekiq-5.0.0/bin/sidekiq:12:in `<top (required)>' 
/usr/local/bin/sidekiq:23:in `load' 
/usr/local/bin/sidekiq:23:in `<main>' 

を言っ誤差があるため、このエラーになってしまう、

sidekiq -r ./app/controllers/products_controller.rb 

私のコントローラのコード

#product_controller.rb 

require 'sidekiq-scheduler' 

class ProductsController < ApplicationController 
    include ApplicationHelper 
    include Sidekiq::Worker 

    def task 
    Product.each do |product| 
     product.price.push(get_price_from_link(product.flipkart_link)) 
     product.time.push(Time.now) 
     product.save! 
    end 
    end 

private 

    def product_params 
    params.require(:product).permit(:flipkart_link, :flipkart_id, :name, :category, :image_url, :max_price, :price, :available, :target_price, :user_id) 
    end 
end 


#sidekiq.yml 

:schedule: 
    cron_task: 
    cron: '0 * * * * *' # Runs once per minute 
    class: ProductsController 

ですRedisサーバーの?もしそうなら、私は既存のモデルとデータベースにどのようにアクセスできますか?

答えて

0

問題は、あなたのsidekiqコマンドである:

sidekiq -r ./app/controllers/products_controller.rb 

コントローラが明示的application_controller.rbを必要としない、すなわち、スーパークラスがどこにあるか、それはわからないので、あなたが直接そのような特定のコントローラを必要とすることはできませんしたがって、そのエラー。

Sidekiqの使用状態:

-r, --require [PATH|DIR] Location of Rails application with workers or file to require 

これは、あなたがそれをあなたのRailsアプリケーションは、個々のコントローラではないディレクトリを与えることが示唆されています。しかし、あなたはあなたのRailsアプリのディレクトリからsidekiqのコマンドを実行した場合:

あなたは

は、単に実行した後にエラーの束をデバッグした後sidekiq

+0

を実行する-rオプションは必要ありません最後にエラーが発生しました ActionDispatch :: Routing :: RouteSet:Class –

+0

@raghav_vcのための未定義のメソッド 'relative_url_root = 'このエラーとコード例で新しい質問を開始し、この質問に印を付けると便利です閉鎖または解決される。 – DiegoSalazar

関連する問題