Re: [RailsFr] actualiser une page depuis le controller rails

2016-08-08 Par sujet Florian Dutey
Je pense que le probleme ici est clairement que tu as une mauvaise
conception (no offense) de ce qu'est un serveur web.

Deux choses en particulier

1) Un serveur web est une application qui ecoute un port en particulier et
qui repond a des evenement http avec des connections dont la duree de vie
est courte.
2) Un serveur web n'a pas pour but d'executer des taches de fond et de push
les reponses a ses clients.

Ce n'est pas important que ce ne soit "qu'une seule page". Ce n'est pas le
job d'un serveur web. Ca prend un process en continu qui n'est pas
disponible pour les autres. Et c'est super inefficace que d'occuper un
thread web pour executer des taches qui n'ont rien a voir avec "repondre a
une requette http".

Une solution bien meilleure (mais pas forcement parfaite et y'en a
probablement d'autres) serait que tu aies un demon qui execute la  tache de
fond, puis qui ecrive le resultat quelque part.

Le "quelque part" est important car les choix technologiques seront
radicalement differents.

1) tu peux ecrire en db, dans une table de resultats. Tes clients web pull
le serveur a intervale regulier, et ton serveur web se contente de choisir
le bon data a leur envoyer. Ils peuvent par exemple, envoyer la derniere
date a laquelle ils ont pull le serveur et le serveur leur envoie tout ce
qui a ete ajoute apres cette date.
2) tu peux ecrire dans une websocket. Chaque fois que ton demon fini une
boucle, il envoie une notif via le serveur websocket (qui n'est PAS le
serveur web mais un serveur dedie) qui broadcastera a tous les clients
connectes.
3) Tu peux mixer 1 et 2. Tu notifies via websocket mais tu enregistres
aussi les resultats en db, comme ca quand quelqu'un charge la page, il peut
recuperer les infos des X dernieres boucles (et tu as un historique ce qui
permet eventuellement par la suite de calculer d'autres stats sur ce data).

Comme demon, tu peux soit te faire un petit script a la con et utiliser une
gem pour "demoniser" le dit script. Y'a beaucoup de gems qui permettent de
faire ca mais peu sont encore tres active. Tu peux aussi essayer de jouer
avec activeJob / Sidekiq ... mais je le deconseille parce que, meme chose
que pour le serveur web, si ton appli necessite beaucoup de jobs
"spontanes", tu en paralyses un en permanence pour runner une boucle
infinie.

My 2 cents

2016-08-08 16:38 GMT+08:00 Francis MILHAU :

> Bonjour
> Ce n'est pas une application rails avec des indicateurs, c'est une
> application rails une page en particuliers) qui interroge la base de
> données à une fréquence déterminée (toutes les 10 minutes par exemple) et
> qui en fonction du résultat met à jour les contrôles sur la page web
> je vais essayer de jetter un coup d'oeil sur rails 5
> merci pour tes conseils
>
> Le 8 août 2016 à 10:36, Francis MILHAU  a écrit :
>
>> Bonjour
>> Ce n'est pas une application rails avec des indicateurs, c'est une
>> application web (une page en particuliers) qui interroge la base de données
>> à une fréquence déterminée (toutes les 10 minutes par exemple) et qui en
>> fonction du résultat met à jour les contrôles sur la page web
>> je vais essayer de jetter un coup d'oeil sur rails 5
>> merci pour tes conseils
>>
>>
>>
>> Le 6 août 2016 à 14:42, Simon Courtois  a écrit :
>>
>>> Bonjour,
>>>
>>> Sur le principe avoir une méthode qui fait une boucle infinie sur le
>>> serveur est une très mauvaise idée car cela block un process. Imaginons que
>>> l'app soit hostée avec par exemple un maximum de 3 processes, il suffit
>>> d'ouvrir la page 3 fois pour que le serveur ne puisse plus répondre à
>>> personne.
>>>
>>> Il serait préférable d'opter pour une solution JS qui va effectivement
>>> interroger le serveur de temps en temps pour une réponse à jour et qui sera
>>> calculée rapidement à la demande.
>>>
>>> Maintenant si on veut se la jouer fancy on peut aussi penser à une
>>> solution à base de websockets, Rails 5 sorti il y a peu propose une
>>> solution clé-en-main appelée ActionCable.
>>>
>>> @ziburudebian Quel est le besoin fonctionnel exact ? C'est pour
>>> l'application avec les indicateurs, etc ?
>>>
>>> Bonne journée,
>>>
>>> Simon Courtois
>>>
>>> On 6 August 2016 at 09:33:34, Julien Grillot (julien.gril...@gmail.com)
>>> wrote:
>>>
>>> Bonjour,
>>>
>>> Le plus simple qui me vienne en tête est que ce soit JavaScript qui
>>> boucle toutes les minutes avec un setInterval pour faire un appel XHR
>>> (ajax) qui récupère ce qui est calculé côté serveur.
>>>
>>> Le 6 août 2016 à 00:16, ziburudebian  a écrit :
>>> > bonjour
>>> >
>>> > je voudrais actualiser ma page web depuis ma fonction ruby :
>>> > sur la bouton 'start' de ma page web (slim), j'appelle une fonction
>>> > (runexecution) de mon controller :
>>> > cette fonction fait une boucle infinie toutes les minutes et doit
>>> > réactualiser le contenu de ma page (input par exemple) en fonction de
>>> > resultat générées par ma fonction runexecution 

Re: [RailsFr] actualiser une page depuis le controller rails

2016-08-08 Par sujet Francis MILHAU
Bonjour
Ce n'est pas une application rails avec des indicateurs, c'est une
application rails une page en particuliers) qui interroge la base de
données à une fréquence déterminée (toutes les 10 minutes par exemple) et
qui en fonction du résultat met à jour les contrôles sur la page web
je vais essayer de jetter un coup d'oeil sur rails 5
merci pour tes conseils

Le 8 août 2016 à 10:36, Francis MILHAU  a écrit :

> Bonjour
> Ce n'est pas une application rails avec des indicateurs, c'est une
> application web (une page en particuliers) qui interroge la base de données
> à une fréquence déterminée (toutes les 10 minutes par exemple) et qui en
> fonction du résultat met à jour les contrôles sur la page web
> je vais essayer de jetter un coup d'oeil sur rails 5
> merci pour tes conseils
>
>
>
> Le 6 août 2016 à 14:42, Simon Courtois  a écrit :
>
>> Bonjour,
>>
>> Sur le principe avoir une méthode qui fait une boucle infinie sur le
>> serveur est une très mauvaise idée car cela block un process. Imaginons que
>> l'app soit hostée avec par exemple un maximum de 3 processes, il suffit
>> d'ouvrir la page 3 fois pour que le serveur ne puisse plus répondre à
>> personne.
>>
>> Il serait préférable d'opter pour une solution JS qui va effectivement
>> interroger le serveur de temps en temps pour une réponse à jour et qui sera
>> calculée rapidement à la demande.
>>
>> Maintenant si on veut se la jouer fancy on peut aussi penser à une
>> solution à base de websockets, Rails 5 sorti il y a peu propose une
>> solution clé-en-main appelée ActionCable.
>>
>> @ziburudebian Quel est le besoin fonctionnel exact ? C'est pour
>> l'application avec les indicateurs, etc ?
>>
>> Bonne journée,
>>
>> Simon Courtois
>>
>> On 6 August 2016 at 09:33:34, Julien Grillot (julien.gril...@gmail.com)
>> wrote:
>>
>> Bonjour,
>>
>> Le plus simple qui me vienne en tête est que ce soit JavaScript qui
>> boucle toutes les minutes avec un setInterval pour faire un appel XHR
>> (ajax) qui récupère ce qui est calculé côté serveur.
>>
>> Le 6 août 2016 à 00:16, ziburudebian  a écrit :
>> > bonjour
>> >
>> > je voudrais actualiser ma page web depuis ma fonction ruby :
>> > sur la bouton 'start' de ma page web (slim), j'appelle une fonction
>> > (runexecution) de mon controller :
>> > cette fonction fait une boucle infinie toutes les minutes et doit
>> > réactualiser le contenu de ma page (input par exemple) en fonction de
>> > resultat générées par ma fonction runexecution :
>> > comment faire ? un render , ...auytre ideés ?
>> >
>> > My config:
>> > Linux debian 7
>> > ruby 2.1
>> > Rails 4.17
>> > mysql 5
>> >
>> > --
>> > --
>> > 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 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
>> 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+unsubscribe@google
>> groups.com.
>> Pour plus d'options, visitez le site 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
>> 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é à un sujet dans le groupe
>> Google Groupes "Railsfrance".
>> Pour vous désabonner de ce sujet, visitez le site
>> https://groups.google.com/d/topic/railsfrance/HtOIj8uJg_E/unsubscribe.
>> Pour vous désabonner de ce groupe et de tous ses sujets, envoyez un
>> e-mail à l'adresse railsfrance+unsubscr...@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 à 

Re: [RailsFr] actualiser une page depuis le controller rails

2016-08-06 Par sujet Simon Courtois
Bonjour,

Sur le principe avoir une méthode qui fait une boucle infinie sur le
serveur est une très mauvaise idée car cela block un process. Imaginons que
l'app soit hostée avec par exemple un maximum de 3 processes, il suffit
d'ouvrir la page 3 fois pour que le serveur ne puisse plus répondre à
personne.

Il serait préférable d'opter pour une solution JS qui va effectivement
interroger le serveur de temps en temps pour une réponse à jour et qui sera
calculée rapidement à la demande.

Maintenant si on veut se la jouer fancy on peut aussi penser à une solution
à base de websockets, Rails 5 sorti il y a peu propose une solution
clé-en-main appelée ActionCable.

@ziburudebian Quel est le besoin fonctionnel exact ? C'est pour
l'application avec les indicateurs, etc ?

Bonne journée,

Simon Courtois

On 6 August 2016 at 09:33:34, Julien Grillot (julien.gril...@gmail.com)
wrote:

Bonjour,

Le plus simple qui me vienne en tête est que ce soit JavaScript qui
boucle toutes les minutes avec un setInterval pour faire un appel XHR
(ajax) qui récupère ce qui est calculé côté serveur.

Le 6 août 2016 à 00:16, ziburudebian  a écrit :
> bonjour
>
> je voudrais actualiser ma page web depuis ma fonction ruby :
> sur la bouton 'start' de ma page web (slim), j'appelle une fonction
> (runexecution) de mon controller :
> cette fonction fait une boucle infinie toutes les minutes et doit
> réactualiser le contenu de ma page (input par exemple) en fonction de
> resultat générées par ma fonction runexecution :
> comment faire ? un render , ...auytre ideés ?
>
> My config:
> Linux debian 7
> ruby 2.1
> Rails 4.17
> mysql 5
>
> --
> --
> 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 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
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 .

-- 
-- 
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 .


Re: [RailsFr] actualiser une page depuis le controller rails

2016-08-06 Par sujet Julien Grillot
Bonjour,

Le plus simple qui me vienne en tête est que ce soit JavaScript qui
boucle toutes les minutes avec un setInterval pour faire un appel XHR
(ajax) qui récupère ce qui est calculé côté serveur.

Le 6 août 2016 à 00:16, ziburudebian  a écrit :
> bonjour
>
> je voudrais actualiser ma page web depuis ma fonction ruby :
> sur la bouton 'start' de ma page web (slim), j'appelle une fonction
> (runexecution) de mon controller :
> cette fonction fait une boucle infinie toutes les minutes et doit
> réactualiser le contenu de ma page (input par exemple) en fonction de
> resultat générées par ma fonction runexecution :
> comment faire ? un render , ...auytre ideés ?
>
> My config:
> Linux debian 7
> ruby 2.1
> Rails 4.17
> mysql 5
>
> --
> --
> 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 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 
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 .