Backgroundrb

Bonjour,

je souhaite utiliser ce plugin mais d’une manière bien précise c’est Ã
dire
ne lancer qu’un seul worker (http://backgroundrb.rubyforge.org/).
Le problème est qu’il semble qu’on ne peut passer ses données qu’à la
création du worker mais plus ensuite. Existe-t-il un moyen quelconque
pour
passer outre et passer les données que l’on souhaite à tout moment ?
Mon worker tournerait en permanence et je ne souhaite pas en créer un Ã
chaque fois.

Si si, tu peux envoyer des données au fur et à mesure.

Si tu as défini la méthode foo_bar dans ton worker, tu peux l’appeler
depuis ton appli Rails avec qqch comme :
MiddleMan.worker(session[:job_key]).foo_bar

Evidemment, tu peux passer tous les paramètres que tu veux à cette
méthode foo_bar.

++

yk

Le 05/06/07, Frédéric Logier[email protected] a écrit :

Le 05/06/07, Yann KLIS [email protected] a écrit :

En effet j’ai vu ça cet aprem, mais là je me bas pour que le worker
reconnaisse un objet model que je passe en paramètre, il est censé
connaitre
le model si on le déclare de la sorte ? :
class MyWorker < BackgrounDRb::Worker::RailsBase

Le 05/06/07, Frédéric Logier [email protected] a écrit :

Evidemment, tu peux passer tous les paramètres que tu veux à cette
méthode foo_bar.

En effet j’ai vu ça cet aprem, mais là je me bas pour que le worker
reconnaisse un objet model que je passe en paramètre, il est censé connaitre
le model si on le déclare de la sorte ? :
class MyWorker < BackgrounDRb::Worker::RailsBase

Ok ça a l’air de fonctionner. D’après les commentaires
Ruby on Rails Blog / What is Ruby on Rails for? il suffit
d’ajouter include DRbUndumped dans le modèle que l’on souhaite
transmettre

Le 05/06/07, Yann KLIS [email protected] a écrit :

En effet.
DRb est un véritable système de RPC (Remote Procedure Call) où la
transmission des objets se fait en les sérialisant. Or, quand tu as
créer tes propres objets, il y a de fortes chances qu’une des 2
parties (client ou serveur) ne sache pas comment désérialiser les
objets qu’on lui envoie. C’est ce que fait DRbUndumped (un genre de
sérialisation standard si j’ai bien tout compris).

Moé par contre sur le model User j’ai un beau can’t dump, puis crash.

Le 05/06/07, Frédéric Logier[email protected] a écrit :

Evidemment, tu peux passer tous les paramètres que tu veux à cette

Ok ça a l’air de fonctionner. D’après les commentaires
Ruby on Rails Blog / What is Ruby on Rails for?
il suffit d’ajouter include DRbUndumped dans le modèle que l’on souhaite
transmettre

En effet.
DRb est un véritable système de RPC (Remote Procedure Call) où
la
transmission des objets se fait en les sérialisant. Or, quand tu as
créer tes propres objets, il y a de fortes chances qu’une des 2
parties (client ou serveur) ne sache pas comment désérialiser les
objets qu’on lui envoie. C’est ce que fait DRbUndumped (un genre de
sérialisation standard si j’ai bien tout compris).

++

yk

Le 05/06/07, Yann KLIS [email protected] a écrit :

Tu dois pouvoir déterminer la façon de faire la sérialisation. Mais,
si tu as besoin du modèle et de toutes ces méthodes du côté serveur,
mieux vaut que tu charges l’environnement Rails dès le départ.

Raa le truc vicieux, j’accède bien aux champs de mon modèle envoyé au
worker, sauf quand je veux l’id du model cela me renvoit l’id de l’objet
DRbObject …

Tu dois pouvoir déterminer la façon de faire la sérialisation. Mais,
si tu as besoin du modèle et de toutes ces méthodes du côté serveur,
mieux vaut que tu charges l’environnement Rails dès le départ.

++

yk

Le 05/06/07, Frédéric Logier[email protected] a écrit :

Le 06/06/07, Frédéric Logier a écrit :

Raa le truc vicieux, j’accède bien aux champs de mon modèle envoyé au
worker, sauf quand je veux l’id du model cela me renvoit l’id de l’objet
DRbObject …

Bon corrigé avec un alias_attribute :msg_id, :id dans le model …

fredix :

Raa le truc vicieux, j’accède bien aux champs de mon
modèle envoyé au worker, sauf quand je veux l’id du model
cela me renvoit l’id de l’objet DRbObject …

Bon corrigé avec un alias_attribute :msg_id, :id dans le model …

obj[:id] au lieu de obj.id devrait aussi marcher.

-- Jean-François.


À la renverse.

Le 06/06/07, Jean-François a écrit :

fredix :

Raa le truc vicieux, j’accède bien aux champs de mon
modèle envoyé au worker, sauf quand je veux l’id du model
cela me renvoit l’id de l’objet DRbObject …

Bon corrigé avec un alias_attribute :msg_id, :id dans le model …

obj[:id] au lieu de obj.id devrait aussi marcher.

Ah oui en effet ! moins goret que de faire un alias, merci.