Configuración de una aplicación Rails 4.2 tradicional

Actualmente existen dos enfoques para desarrollar una aplicación web, el tradicional, que es impulsado por frameworks como Rails y el de las JSON API + SPA.

En el enfoque tradicional tenemos todo nuestro código en una aplicación Rails. En ella toda la lógica de negocios está en los modelos, el cómo la operamos en los controladores y la interfaz de usuario en las vistas. Programamos las vistas con Slim, Ruby y Sass, usamos gemas como simple_form para crear fácilmente formularios en Ruby.

El enfoque JSON API + SPA, por otra parte, se cuenta con dos componentes: La aplicación servidor (API) y un cliente Javascript (o móvil) para la vista.

En principio, puede parecer atractiva la idea de hacer las vistas con Ruby y sus amigotes, pero la verdad es que no hay como trabajar en el ambiente natural del lenguaje donde se despliegan nuestras aplicaciones: usualmente Javascript.

En principio, también, puede parecer meh trabajar con HTML y amigos, sin embargo cuando descubres cosas como Grunt, Gulp, Yeoman, Bower, AngularJS y demás, —Y— lo que te permiten hacer en cuestión de organización de tu proceso de desarrollo, simplemente no puedes dar marcha atrás.

El desarrollo del cliente (UI) es en sí, un universo propio, y requiere de herramientas adecuadas para poderlo desarrollar de adecuadamente.

Ambos enfoques me agradan y he usado ambos en varios proyectos. Sin embargo, me siento más atraído hacia las JSON API + SPA debido a la clara separación entre front end y back end.

Preliminares

Commit inicial

Para generar el proyecto y hacer el primer commit:

rails new rails_app --database=postgresql
cd rails_app
git init
git add .
git commit -m "Commit inicial."

Configuración inicial

Agrega estas gemas a tu Gemfile:

group :development, :test do
  ...
  # Framework para pruebas
  gem 'minitest-rails'
  # Para generar objetos de prueba
  gem 'fabrication'
  # Para generar datos de prueba
  gem 'faker'
end
 
# Escribe las vistas en Slim en vez de HTML
gem 'slim-rails'
# Crea formularios de manera concisa
gem 'simple_form'

Después en la terminal:

bundle
rails g minitest:install
rails g simple_form:install

Modifica config/application.rb:

config.time_zone = 'Mexico City'
config.i18n.default_locale = 'es-MX'
 
config.generators do |g|
  g.test_framework :minitest, :spec => true, :fixture => false
end

Crea un usuario y una base de datos para esta aplicación, revisa ls guía: Cómo instalar PostgreSQL en Ubuntu

Configura el host, username y password en config/database.yml:

default: &default
  adapter: postgresql
  encoding: unicode
  host: localhost
  user: usuario_ejemplo
  password: xxx

Ejecuta en la terminal:

rake db:create

Descarga el archivo es-MX.yml y ponlo en: config/locales/es-MX.yml
Lista de localizaciones para Rails

Modifica config/initializers/inflections.rb:

ActiveSupport::Inflector.inflections(:en) do |inflect|
  inflect.clear
 
  inflect.plural(/$/, 's')
  inflect.plural(/([^aeéiou])$/i, '\1es')
  inflect.plural(/([aeiou]s)$/i, '\1')
  inflect.plural(/z$/i, 'ces')
  inflect.plural(/á([sn])$/i, 'a\1es')
  inflect.plural(/é([sn])$/i, 'e\1es')
  inflect.plural(/í([sn])$/i, 'i\1es')
  inflect.plural(/ó([sn])$/i, 'o\1es')
  inflect.plural(/ú([sn])$/i, 'u\1es')
 
  inflect.singular(/s$/, '')
  inflect.singular(/es$/, '')
 
  inflect.irregular('el', 'los')
end

Realiza el commit con los cambios en la configuración.

git add .
git ci -m "Configuración inicial."

¡Listo, a desarrollar! 😀

Recursos

Inflexiones en español para Rails
Configurar usuario y base de datos en PostgreSQL