Bonjour à tous J'utilise la gem *daemon *mais mon programme ne lit pas toutes les données de ma table client : il y a 5 enregistrements, il s'arrête au deuxième !!! ça fait trois jours que je cherche, j'en peux plus .... Voici mon code :
*runexecution *est la fonction que je lance depuis le bouton de mon formulaire; elle est décrite dans *app/controllers/executions_controller.rb* class ExecutionsController < ApplicationController def runexecution # ============================================================================================================ # DESCRIPTION : Permet de demarrer ou arreter l'execution d'un script (action=start ou stop) # ============================================================================================================ require 'daemons' # ---------------------------- # traitement des parametres # ---------------------------- return "" if params.nil? # ce test permet de ne pas rentrer dans la fonction lors de l'appel via le menu action = "" params.each do |key,value| action = "start" if (key.index("loopstart") != nil) action = "stop" if (key.index("loopstop") != nil) end logger.info("******************action="+action) case action when "start" exedate = "2015-10-03 08:30" frequence = "0.05" listclientselectionne = "1-2-3-4-5" paramopt = "" options = {:ARGV => [action, paramopt, '--', exedate, frequence, listclientselectionne], :dir_mode => :script, :dir => 'tmp/pids', :multiple => true, :ontop => true, :mode => :load, :backtrace => true, :monitor => true, :log_output => true } logger.info("******************options="+options.to_s) Daemons.run('myserver.rb', options) logger.info("******************FIN") when "stop" logger.info("******************loopstop") else redirect_to executions_execution_path end # case action end # runexecution end #class le programme qui tourne en boucle est* myserver.rb* qui est à la racine de mon site : #!/usr/bin/env ruby ENV['RAILS_ENV'] ||= 'production' require File.expand_path('../config/environment', __FILE__) print "\nParametres= " + ARGV[0].to_s + "****" + ARGV[1] + "****" + ARGV[2] + "\n" exedate = ARGV[0] frequence = ARGV[1] listclientselectionne = ARGV[2] delai = frequence.to_f * 60 listclientselectionne = listclientselectionne.split("-") print "Nbclient=" + listclientselectionne.count.to_s + "\n" loop do print Time.now.to_s + "\n" listclientselectionne.each do |idcl| print idcl + "\n" begin print "avant\n" objclient = Client.find(idcl) print "apres\n" if (!objclient.nil?) print objclient.lastname.to_s + "\n" # print objclient.name + "\n" else print "Erreur sur " + idcl + "\n" end rescue ActiveRecord::RecordNotFound => e objclient = nil print "Erreur \n" end end sleep(delai) end et voici les résultat à 'écran => Booting Thin => Rails 4.1.7 application starting in production on http://0.0.0.0:3000 => Run `rails server -h` for more startup options => Notice: server is listening on all interfaces (0.0.0.0). Consider using 127.0.0.1 (--binding option) => Ctrl-C to shutdown server Thin web server (v1.6.4 codename Gob Bluth) Maximum connections set to 1024 Listening on 0.0.0.0:3000, CTRL+C to stop myserver.rb: process with pid 28318 started. Parametres= 2015-10-03 08:30****0.05****5-1-6-2 Nbclient=5 2016-08-31 15:47:56 +0200 1 avant apres DURANTON 2 avant apres VALENT 3 avant log writing failed. closed stream log writing failed. closed stream log writing failed. closed stream Si j'exécute le programme *myserver.rb* depuis la console avec *ruby myserver.rb 1 2 3 : *tout se passe bien; voici le stdout # ruby myserver.rb 1 2 3 Parametres= 1****2****3 Nbclient=5 2016-08-31 16:04:10 +0200 1 avant apres DURANTON888 2 avant apres VALENT 3 avant apres VIGILE1AA 4 avant apres VIGILE2 5 avant apres DURANDTON Si vous avez une idée Merci beaucoup *Ma config* - Debian GNU/Linux 7 - Rails 4.17 - Ruby 1.91 -- -- Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de Google Groups. Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse railsfrance@googlegroups.com Pour résilier votre abonnement envoyez un e-mail à l'adresse railsfrance-unsubscr...@googlegroups.com --- Vous recevez ce message, car vous êtes abonné au groupe Google Groupes Railsfrance. Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant, envoyez un e-mail à l'adresse railsfrance+unsubscr...@googlegroups.com. Pour plus d'options, visitez le site https://groups.google.com/d/optout .