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
#!/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
=> 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 serverThin web server (v1.6.4 codename Gob Bluth)Maximum connections set to 1024Listening on 0.0.0.0:3000, CTRL+C to stopmyserver.rb: process with pid 28318 started.
Parametres= 2015-10-03 08:30****0.05****5-1-6-2Nbclient=52016-08-31 15:47:56 +02001avantapresDURANTON2avantapresVALENT3avantlog writing failed. closed streamlog writing failed. closed streamlog writing failed. closed stream
# ruby myserver.rb 1 2 3Parametres= 1****2****3
Nbclient=52016-08-31 16:04:10 +02001avantapresDURANTON8882avantapresVALENT3avantapresVIGILE1AA4avantapresVIGILE25avantapresDURANDTON
--
--
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 rails...@googlegroups.com
Pour résilier votre abonnement envoyez un e-mail à l'adresse railsfrance-unsubscribe@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+unsubscribe@googlegroups.com.
Pour obtenir davantage d'options, consultez la page https://groups.google.com/d/optout.
Pour résilier votre abonnement envoyez un e-mail à l'adresse railsfrance...@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...@googlegroups.com.
Pour obtenir davantage d'options, consultez la page https://groups.google.com/d/optout.
--
--
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 rails...@googlegroups.com
Pour résilier votre abonnement envoyez un e-mail à l'adresse railsfrance...@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...@googlegroups.com.
Pour résilier votre abonnement envoyez un e-mail à l'adresse railsfrance-unsubscribe@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+unsubscribe@googlegroups.com.