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 sans succés ....
Voici mon code :

runexecution est la fonction que je lance depuis l'input de mon formulaire; elle est décrite dans app/controllers/executions_controller.rb

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
 
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, appelée par l'instruction ci-dessus Daemons.run('myserver.rb', options) , est myserver.rb qui est à la racine de mon site :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/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

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
=> 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 la commande ruby myserver.rb 1 2 3 : tout se passe bien; voici le stdout

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 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