Gema Roja: ¿Ahora una gema no tan roja?

Cómo les anunciaba en el post anterior se vienen cambios en el blog… El cambio es que el blog abarcará otros lenguajes y tecnologías aparte de Ruby. Ahora un mini-FAQ al respecto:

  • ¿Por qué no seguir con la línea original del blog?

Porque ahora no he usado tanto Ruby, por lo que dejo fuera muchos temas interesantes en los que estoy trabajando. Además sería un poco cínico de mi parte publicar muchos posts sobre una tecnología que no uso en forma tan intensiva.

  • ¿Por qué no hacer otro blog?

Porque no quiero tener un blog sobre Ruby y otro sobre el resto de los temas.

  • ¿Por qué seguir llamándose Gema Roja entonces?

Más adelante le cambiaré el nombre al blog, es mejor haciendo un cambio a la vez.

  • Me parece una idea horrible, nunca más leo este puto blog

Primero que todo, eso no es una pregunta. Segundo, espero que cambies de opinión y sigas siendo parte de quienes leen este blog :)

Los cambios siempre son para mejor, por lo que espero que sigan visitando este blog. ¡Hasta la próxima!

Filed under  //  gema roja  
Posted by Jano González 

Gema Roja is not dead

Los últimos 2 meses no han sido de mucha actividad en el blog, pero la próxima semana se viene una sorpresa. Espero que la nueva etapa del blog sea del agrado de todas las personas que nos leen ¡Nos vemos!

Filed under  //  gema roja  
Posted by Jano González 

Videos de las charlas de RubyConf Argentina 2011

Ya están disponibles los videos de la RubyConf Argentina, si quieres revivir la experiencia o ver lo que te perdiste revisa estos links:

Filed under  //  conferencias   videos  
Posted by Jano González 

Cubox busca hackers

Buenas noticias para los rubyistas de Latinoamérica, si eres capaz de seguir una conversación en inglés, te manejas en todo el stack de una aplicación web o mobile y eres un geek, los chicos de Cubox te están buscando.

Si quieres trabajar en Montevideo junto a este gran equipo revisa el anuncio de trabajo.

Filed under  //  trabajos  
Posted by Jano González 

Personaliza el código creado por generadores de rails

Como mi primer post para Gema Roja, la idea es explicar como redefinir el código que crean los generadores de rails.

Desde rails 3, los generadores son mucho más modulares, además de ser definidos con la gema Thor y se pueden encadenar entre sí, como lo hace el generador de 'scaffold' el cual únicamente llama a otros generadores.

Entonces, si te encuentras haciendo los mismos cambios cada vez que generas código con los generadores de rails, tienes la opción de crear tu propio generador o cambiar los templates de código que usan los generadores que vienen con rails.

Para eso, por ejemplo, si queremos cambiar el código generado en un controlador por el generador scaffold, el template que usa rails está en

rails/railties/lib/rails/generators/rails/scaffold_controller/templates/controller.rb

por lo tanto, pueden tomar el contenido de ese archivo, modificarlo y guardarlo en

projecto_rails/lib/templates/rails/scaffold_controller/controller.rb

y cada vez que ejecuten rails g scaffold_controller controller_name o rails g scaffold model_name se usará ese template.

Entonces, el patrón comun es

projecto/**/generators/path/to/specific_generator/templates/template.extension yo creo en mi directorio lib/templates/path/to/specific_generator/template.extension para sobre escribir estos templates.

como ejemplo extra, dejo las redefiniciones que hice para un projecto en el cual uso la gema haml-rails, para cambiar sus templates también lo que resulta aplicable para cualquier generador

de

haml-rails/lib/generators/haml/scaffold/templates:
    _form.html.haml edit.html.haml  index.html.haml new.html.haml   show.html.haml

a

lib/templates/haml/scaffold
 _form.html.haml edit.html.haml  index.html.haml new.html.haml   show.html.haml

finalmente dejo un ejemplo de como dejé el template para controllers generados por scaffold

 

<% module_namespacing do -%>
class <%= controller_class_name %>Controller < ApplicationController
  respond_to :html
  
  def index
    @<%= plural_table_name %> = <%= orm_class.all(class_name) %>
  end

  def show
    @<%= singular_table_name %> = <%= orm_class.find(class_name, "params[:id]") %>
  end

  def new
    @<%= singular_table_name %> = <%= orm_class.build(class_name) %>
  end

  def edit
    @<%= singular_table_name %> = <%= orm_class.find(class_name, "params[:id]") %>
  end

  def create
    @<%= singular_table_name %> = <%= orm_class.build(class_name, "params[:#{singular_table_name}]") %>
    if @<%= orm_instance.save %>
      redirect_to @<%= singular_table_name %>, <%= key_value :notice, "t('#{singular_table_name}.sucessfully_created')" %>
    else
      render <%= key_value :action, '"new"' %>
    end
  end

  def update
    @<%= singular_table_name %> = <%= orm_class.find(class_name, "params[:id]") %>
    if @<%= orm_instance.update_attributes("params[:#{singular_table_name}]") %>
      redirect_to @<%= singular_table_name %>, <%= key_value :notice, "t('#{singular_table_name}.sucessfully_updated')" %>
    else
      render <%= key_value :action, '"edit"' %>
    end
  end

  def destroy
    @<%= singular_table_name %> = <%= orm_class.find(class_name, "params[:id]") %>
    @<%= orm_instance.destroy %>
    redirect_to <%= index_helper %>_path, <%= key_value :notice, "t('#{singular_table_name}.sucessfully_destroyed')" %>
  end
end
<% end -%>

Filed under  //  generators   rails   templates  
Posted by Felipe Espinoza 

Gema Roja en vacaciones

¡Hola!

Me había equivocado, este post lo publiqué en mi blog personal y me acabo de dar cuenta…

Nos vamos de vacaciones hasta febrero, aprovecho de contarles que estamos en busca de colaboradores para el blog, si estás interesad@ envía un correo a info (at) janogonzalez.com

Posted by Jano González 

RubyConf Uruguay 2011

La RubyConf Uruguay 2011 ya es historia, ésta fue la última conferencia de la Gira Ruby Sur. Sólo queda esperar que la del próximo año sea tan buena como esta, con charlas tanto para principiantes como para los más expertos.

Acá puedes revisar los videos de las charlas y si quieres enterarte de todos los detalles del evento, el blog Picando Código ira haciendo una serie de posts durante los próximos días.

Aprovechando el post quiero expresar mi agradecimiento a los organizadores, a los charlistas y al público por el buen recibimiento. Además recibir las condolencias de todo el mundo porque tu selección de fútbol perdio 4-0 no tiene precio ;).

PD: Ahora que la época de conferencias está terminando, debería aumentar la frecuencia de los posts.

Filed under  //  conferencias  
Posted by Jano González 

Aprende Ruby con RubyMonk

Hace poco apareció una nueva página para aprender Ruby, llamada RubyMonk. Al día de hoy ya tiene 5 lecciones, con un estilo orientado a ejecutar código mientras aprendes, muy recomendable para quienes se están iniciando en este lenguaje.

Recuerda también que hace poco publicamos una mini guía para aprender Ruby y una primera lección de Ruby básico. ¡Hasta la próxima!

Filed under  //  aprendizaje  
Posted by Jano González 

Ruby 1.9.3 disponible

Ya está disponible Ruby 1.9.3-p0, entre las novedades de esta nueva versión tenemos:

  • Nueva licencia
  • require es mucho más rápido
  • Soporte para Unicode 6.0

Si usas RVM basta con hacer:

rvm get head
rvm reload
rvm install 1.9.3

Ver el anuncio oficial.

Filed under  //  releases  
Posted by Jano González 

Gana una entrada para StarTechConf cortesía de Engine Yard

La gente de Engine Yard amablemente cedió 2 entradas para la StartTechConf, que serán sorteadas por el Meetup de Lenguajes Dinámicos de Chile. Participar es muy sencillo:

  1. Debes seguir a @dynlangchile en Twitter
  2. Debes hacer RT del tweet del concurso
  3. Debes tener un poco suerte ;)

¡Nos vemos este 4 y 5 de noviembre en StarTechConf!

Filed under  //  comunidad   concursos   conferencias  
Posted by Jano González