martes, 20 de enero de 2015

welcome aboard

De siempre, me ha gustado la paginita que pone ruby on rails en “/”. Pero sucede que en producción esto no sale. Sería genial tener eso como página de root, sobre todo cuando no tenemos/queremos mostrar una página CMS que diga click aquí o click allá para tal cosa.

Resulta que esa vista está en railties y si adivinamos bien la ruta, la puedes renderizar en una vista que responde a “/”. Para eso, creamos el método “welcome” en el controlador genérico que está en controllers/application_controller.rb, A mi me quedó así:
“controllers/application_controller.rb”

class ApplicationController < ActionController::Base
  # Prevent CSRF attacks by raising an exception.
  # For APIs, you may want to use :null_session instead.
  protect_from_forgery with: :exception

  # agregamos el método "welcome"
  def welcome
     render File.join(Gem.path.first,"gems/railties-#{Rails.version}/lib/rails/templates/rails/welcome/index.html.erb")
  end

end
Je! No creerías que me iba bajar con una rutica escrita que debería cambiar con cada release de rails verdad? Vamo, que no somos programadores por gusto y si estoy con rails desde la versión 2; no fue comiendome los mocos. Dividido en sílaba: File.join conjuga la ruta de, Gem.path.first, osea el repo con las gemas. Ahí ha de estar gem/railties- seguido por la versión de rails; que porsupuesto, no hay que leer el árbol de directorios para deducirla.

Ahora el método welcome irá a buscar el welcome a board en railties. Solo falta declarar la ruta, pa que pinche en cualquier entorno.
“config/routes.rb”

   # el root clásico
   get '/' => "application#welcome"

   # las demás rutas aquí abajo

Bienvenido a bordo, estas sobre rieles!!!