Timer

Hola,

Necesito hacer una clase de cronometro que se inicie en un tiempo y que
dure la cantidad de minutos que yo le indique. Y al finalizar que
termine de realizar una accion

Hay algo en RoR que permta hacer esto o en otra cosa que sea adpatable a
RoR??

Saludos,

2008/6/12 Maximiliano M. [email protected]:

Necesito hacer una clase de cronometro que se inicie en un tiempo y que
dure la cantidad de minutos que yo le indique. Y al finalizar que
termine de realizar una accion

La version sencilla es sleep + wget digamos. En que contexto se
ejecuta ese cronometro? Quien lo pone en marcha?

On Jun 12, 2008, at 4:14 AM, Maximiliano M. wrote:

Necesito hacer una clase de cronometro que se inicie en un tiempo y
que
dure la cantidad de minutos que yo le indique. Y al finalizar que
termine de realizar una accion

Y vas a tener al usuario esperando un rato a que el proceso termine? O
lo quieres meter en una cola? Lo digo porque si lo haces así ten en
cuenta de utilizar algo parecido a nginx+fair para que no haya
problemas al servir las peticiones.

Xavier,

Este cronometro se deberia ejecutar en un determiado tiempo. Esto lo
necesito para la subasta, al yo crear la subasta y decir que se iniciara
tal dia, a tal hora y que dura tantos minutos, al llegar ese momento
deberia iniciar el cronometro y permitir al usuario subastar y al
finalizar el tiempo no dejarlo colocar otra oferta mas.

Xavier N. wrote:

2008/6/12 Maximiliano M. [email protected]:

Necesito hacer una clase de cronometro que se inicie en un tiempo y que
dure la cantidad de minutos que yo le indique. Y al finalizar que
termine de realizar una accion

La version sencilla es sleep + wget digamos. En que contexto se
ejecuta ese cronometro? Quien lo pone en marcha?

Para este caso creo que no haría falta ningún temporizador, ya que te
bastaría con saber cuándo se inicia la puja y cuándo termina y entonces
cuando el usuario acceda a la página, si se encuentra dentro del tiempo
establecido(es decir, la fecha actual es mayor o igual que la fecha de
inicio y es menor o igual que la fecha de finalización), se le permitirá
pujar.
Luego si quisieras ejecutar determinadas acciones al inicio o al fin de
la puja, puedes echarle un vistazo a esto para ver como ejecutar
procesos de fondo con Rails:
http://wiki.rubyonrails.org/rails/pages/HowToRunBackgroundJobsInRails
Pero vamos, que para el simple hecho de poder permitir ejecutar ciertas
acciones durante un espacio de tiempo no es necesario lanzar
ningún temporizador…

Saludos

Maximiliano M.
escribió:> Xavier,

Ejemplo sacado de Ajax on rails

def get_time
sleep 1.second
render :text => Time.now
end

Espero que te sea de ayuda, por si es algo parecido.

Un saludo

Atentamente,

David P. Martínez

2008/6/12 Xavier N. [email protected]:

Lo que recomiendas puede ser util, claro que tendria qu hacer la
analogia a horas porque lo que em interesa es hacerlo a una fecha
espeficica y a una hora de inicio y fin. Y el control de la puja lo
podria hscer como tu indicas, pero tengo dos problemas, uno es que em
gustaria que a esa hora y dia se actulice por si solo el estatus de la
subasta que se por default lo coloco como pendiente y al llegar el
momento deberia cambiar a activo, y el segundo problema que durante la
subasta deberia mostrar un reloj que indique los minutos que restan de
la subasta para que el usuaria sepa cuanto tiempo tiene para colocar las
pujas

2008/6/16 Maximiliano M. [email protected]:

Lo que recomiendas puede ser util, claro que tendria qu hacer la
analogia a horas porque lo que em interesa es hacerlo a una fecha
espeficica y a una hora de inicio y fin. Y el control de la puja lo
podria hscer como tu indicas, pero tengo dos problemas, uno es que em
gustaria que a esa hora y dia se actulice por si solo el estatus de la
subasta que se por default lo coloco como pendiente y al llegar el
momento deberia cambiar a activo, y el segundo problema que durante la
subasta deberia mostrar un reloj que indique los minutos que restan de
la subasta para que el usuaria sepa cuanto tiempo tiene para colocar las
pujas

Es que en ese planteamiento la subasta no tiene un campo en la base de
datos para el estado, sino un atributo virtual en el modelo:

untested

def active?
starts_at <= now && now <= ends_at
end

vamos a decir. El reloj parecido, no lo muestras si !active?, y si
active? entonces calculas los minutos que quedan entre Time.now y
ends_at.

Las subastas activas en un momento dado serian

untested

def self.active
find(:all, :contitions => [‘starts_at <= :now AND :now <=
ends_at’, {:now => Time.now}])
end

o named_scope equivalente en 2.1.

Ves la idea.

2008/6/16 Xavier N. [email protected]:

untested

def active?
starts_at <= now && now <= ends_at
end

untested

def active?
now = Time.now
starts_at <= now && now <= ends_at
end

hola,

minutos. Y bueno la parte que no entiendo es como hacer para que esa
vista se actualice sola cada cierto tiempo.

dos opciones “fáciles”.

Una, puro javascript. Al pintar la página le metes una variable
indicando cuál es la fecha límite de la subasta (ten en cuenta que la
hora cambia, así que usar UTC es interesante). A partir de ahí, vas
cambiando la hora en javascript hasta que llegue el final… y cuando
llegue el final puedes mostrar el mensaje que sea y deshabilitar los
controles que sea necesario.

Otra, contador en JavaScript más un “periodically_call_remote” que cada
cierto tiempo pregunte al servidor si la subasta sigue viva, y si no lo
está que haga un update via AJAX.

La primera opción te supone menos carga en tu aplicación, y a cambio
tienes que calcular cierta lógica en cliente. La segunda no te requiere
usar lógica en cliente, pero tienes que hacer peticiones cada x rato, y
al final te pasa como a twitter :stuck_out_tongue:

saludos,

javier ramírez

La idea la entiendo y en realidad ahora lo que mas me preocupa es como
generar el cronometro y que se actualice sola la aplicacion cada cierto
tiempo para ir validando que subastas se han iniciado.

La parte de la validacion de la fecha y hora no me parece nada
complicado, lo que si no me imagino es como hacer el cronometro y que se
vaya moviendo en la aplicacion por si solo hasta que no queden mas
minutos. Y bueno la parte que no entiendo es como hacer para que esa
vista se actualice sola cada cierto tiempo.

Hola a todo el mundo,
soy nuevo en la lista y he estado teniendo
problemas a la hora de enviar y recibir correo. Solo queria asegurarme
de que todo funciona correctamente.

Gracias por todo y disculpad las molestias.

Hola Javier,

estoy usando el periodically_call_remote pero me surge un problema, al
colocarle un id a un div se refresca la pagina, pero el problema es que
en el div se vuelve a colocar tooda la pagina incluyendo el layout

Por ejemplo:

Estoy haciendo esto de prueba, esta vista se denomina reloj y la accion
se encuentra en el controlador proveedor, este controlador tiene su
layout definido llamado proveedor.rhtml, el problema es que no solo hace
el update del div, sino que en todo el div vuelve a colocar toda la
pagina, no solo la accion reloj

<%= periodically_call_remote(:update => “intro”,:frequency => 10,:url =>
{ :action => :reloj}) %>

<%= @reloj.hour %>:<%= @reloj.min %>:<%= @reloj.sec %>

la accion define @reloj=Time.now

Que podria hacer en este caso?

Saludos,
MM

javier ramirez wrote:

hola,

minutos. Y bueno la parte que no entiendo es como hacer para que esa
vista se actualice sola cada cierto tiempo.

dos opciones “f�ciles”.

Una, puro javascript. Al pintar la p�gina le metes una variable
indicando cu�l es la fecha l�mite de la subasta (ten en cuenta que la
hora cambia, as� que usar UTC es interesante). A partir de ah�, vas
cambiando la hora en javascript hasta que llegue el final… y cuando
llegue el final puedes mostrar el mensaje que sea y deshabilitar los
controles que sea necesario.

Otra, contador en JavaScript m�s un “periodically_call_remote” que cada
cierto tiempo pregunte al servidor si la subasta sigue viva, y si no lo
est� que haga un update via AJAX.

La primera opci�n te supone menos carga en tu aplicaci�n, y a cambio
tienes que calcular cierta l�gica en cliente. La segunda no te requiere
usar l�gica en cliente, pero tienes que hacer peticiones cada x rato, y
al final te pasa como a twitter :stuck_out_tongue:

saludos,

javier ram�rez

Te escuchamos :slight_smile:

El día 26 de junio de 2008 23:51, Rafael Enriquez Herrador
[email protected]
escribió:> Hola a todo el mundo,

hola,

Estoy haciendo esto de prueba, esta vista se denomina reloj y la accion
se encuentra en el controlador proveedor, este controlador tiene su
layout definido llamado proveedor.rhtml, el problema es que no solo hace
el update del div, sino que en todo el div vuelve a colocar toda la
pagina, no solo la accion reloj

Que podria hacer en este caso?

voy a darte dos respuestas… la que quieres oir, y la que más te va a
ayudar… si estás en un día sensible, sáltate la segunda :wink:

a) en tu acción le pones
render :layout=>false

disclaimer esta segunda opción no debería ser leída por personas con
problemas cardíacos o que lloraron al ver bambi
disclaimer 2 que conste que ya he contestado al problema en el punto
a)
parental advisory: explicit content

b) te coges un libro de rails, y aunque no entiendas muchas de las cosas
en la primera lectura, de todos modos te lo lees para ir viendo lo que
puedes hacer con la herramienta que estás usando. Luego, cuando te
encuentres con un problema concreto, vuelves al libro, a esa parte que
en su día no entendiste, y verás como con un problema real la entiendes
mejor. En este caso, te vas al apartado que habla de los layouts de las
vistas en general, y luego al que te hable de ajax/rjs. Si todo lo demás
falla, google siempre está dispuesto a echar una mano… y si la vía de
la autoayuda no funciona, entonces la gente de esta lista estará
encantada en ayudarte. Si renuncias a la vía de la autoayuda y te
limitas a hacer lo que la gente te diga en la lista o lo que copies por
ahí sin haber leído antes qué posibilidades hay (y manteniéndote al día
con los cambios), tus desarrollos no van a pasar de mediocres (siendo
generosos).

Saludos,

javier ramírez

2008/6/27 javier ramirez [email protected]:

hola,
disclaimer esta segunda opción no debería ser leída por personas con
problemas cardíacos o que lloraron al ver bambi
disclaimer 2 que conste que ya he contestado al problema en el punto a)
parental advisory: explicit content

Genial, Javier. Muchas gracias por tomarte la molestia de intentar
educar a la gente. Estoy en el Reboot y no puedo revisar todos los
hilos, disculpas si algunos notáis que la lista se asilvestra un poco.

Saludos desde Copenhague.


Manuel, que
piensa que eres una excelente persona y medra en torno a
http://simplelogica.net y/o http://simplelogica.net/logicola/
Recuerda comer mucha fruta y verdura.