Ruby Links (I)

Una colección de enlaces interesantes con los que me he cruzado en los últimos días:

Novedades en Rails 4.2: config_for

Hasta ahora un patrón bastante común en aplicaciones Rails que necesitan de un fichero de configuración era encontrarse en el config/application.rb algo parecido a esto:

require "ostruct"
config_file = File.join("config/myapp.yml")
config = YAML.load(File.read(config_file))[Rails.env]
AppConfig = OpenStruct.new(config)

De esa manera podíamos usar el objeto AppConfig en toda la aplicación y así llevar a nuestros controladores o modelos algunas variables de configuración que debían cambiar dependiendo del entorno (host y puerto para Redis, número de segundos de delay que indicar a un worker Sidekiq en el perform_in, app id y secret de una API externa, etc).

Suele pasar en la comunidad Rails que conforme un patrón de este tipo empieza a ser muy usado acabe siendo adaptado e incorporado al propio framework. En este caso, en la versión 4.2 nos llega en la forma de config_for.

Supongamos que tenemos un fichero llamado config/redis.yml con el siguiente contenido:

development:
  host: localhost
  port: 6379
test:
  host: localhost
  port: 6379
production:
  host: my-production-redis-server
  port: 6379

Ahora podemos hacer la siguiente llamada en la aplicación:

> Rails.application.config_for(:redis)
=> {"host"=>"localhost", "port"=>6379}

El valor del hash en este ejemplo dependería del entorno en el que nos encontrásemos.

Podéis encontrar más información acerca de config_for en el propio pull request en el que se incorporó a Rails.

Nuevos aires (II)

Después de unos años con un gestor de contenidos propio, y tras un paso de unos pocos meses con Jekyll, esta web vuelve a estar gestionada por un WordPress.

De paso, he aprovechado para escoger un tema con soporte para distintos tipos de entradas, asegurarme una experiencia de lectura lo más cómoda posible, y unos tiempos de carga bajos tanto para móvil como para escritorio. Ahora toca centrarse en lo importante, en el contenido :)

Re-bienvenidos a luismayoral.com.