Primeros pasos con Ruby on Rails

Crear una aplicación de Ruby on Rails

Este ejemplo asume que Ruby y Ruby on Rails ya se han instalado correctamente. Si no, puedes encontrar cómo hacerlo aquí.

Abra una línea de comando o terminal. Para generar una nueva aplicación de rieles, use el comando rails new seguido del nombre de su aplicación:

$ rails new my_app

Si desea crear su aplicación Rails con una versión específica de Rails, puede especificarla en el momento de generar la aplicación. Para hacerlo, usa rails _version_ new seguido del nombre de la aplicación:

$ rails _4.2.0_ new my_app 

Esto creará una aplicación Rails llamada MyApp en un directorio my_app e instalará las dependencias de la gema que ya se mencionan en Gemfile usando bundle install.

Para cambiar al directorio de su aplicación recién creada, use el comando cd, que significa cambiar directorio.

$ cd my_app

El directorio my_app tiene una serie de archivos y carpetas generados automáticamente que conforman la estructura de una aplicación Rails. La siguiente es una lista de archivos y carpetas que se crean de forma predeterminada:

Archivo/Carpeta Propósito
aplicación/ Contiene los controladores, modelos, vistas, ayudantes, anuncios publicitarios y activos para su aplicación.
papelera/ Contiene el script Rails que inicia su aplicación y puede contener otros scripts que use para configurar, actualizar, implementar o ejecutar su aplicación.
configuración/ Configure las rutas, la base de datos y más de su aplicación.
config.ru Configuración de rack para servidores basados ​​en Rack utilizados para iniciar la aplicación.
base de datos/ Contiene su esquema de base de datos actual, así como las migraciones de base de datos.
Gemfile Gemfile.lock Estos archivos le permiten especificar qué dependencias de gemas se necesitan para su aplicación Rails. Estos archivos son utilizados por la gema Bundler.
libre/ Módulos extendidos para su aplicación.
registro/ Archivos de registro de la aplicación.
publico/ La única carpeta vista por el mundo tal cual. Contiene archivos estáticos y recursos compilados.
Archivo de rastrillo Este archivo localiza y carga tareas que se pueden ejecutar desde la línea de comandos. Las definiciones de tareas se definen a través de los componentes de Rails.
LÉAME.md Este es un breve manual de instrucciones para su aplicación. Debe editar este archivo para decirles a otros qué hace su aplicación, cómo configurarla, etc.
prueba/ Pruebas unitarias, accesorios y otros aparatos de prueba.
temperatura/ Archivos temporales (como archivos caché y pid).
vendedor/ Un lugar para todo el código de terceros. En una aplicación Rails típica, esto incluye gemas vendidas.

Ahora necesita crear una base de datos desde su archivo database.yml:

rake db:create
# OR
rails db:create
rake db:create

Ahora que hemos creado la base de datos, necesitamos ejecutar migraciones para configurar las tablas:

rake db:migrate
# OR
rails db:migrate
rake db:migrate

Para iniciar la aplicación, necesitamos encender el servidor:

$ rails server
# OR
$ rails s

De forma predeterminada, Rails iniciará la aplicación en el puerto 3000. Para iniciar la aplicación con un número de puerto diferente, debemos iniciar el servidor como,

$ rails s -p 3010

Si navega a http://localhost:3000 en su navegador, verá una página de bienvenida de Rails, que muestra que su aplicación ahora se está ejecutando.

Si arroja un error, puede haber varios problemas posibles:

  • Hay un problema con config/database.yml
  • Tiene dependencias en su Gemfile que no han sido instaladas.
  • Tienes migraciones pendientes. Ejecute rails db:migrar
  • En caso de que pase a la migración anterior rails db:rollback

Si eso todavía arroja un error, entonces debería verificar su config/database.yml

1: https://www.wikiod.com/es/ruby-on-rails/primeros-pasos-con-ruby-on-rails#Instalación de rieles 2: http://guides.rubyonrails.org/command_line.html#rails-new

Cree una nueva aplicación de Rails con la base de datos que elija e incluya la herramienta de prueba RSpec

Rails usa sqlite3 como la base de datos predeterminada, pero puede generar una nueva aplicación de Rails con la base de datos de su elección. Simplemente agregue la opción -d seguida del nombre de la base de datos.

$ rails new MyApp -T -d postgresql

Esta es una lista (no exhaustiva) de opciones de bases de datos disponibles:

  • mysql
  • oráculo
  • postgresql
  • sqlite3
  • base frontal -ibm_db
  • servidor SQL
  • jdbcmysql
  • jdbcsqlite3
  • jdbcpostgresql
  • jdbc

El comando -T indica que se salte la instalación de minitest. Para instalar un conjunto de pruebas alternativo como RSpec, edite el Gemfile y agregue

group :development, :test do
  gem 'rspec-rails', 
end

Luego ejecuta el siguiente comando desde la consola:

rails generate rspec:install

Generación de un controlador

Para generar un controlador (por ejemplo, Publicaciones), navegue hasta el directorio de su proyecto desde una línea de comando o terminal, y ejecute:

$ rails generate controller Posts

Puede acortar este código reemplazando generar con g, por ejemplo:

$ rails g controller Posts

Si abre la aplicación/controladores/posts_controller.rb recién generada, verá un controlador sin acciones:

class PostsController < ApplicationController
    # empty
end

Es posible crear métodos predeterminados para el controlador pasando argumentos de nombre de controlador.

$ rails g controller ControllerName method1 method2

Para crear un controlador dentro de un módulo, especifique el nombre del controlador como una ruta como módulo_principal/nombre_controlador. Por ejemplo:

$ rails generate controller CreditCards open debit credit close
# OR
$ rails g controller CreditCards open debit credit close

Esto generará los siguientes archivos:

Controller: app/controllers/credit_cards_controller.rb
Test:       test/controllers/credit_cards_controller_test.rb
Views:      app/views/credit_cards/debit.html.erb [...etc]
Helper:     app/helpers/credit_cards_helper.rb

Un controlador es simplemente una clase que se define para heredar de ApplicationController.

Es dentro de esta clase donde definirá los métodos que se convertirán en las acciones de este controlador.

Instalación de rieles

Instalación de rieles en Ubuntu

En un ubuntu limpio, la instalación de Rails debería ser sencilla

Actualización de paquetes de ubuntu

sudo apt-get update
sudo apt-get upgrade

Instalar las dependencias de Ruby y Rails

sudo apt-get install git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev python-software-properties libffi-dev

Instalando el administrador de versiones de Ruby. En este caso el fácil es usar rbenv

git clone https://github.com/rbenv/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc

Instalación de Ruby Build

git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc

Reiniciar shell

exec $SHELL

instalar rubí

rbenv install 2.3.1
rbenv global 2.3.1
rbenv rehash

Instalación de rieles

gem install rails

Instalación de rieles en Windows

Paso 1: Instalación de Ruby

Necesitamos el lenguaje de programación Ruby instalado. Podemos usar una versión precompilada de Ruby llamada RubyInstaller.

  • Descargue y ejecute Ruby Installer desde rubyinstaller.org.
  • Ejecutar el instalador. Marque “Agregar ejecutables de Ruby a su RUTA”, luego instálelo.
  • Para acceder a Ruby, vaya al menú de Windows, haga clic en Todos los programas, desplácese hacia abajo hasta Ruby y haga clic en “Iniciar símbolo del sistema con Ruby”. Se abrirá una terminal del símbolo del sistema. Si escribe ruby -v y presiona Enter, debería ver el número de versión de Ruby que instaló.

Paso 2: Kit de desarrollo Ruby

Después de instalar Ruby, podemos intentar instalar Rails. Pero algunas de las bibliotecas de las que depende Rails necesitan algunas herramientas de construcción para ser compiladas, y Windows carece de esas herramientas por defecto. Puede identificar esto si ve un error al intentar instalar Rails Gem::InstallError: La gema nativa '[nombre de la gema]' requiere herramientas de compilación instaladas. Para solucionar esto, necesitamos instalar el kit de desarrollo de Ruby.

  • Descarga el DevKit
  • Ejecutar el instalador.
  • Necesitamos especificar una carpeta donde vamos a instalar permanentemente el DevKit. Recomiendo instalarlo en la raíz de su disco duro, en C:\RubyDevKit. (No use espacios en el nombre del directorio).

Ahora necesitamos hacer que las herramientas DevKit estén disponibles para Ruby.

  • En el símbolo del sistema, cambie al directorio DevKit. cd C:\RubyDevKit o cualquier directorio en el que lo haya instalado.
  • Necesitamos ejecutar un script de Ruby para inicializar la configuración de DevKit. Escribe rubí dk.rb init. Ahora le diremos a ese mismo script que agregue el DevKit a nuestra instalación de Ruby. Escriba ruby dk.rb install.

El DevKit ahora debería estar disponible para que lo usen sus herramientas de Ruby al instalar nuevas bibliotecas.

Paso 3: Raíles

Ahora podemos instalar Rails. Rails viene como una gema Ruby. En su símbolo del sistema, escriba:

rieles de instalación de gemas

Una vez que presione Enter, el programa gem descargará e instalará esa versión de Rails gem, junto con todas las otras gemas de las que Rails depende.

Paso 4: Node.js

Algunas bibliotecas de las que depende Rails requieren la instalación de un tiempo de ejecución de JavaScript. Instalemos Node.js para que esas bibliotecas funcionen correctamente.

  • Descargue el instalador de Node.js desde aquí.
  • Cuando se complete la descarga, visite su carpeta de descargas y ejecute el instalador node-v4.4.7.pkg.
  • Lea el acuerdo de licencia completo, acepte los términos y haga clic en Siguiente en el resto del asistente, dejando todo en la forma predeterminada.
  • Es posible que aparezca una ventana que le pregunte si desea permitir que la aplicación realice cambios en su computadora. Haga clic en “Sí”.
  • Cuando se complete la instalación, deberá reiniciar su computadora para que Rails pueda acceder a Node.js.

Una vez que su computadora se reinicie, no olvide ir al menú de Windows, haga clic en “Todos los programas”, desplácese hacia abajo hasta Ruby y haga clic en “Iniciar símbolo del sistema con Ruby”.

Cree una nueva aplicación Rails con un adaptador de base de datos no estándar

Rails se envía por defecto con ActiveRecord, un ORM (Mapeo relacional de objetos) derivado del patrón con el mismo nombre.

Como ORM, está diseñado para manejar el mapeo relacional y, más precisamente, para manejar las solicitudes SQL por usted, de ahí la limitación a las bases de datos SQL únicamente.

Sin embargo, aún puede crear una aplicación de Rails con otro sistema de administración de base de datos:

  1. simplemente cree su aplicación sin registro activo
$ rails app new MyApp --skip-active-record
  1. agregue su propio sistema de administración de base de datos en Gemfile
gem 'mongoid', '~> 5.0'
  1. Instalación del paquete y siga los pasos de instalación desde la base de datos deseada.

En este ejemplo, ‘mongoid’ es un mapeo de objetos para ‘MongoDB’ y, como muchas otras gemas de base de datos creadas para rieles, también hereda de ‘ActiveModel’ de la misma manera que ‘ActiveRecord’, que proporciona una interfaz común para muchas características como como validaciones, callbacks, traducciones, etc.

Otros adaptadores de bases de datos incluyen, pero no se limitan a:

  • carpetas de datos
  • rieles de secuela

Creación de API de Rails en JSON

Este ejemplo asume que tiene experiencia en la creación de aplicaciones Rails.

Para crear una aplicación solo API en Rails 5, ejecute

rails new name-of-app --api

Agregue active_model_serializers en Gemfile

gem 'active_model_serializers'

instalar paquete en terminal

bundle install

Configure el adaptador ActiveModelSerializer para usar :json_api

# config/initializers/active_model_serializer.rb
ActiveModelSerializers.config.adapter = :json_api
Mime::Type.register "application/json", :json, %w( text/x-json application/jsonrequest application/vnd.api+json )

Genere un nuevo andamio para su recurso

rails generate scaffold Task name:string description:text

Esto generará los siguientes archivos:

Controlador: aplicación/controladores/tasks_controller.rb

Test:       test/models/task_test.rb
            test/controllers/tasks_controller_test.rb
Routes:     resources :tasks added in routes.rb
Migration:  db/migrate/_create_tasks.rb
Model:      app/models/task.rb
Serializer: app/serializers/task_serializer.rb
Controller: app/controllers/tasks_controller.rb

Generar un recurso con Scaffolds

De guides.rubyonrails.org:

En lugar de generar un modelo directamente. . . vamos a montar un andamio. Un andamio en Rails es un conjunto completo de modelo, migración de base de datos para ese modelo, controlador para manipularlo, vistas para ver y manipular los datos y un conjunto de pruebas para cada uno de los anteriores.

Aquí hay un ejemplo de andamiaje de un recurso llamado Tarea con un nombre de cadena y una descripción de texto:

rails generate scaffold Task name:string description:text

Esto generará los siguientes archivos:

Controller: app/controllers/tasks_controller.rb
Test:       test/models/task_test.rb
            test/controllers/tasks_controller_test.rb
Routes:     resources :tasks added in routes.rb
Views:      app/views/tasks
            app/views/tasks/index.html.erb
            app/views/tasks/edit.html.erb
            app/views/tasks/show.html.erb
            app/views/tasks/new.html.erb
            app/views/tasks/_form.html.erb
Helper:     app/helpers/tasks_helper.rb
JS:         app/assets/javascripts/tasks.coffee 
CSS:        app/assets/stylesheets/tasks.scss
            app/assets/stylesheets/scaffolds.scss

ejemplo para eliminar archivos generados por scaffold para el recurso llamado Tarea

rails destroy scaffold Task