Forum: Rails-ES pregunta filosófica en desarrollo aplic aciones web

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.
manu drac (Guest)
on 2007-04-25 14:45
(Received via mailing list)
Buenas gente,

Llevo un tiempo desarrollando una aplicación en Rails y me parece
genial, poco a poco voy aprendiendo, pero le estoy dando vueltas al
código para mejorarlo.

Estaba pensando en plan crear una API de la aplicación, y así montar
despues la interficie según la API.
Pero ya no sé si es complicarme la vida o que.

¿ Vosotros que teneis más experiencia en Rails y Desarrollo Web, como
planteais los proyectos mas o menos grandes ?

Saludos
Manu
Xavier N. (Guest)
on 2007-04-25 15:09
(Received via mailing list)
On Apr 25, 2007, at 12:44 PM, manu drac wrote:

> Buenas gente,
>
> Llevo un tiempo desarrollando una aplicación en Rails y me parece
> genial, poco a poco voy aprendiendo, pero le estoy dando vueltas al
> código para mejorarlo.
>
> Estaba pensando en plan crear una API de la aplicación, y así
> montar despues la interficie según la API.
> Pero ya no sé si es complicarme la vida o que.

Uno trabaja en la API de la capa modelo tanto como su uso lo
necesite, es raro que un modelo con "peso" en la aplicacion se quede
a nivel de la API de AR. En MVC las acciones deben saber lo menos
posible de los modelos, idealmente deberian limitarse a llamar a un
puñado de metodos de alto nivel. Eso ademas fuerza a hacer un
ejercicio de modelaje que hace que la aplicacion resulte mas pensada.

Para ello añade a los modelos los metodos que consideres, y cuando
estes escribiendo acciones ten un thread en la cabeza que cuestione
si lo que escribes deberia estar encapsulado o ya esta bien.

Como estas indicaciones son muy genericas, para poner un ejemplo
concreto de una aplicacion en la que he trabajado recientemente, me
vi escribiendo en una accion algo asi:

   if current_user.contacts.include?(@user)
     ...
   end

Tate! La clase User deberia encapsular como se sabe que dos usuarios
son contactos (es una aplicacion con red de contactos), deberia poder
escribir sencillamente:

   if current_user.contact?(@user)
     ...
   end

Asi que uno va a user.rb y lo añade.

-- fxn
Imobach González Sosa (Guest)
on 2007-04-25 15:50
(Received via mailing list)
On Wednesday 25 April 2007 12:08:46 Xavier N. wrote:

> escribir sencillamente:
>
>    if current_user.contact?(@user)
>      ...
>    end
>
> Asi que uno va a user.rb y lo añade.

Totalmente de acuerdo.

Yo añadiría que a la hora de encapsular la lógica en el modelo, es conveniente
echar un vistazo al enfoque REST+CRUD propuesto por DHH[1]. No estoy
diciendo
que cambies la arquitectura de tu aplicación, sino que consideres su punto
de
vista. Especialmente interesante es el ejemplo de los
usuarios/grupos[2].

Un saludo.

[1] http://www.loudthinking.com/arc/000593.html
[2] http://www.scribemedia.org/2006/07/09/dhh/

--
Imobach González Sosa
correo-e: imobachgs en banot punto net
jabber id: osoh en jabberes punto org
web: http://www.banot.net/~osoh/
blog: http://devnull.blogs.banot.net/
Sebastian D. (Guest)
on 2007-04-25 18:55
(Received via mailing list)
Y por lo general, no le tengas miedo a ir refactorizando poco a poco...

Es muy probable que escribas algunas acciones bastante complejas, o
incluso que pongas algo de logica dentro de tus vistas. Pero al final
del dia, es buena idea que te alejes un poco del monitor, veas el
codigo desde una perspectiva un poco mas general y lo limpies un
poco... moviendo funciones del controlador al modelo, pasando logica
de la vista a helpers o a la accion, etc, etc.

No te preocupes mucho sobre donde debe ir cada cosa mientras las vas
escribiendo... dejalo para despues (pero no mucho despues) cuando
tengas una imagen mas clara de que es lo que querias que hiciera tu
codigo.
Jaime M. (Guest)
on 2007-04-25 19:27
> ¿ Vosotros que teneis más experiencia en Rails y Desarrollo Web, como
> planteais los proyectos mas o menos grandes ?
>

- Algunas veces es posible mover código del controlador al modelo. Por
ejemplo si utilizas complejos find, creas un método find personalizado
en tu modelo y lo llamas directamente en la vista.

- Mover el código del controlador a un método helper y desde ahí
renderizar (render) el partial.

- Mover algún código común a before filter.

- Utilizar componentes.

Cómo bien lo han apuntado mis compañeros, tener en mente re-factorizar.

Bienvenido.

Saludos.
---
Jaime Mora R.
Imobach González Sosa (Guest)
on 2007-04-26 10:02
(Received via mailing list)
On Wednesday 25 April 2007 15:53:35 Sebastian D. wrote:
> escribiendo... dejalo para despues (pero no mucho despues) cuando
> tengas una imagen mas clara de que es lo que querias que hiciera tu
> codigo.

Efectivamente. Y recuerda: "La optimización prematura es la raíz de todos los
males" (Donald Knuth).

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