Ich versuche, jede Minute eine Methode mit dem Sidekiq-Scheduler auszuführen. Aber wenn ich versuche, den Cron-Job auszuführen, ist meine Datenbank nicht zugänglich.Rails 5: Ich kann nicht auf meine Datenbank zugreifen, während ich den Sidekiq-Scheduler mit Redis verwende.
Dies ist mein Controller-Code
#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
Wenn ich versuche, den Cron-Job wie dies auszuführen,
sidekiq -r ./app/controllers/products_controller.rb
ich einen Fehler sagen
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>'
diesen Fehler ist, weil vom Redis-Server? Wenn ja, wie kann ich auf meine vorhandenen Modelle und Datenbanken zugreifen?
Nach Debuggen einer Reihe von Fehlern nach der Ausführung Aussage, ich habe einen letzten Fehler sagen undefined Methode 'relative_url_root = 'für ActionDispatch :: Routing :: RouteSet: Klasse –
@raghav_vc Es wäre hilfreicher, eine neue Frage mit diesem Fehler und Code-Beispiele zu starten und diese Frage zu markieren als geschlossen oder aufgelöst. – DiegoSalazar