Forum: Rails-ES Procesos en background

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Jose vicente R. (Guest)
on 2009-04-20 17:54
Me equivoque de foro y potee mi duda en el ingles. Si algun
administrador puede mover el hilo aqui creo que sera mejor para todos.

Agradeceria cualquier ayuda, el link:

http://www.ruby-forum.com/topic/184763#new
Jose vicente R. (Guest)
on 2009-04-21 12:11
Como indico en el enlace estoy intentando hacer funcionar el
script/runner. Quiero ejecutar un metodo de mimodelo cada minuto para
realizar una serie de pruebas. Para ello en en el crontab escribo la
siguiente linea:

*/1 * * * * /usr/local/bin/ruby user/jose/mimandote.com/script/runner
'Usuario.usuario_del_dia'

Por consola se avisa que cron envia un correo en forma de log a
/var/mail/jose. Asi que hasta alli me he ido, el log que se observa es
el siguiente:

From removed_email_address@domain.invalid  Tue Apr 21 10:04:00 2009
Return-Path: <removed_email_address@domain.invalid>
X-Original-To: jose
Delivered-To: removed_email_address@domain.invalid
Received: by Jose.local (Postfix, from userid 503)
        id 1506A53D700; Tue, 21 Apr 2009 10:04:00 +0200 (CEST)
From: removed_email_address@domain.invalid (Cron Daemon)
To: removed_email_address@domain.invalid
Subject: Cron <jose@Jose> /usr/local/bin/ruby
user/jose/mimandote.com/script/runner 'Usuario.usuario_del_dia'
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=jose>
X-Cron-Env: <USER=jose>
X-Cron-Env: <HOME=/Users/jose>
Message-Id: <removed_email_address@domain.invalid>
Date: Tue, 21 Apr 2009 10:04:00 +0200 (CEST)

/bin/sh: /usr/local/bin/ruby: No such file or directory


El problema viene  por los valores que tiene el Cron-Env por defecto? No
entiendo porque dice que no existe /usr/local/bin/ruby
Sergio Cambra .:: entreCables S.L. ::. (Guest)
on 2009-04-21 12:32
(Received via mailing list)
El Tuesday 21 April 2009 10:11:57 Jose vicente Ribera pellicer
escribió:>
> Subject: Cron <jose@Jose> /usr/local/bin/ruby
>
>
> El problema viene  por los valores que tiene el Cron-Env por defecto? No
> entiendo porque dice que no existe /usr/local/bin/ruby

Seguramente sea porque no existe en el sistema el fichero
/usr/local/bin/ruby,
lo tendras en otra ruta o igual se llama /usr/local/bin/ruby1.8 o algo
asi

--
Sergio Cambra .:: entreCables S.L. ::.
Nicolás Guillén 6, locales 2 y 3. 50.018 Zaragoza
T) 902 021 404 F) 976 52 98 07 E) removed_email_address@domain.invalid
Jaime I. (Guest)
on 2009-04-21 12:34
(Received via mailing list)
El día 21 de abril de 2009 10:11, Jose vicente Ribera pellicer
<removed_email_address@domain.invalid>
escribió:> Como indico en el enlace estoy intentando hacer funcionar el
> script/runner. Quiero ejecutar un metodo de mimodelo cada minuto para
> realizar una serie de pruebas. Para ello en en el crontab escribo la
> siguiente linea:
>
> */1 * * * * /usr/local/bin/ruby user/jose/mimandote.com/script/runner
> 'Usuario.usuario_del_dia'

Si la vas a ejecutar cada minuto, no te hace falta poner */1 , te
basta con * como indicador de minutos

> From: removed_email_address@domain.invalid (Cron Daemon)
>
> /bin/sh: /usr/local/bin/ruby: No such file or directory

Ahí te está diciendo que no existe /usr/local/bin/ruby. ¿Estás seguro
de que está ahí? Ejecuta esto para saber dónde está ruby en tu server:

which ruby

> El problema viene  por los valores que tiene el Cron-Env por defecto? No
> entiendo porque dice que no existe /usr/local/bin/ruby

Yo para estas cosas prefiero hacerlas de otro modo, en lugar de
ponerlas tan directamente en cron, las meto en un script shell dentro
de la aplicación. Por ejemplo, la podrías poner en una nueva carpeta
lib/cron y tener allí todo lo que vayas a ejecutar con cron, por
ejemplo:

lib/cron/usuario_del_dia.sh

Aparte, por lo que veo tu aplicación dices que está en user/jose....
pero eso es una ruta relativa, ¿no deberías poner /users/jose/... o
algo
así?
--
Jaime I.
http://jaimeiniesta.com
http://www.workingwithrails.com/person/6722-jaime-iniesta
Jose vicente R. (Guest)
on 2009-04-21 14:29
Gracias por contestar Jaime. Voy por partes:
>
> Ah� te est� diciendo que no existe /usr/local/bin/ruby. �Est�s seguro
> de que est� ah�? Ejecuta esto para saber d�nde est� ruby en tu server:
>
> which ruby
>

Ya lo he corregido. Desde consola:
which ruby
 /opt/local/bin/ruby

Ejecuto crontab -e y pongo:

*       *       *       *       *       /opt/local/bin/ruby
/Users/jose/mimandote.com/script/runner 'Usuario.usuario_de$
*       *       *       *       *       echo
"hola">>/Users/jose/prueba.txt

Cada minuto en prueba.txt si que se escribe hola, sin embargo si realizo
un cat jose en var/mail/jose no me actualiza el log que manda el cron,
el ultimo que se visualiza es el de antes de los cambios (y ya han
pasado unos cuantos minutos).



>
> Yo para estas cosas prefiero hacerlas de otro modo, en lugar de
> ponerlas tan directamente en cron, las meto en un script shell dentro
> de la aplicaci�n. Por ejemplo, la podr�as poner en una nueva carpeta
> lib/cron y tener all� todo lo que vayas a ejecutar con cron, por
> ejemplo:
>
> lib/cron/usuario_del_dia.sh
>

De momento estoy ahceindolo con el cron directamente hasta que salga.
Luego no descarto hacerlo asi por comodidad a la hora de editar.

--
> Jaime I.
> http://jaimeiniesta.com
> http://www.workingwithrails.com/person/6722-jaime-iniesta
Jose vicente R. (Guest)
on 2009-04-21 14:35
Parece que ya funciona!!

Me salta a un error, pero creo que es por un tema de que en localhost no
tngo las imagenes.

From removed_email_address@domain.invalid  Tue Apr 21 12:33:02 2009
Return-Path: <removed_email_address@domain.invalid>
X-Original-To: jose
Delivered-To: removed_email_address@domain.invalid
Received: by Jose.local (Postfix, from userid 503)
        id 8F5E753E1B0; Tue, 21 Apr 2009 12:33:02 +0200 (CEST)
From: removed_email_address@domain.invalid (Cron Daemon)
To: removed_email_address@domain.invalid
Subject: Cron <jose@Jose> /opt/local/bin/ruby
/Users/jose/mimandote.com/script/runner 'Usuario.new_usr_dia'
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=jose>
X-Cron-Env: <USER=jose>
X-Cron-Env: <HOME=/Users/jose>
Message-Id: <removed_email_address@domain.invalid>
Date: Tue, 21 Apr 2009 12:33:02 +0200 (CEST)

/opt/local/lib/ruby/gems/1.8/gems/rails-2.1.2/lib/commands/runner.rb:47:
/Users/jose/mimandote.com/app/models/avatar.rb:21:in `mkdir': No such
file or directory - public/images/avatar (Errno::ENOENT)
        from /Users/jose/mimandote.com/app/models/avatar.rb:21:in
`initialize'
        from /Users/jose/mimandote.com/app/models/usuario.rb:169:in
`new'
        from /Users/jose/mimandote.com/app/models/usuario.rb:169:in
`avatar'
        from /Users/jose/mimandote.com/app/models/usuario.rb:251:in
`new_usr_dia'
        from /Users/jose/mimandote.com/app/models/usuario.rb:250:in
`each'
        from /Users/jose/mimandote.com/app/models/usuario.rb:250:in
`new_usr_dia'
        from (eval):1
        from
/opt/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in
`eval'
        from
/opt/local/lib/ruby/gems/1.8/gems/rails-2.1.2/lib/commands/runner.rb:47
        from
/opt/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in
`gem_original_require'
        from
/opt/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in
`require'
        from /Users/jose/mimandote.com/script/runner:3

You have mail in /var/mail/jose
Jaime I. (Guest)
on 2009-04-21 14:46
(Received via mailing list)
OK, me alegro de que te funcione :)

En realidad no necesitas especificar en cron dónde está ruby,
directamente puedes ejecutar el comando script/runner, igual que para
ejecutarlo tú no necesitas mencionar a ruby. Igual que para lanzar
script/server en local no haces ruby script/server, no?

2009/4/21 Jose vicente Ribera pellicer
<removed_email_address@domain.invalid>:
>        id 8F5E753E1B0; Tue, 21 Apr 2009 12:33:02 +0200 (CEST)
> Date: Tue, 21 Apr 2009 12:33:02 +0200 (CEST)
>        from /Users/jose/mimandote.com/app/models/usuario.rb:251:in
> /opt/local/lib/ruby/gems/1.8/gems/rails-2.1.2/lib/commands/runner.rb:47
> Posted via http://www.ruby-forum.com/.
> _______________________________________________
> Ror-es mailing list
> removed_email_address@domain.invalid
> http://lists.simplelogica.net/mailman/listinfo/ror-es
>



--
Jaime I.
http://jaimeiniesta.com
http://www.workingwithrails.com/person/6722-jaime-iniesta
Jose vicente R. (Guest)
on 2009-04-21 14:53
> En realidad no necesitas especificar en cron d�nde est� ruby,
> directamente puedes ejecutar el comando script/runner, igual que para
> ejecutarlo t� no necesitas mencionar a ruby. Igual que para lanzar
> script/server en local no haces ruby script/server, no?
>

Tienes razon, saque la informacion de "The rails way" y como vi que lo
especificaban lo hice igual. Antes de subirlo para ver si solo falla
la foto voy a intentarlo implementar en otra parte de la aplicacion que
me funcione completamente en localhost para asegurarme al 100%.

Thanks a todos.
Jose vicente R. (Guest)
on 2009-04-21 16:30
Jose vicente Ribera pellicer wrote:

Tengo un problema a la hora de actualizar el usuario del dia, y seguro
que es por las rutas. A la hora de asignar el usuario del dia  lo que
hacemos es dentro de un grupo de usuarios que se han seleccionado
comprobar cuales tienen avatar y en funcion de esto se asignan como
tales o descartarlos como usuarios del dia.

En el modelo del avatar loq ue hacemos primero es entrar en la funcion
initialize ue es la que genera el error. Esta lo unico que hace es crear
DIRECTORIO en duncion de si exitia o no.

DIRECTORIO = File.join("public", "images", "avatar")


  def initialize(usuario, imagen=nil)
    @usuario = usuario
    @imagen = imagen
    Dir.mkdir(DIRECTORIO) unless File.directory?(DIRECTORIO)
  end

El problema esta aqui, pues el log de cron muestra lo sigueinte:

From: removed_email_address@domain.invalid (Cron Daemon)
To: removed_email_address@domain.invalid
Subject: Cron <jose@Jose> /opt/local/bin/ruby
/Users/jose/mimandote.com/script/runner 'Usuario.new_usr_dia'
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=jose>
X-Cron-Env: <USER=jose>
X-Cron-Env: <HOME=/Users/jose>
Message-Id: <removed_email_address@domain.invalid>
Date: Tue, 21 Apr 2009 13:07:03 +0200 (CEST)

/opt/local/lib/ruby/gems/1.8/gems/rails-2.1.2/lib/commands/runner.rb:47:
/Users/jose/mimandote.com/app/models/avatar.rb:21:in `mkdir': No such
file or directory - public/images/avatar (Errno::ENOENT)
        from /Users/jose/mimandote.com/app/models/avatar.rb:21:in
`initialize'
        from /Users/jose/mimandote.com/app/models/usuario.rb:169:in
`new'
        from /Users/jose/mimandote.com/app/models/usuario.rb:169:in
`avatar'
        from /Users/jose/mimandote.com/app/models/usuario.rb:251:in
`new_usr_dia'
        from /Users/jose/mimandote.com/app/models/usuario.rb:250:in
`each'
        from /Users/jose/mimandote.com/app/models/usuario.rb:250:in
`new_usr_dia'
        from (eval):1
        from
/opt/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in
`eval'
        from
/opt/local/lib/ruby/gems/1.8/gems/rails-2.1.2/lib/commands/runner.rb:47
        from
/opt/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in
`gem_original_require'
        from
/opt/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in
`require'
        from /Users/jose/mimandote.com/script/runner:3


Se esta quejando de que no existe la ruta public/images/avatar. Que
deberia hacer, pasarla como una ruta absoluta??. Esta claro que en ese
caso no valdria uan al estilo Users/jose/mimandote.com/public/.... y
tendria que escribir la del servidor, verdad?. Como puedo obtener la
ruta del servidor, la verdad es que estoy un poco perdido en ese
aspecto?
Manuel González Noriega (Guest)
on 2009-04-21 16:46
(Received via mailing list)
2009/4/21 Jose vicente Ribera pellicer
<removed_email_address@domain.invalid>

> Jose vicente Ribera pellicer wrote:
>
> Tengo un problema a la hora de actualizar el usuario del dia, y seguro
> que es por las rutas. A la hora de asignar el usuario del dia  lo que
> hacemos es dentro de un grupo de usuarios que se han seleccionado
> comprobar cuales tienen avatar y en funcion de esto se asignan como
> tales o descartarlos como usuarios del dia.
>
>
Hola,

por favor, no acumules cuestiones distintas y sin relación en un mismo
hilo.
Abre un hilo nuevo con un asunto apropiado.

Muchas gracias
Jose vicente R. (Guest)
on 2009-04-21 17:47
>
> por favor, no acumules cuestiones distintas y sin relación en un mismo
> hilo.
> Abre un hilo nuevo con un asunto apropiado.
>
>

No hay problema, pero estaba continuando en el hilo ya que era todo
relacionado con las tareas cron.

Saludos
This topic is locked and can not be replied to.