J'essaie de lancer une méthode toutes les minutes à l'aide du planificateur sidekiq. Mais lorsque j'essaie d'exécuter le travail cron, ma base de données n'est pas accessible.Rails 5: Impossible d'accéder à ma base de données lors de l'utilisation du planificateur Sidekiq avec Redis
Ceci est mon code du contrôleur
#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
Lorsque je tente d'exécuter la tâche cron comme celui-ci,
sidekiq -r ./app/controllers/products_controller.rb
je reçois une erreur disant
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>'
Est-ce erreur parce que du serveur Redis? Si oui, comment puis-je accéder à mes modèles et bases de données existants?
Après le débogage d'un tas d'erreurs après l'exécution de la instruction, j'ai une dernière erreur en disant méthode undefined 'relative_url_root = 'pour ActionDispatch :: Routing :: RouteSet: Classe –
@raghav_vc Il serait plus utile de commencer une nouvelle question avec cette erreur et les exemples de code et de marquer cette question comme fermé ou résolu. – DiegoSalazar