Muchas gracis nuevamente, investigare un poco en estas ramas que me propones.
Yo lo estaba realizando siguiendo ejemplos de libros implemetando REST con los 
movimientos como nested de procesos y adaptando el codigo generado con 
scaffold_resources. 
Adapte los ejemplos al problema particular mio, sin conocer demasiado 
alternativas de implemetacion ya que es el primer proyecto que estoy encarando 
despues de leer un par de libros.

Muchas gracias nuevamente.-


  ----- Original Message ----- 
  From: Emmanuel Oga 
  To: Grupo Ruby Argentina 
  Sent: Wednesday, October 17, 2007 10:03 AM
  Subject: Re: [RubyArg] Struct como parametro en el initialize de un objeto


  Para empezar, te conviene abstraer el proceso en algun objeto de manera que 
en tu controller no tengas tanto codigo. Algo como:

  class ProcesosController < ApplicationController
  def create
    @proceso = ProcesoCompleto.new(params[:proceso])
  end
  end

  Un pequeño tip: No hace falta que definas tu estructura cada vez. Saca la 
definicion del struct fuera de la clase:

  Struct.new "Estructura", :buque, :matricula, :fecha, :latitud, 
  :longitud,:rumbo, :vel, :emp, :tipo, :inm, :dnid, :mem,:mmsi, :mdn

  Struct::Estructura.new (quizas quieras darle un nombre menos generico)

  Para correr algo en "background" necesitas algo como backgrounddrb. El tema 
es que si estas en windows por ahora no te va a funcionar (me conto un pajarito 
que quizas dentro de poco haya soporte de backgroundrb para windows ;)

  Por lo pronto te recomiendo hacer un task y correrlo desde el root de tu 
aplicacion.

  rake mis_procesos:mi_tarea Parametro1=LALALA Parametro2=123 Etc...

  Si te interesa este approach, incluso lo podes programar con el task 
scehduler de windows o algun otro programa. Las tasks son simples script de 
rake que se tiran en el directorio lib/task/tarea.rake. Ejemplo:

  lib/tasks/USERS.rake

  namespace :users do
    desc "Crear usuario admin, contraseña admin"
    task(:admin => :environment) do  # << linea fundamental, levanta el 
ambiente rails
        
         #Aca podes abrir un archivo o hacer lo-que-se-te-cante 
         # Yo solo creo el administrator de mi tabla user, por darte un ejemplo.

          User.create :login => 'admin',
                      :password => 'admin', 
                      :password_confirmation => 'admin', 
                      :email => '[EMAIL PROTECTED]',
                      :is_admin => true

    end
  end

  Ahora, desde el root de la app, hago rake users:admin y se ejecuta el codigo 
en cuestion.

  Fernando Castañeda <[EMAIL PROTECTED]> escribió:
    Gracias Emmanuel intuia que venia por ahi pero no sabia como implementarlo 
o pensaba que ya estaba realizado.
    En cuanto a procesar un archivo de texto por una action de  un controller 
lo arme asi ya que se realizan tres procesos diarios solamente de estos 
archivos de texto
    dentro de una intranet. Cada archiv de texto tiene entre 1000-2000 que 
representan movimientos de buques que marcan su posicion cada 4 hs, mas o menos.
    Como se podria realizar esta tarea en un background sin que el usuario 
tenga que esperar el request de que se grabo todo exitosamente ?
     Como controlaria el proceso si no se realiza de esa manera ?

    Gracias nuevamente por tu colaboracion!

      ----- Original Message ----- 
      From: Emmanuel Oga 
      To: Grupo Ruby Argentina 
      Sent: Wednesday, October 17, 2007 9:19 AM
      Subject: Re: [RubyArg] Struct como parametro en el initialize de un objeto


      Lo que necesitas es el metodo "to_hash" en tu struct. Por desgracia, 
Struct no trae tal metodo. Sin embargo, es bastante facil de agregar:

      Struct.new "Hola", :a, :b

      a= Struct::Hola.new 1, 2

      class Struct::Hola
        def to_hash
          members.inject({}) do |hsh, member|
            hsh[member]= self.send(member); hsh
          end
        end
      end

      a                    # => #<struct Struct::Hola a=1, b=2>
      a.to_hash       # => {"a"=>1, "b"=>2}

      Ahora podes hacer:

      DerivadoDeActiveRecord.new a.to_hash

      P.D.: No te recomiendo procesar un archivo de texto en una action de un 
controller.... te imaginas al usuario haciendo click y teniendo que esperar 10 
segundos a que le devuelva el request? Ahora imaginate a 5 o 6 usurios al mismo 
tiempo haciendo lo mismo....

      Fernando Castañeda <[EMAIL PROTECTED]> escribió: 
        Hola Lista :

        Como se inicializa un objeto (ActiveRecord) con los elementos de un 
struct 
        que le pasa como parametro.
        En la definicion de los elementos del struct son los mismos que los 
        atributos de la clase y tabla que mapea, pero se puede mapear cada 
elemento 
        del
        struct contra los atributos del objeto automaticamente, sin tener que 
        definir un initialize en la clase y mapear a mano cada atributo ?
        Ej. de codigo :
        (Es un tipo encabezado-detalle) (Proceso-Movimiento)

        class ProcesosController < ApplicationController
        def create
        @proceso = Proceso.new(params[:proceso])
        estructura = Struct.new(:buque, :matricula, :fecha, :latitud, 
        :longitud,:rumbo, :vel, :emp, :tipo, :inm, :dnid, :mem,:mmsi, :mdn )
        registros = File.open(@proceso.filename).map {|linea| if linea.length 
>= 106 
        then estructura.new(linea[0..30].strip, *linea[31..-1].split) end}
        registros.each{|x| self.armar_movimiento(x) }
        end
        end


        def armar_movimiento(x)
        # X tiene la sig. info => matricula="1200788",buque="San Marcos I", 
        "fecha="051213", latitud="4244.163S", longitud="06501.443W", 
rumbo="348", 
        vel="00.0", emp="0932", tipo="010", inm="G", dnid="470181355", 
mem="00804", 
        mmsi="028", mdn="701000925", termid=nil>
        movi=Movimiento.new(params[:x])
        #aca quisiera que la estruct del struct se mapee automaticamente
        #con la estructur del objeto ya que son componetens se llaman iguales


        @proceso.movimientos << movi


        end



        Muchas gracias y espero que se haya entendido



        Fernando Castañeda



        _______________________________________________
        Ruby mailing list
        [email protected]
        http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar




--------------------------------------------------------------------------

      Yahoo! Noticias
      Leé la columna de "El Chavo" Fucks y encontrá una visión distinta de las 
Elecciones Presidenciales 2007.
      
http://ar.news.yahoo.com/elecciones2007/opinion/1979/pinginos-empetrolados 

--------------------------------------------------------------------------

      _______________________________________________
      Ruby mailing list
      [email protected]
      http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar

    _______________________________________________
    Ruby mailing list
    [email protected]
    http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar





------------------------------------------------------------------------------

  Yahoo! Noticias
  Leé la columna de "El Chavo" Fucks y encontrá una visión distinta de las 
Elecciones Presidenciales 2007.
  http://ar.news.yahoo.com/elecciones2007/opinion/1979/pinginos-empetrolados 


------------------------------------------------------------------------------


  _______________________________________________
  Ruby mailing list
  [email protected]
  http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
_______________________________________________
Ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar

Responder a