Ruby

La instancia Simple Hosting con Ruby permite publicar aplicaciones web escritas en Ruby de forma fácil y económica.

Prerrequisitos

Los usuarios de Simple Hosting con Ruby deben tener:

  • algunos conocimientos del lenguage de programación Ruby
  • algunos conocimientos de git
  • una aplicación compatible con Ruby (MRI) 2.4
  • una aplicación compatible con Rack.
  • una aplicación que utiliza Bundler para gestionar dependencias

Las siguientes herramientas también deben instalarse localmente en su computadora:

  • ruby
  • bundler
  • git
  • Cliente SSH

Estructura de directorios

Para ser compatible con Rack, los archivos de su aplicación deben cumplir con un diseño específico, que contenga los siguientes directorios y archivos:

  • config.ru: Un archivo Rackup como el especificado en la documentación de Rack.
  • public/: Si tiene algúnos documentos estáticos, debe colocarlos en este directorio

Las aplicaciones de Ruby on Rails (rails >2) deben funcionar de forma inmediata.

Ejemplo de estructura de archivos:

.
├── config.ru
└── public
    └── robots.txt

Instalación de dependencias

Para poder instalar las dependencias de su aplicación Ruby, debe declararlas en un archivo Gemfile situado en la raíz de su proyecto. Este archivo debe coincidir con el formato indicado en la documentación de Bundler.

Ejemplo de Gemfile:

source 'https://rubygems.org'
gem 'rails', '~> 4.0.0'
gem 'debugger', group: :development

Nota

Durante la instalación de las dependencias, las gemas especificadas en los grupos development y test no serán instaladas.

instalación de bundle

Una vez declaradas sus dependencias, debe generar un archivo Gemfile.lock ejecutando el comando bundle install en su computadora.

Este es el archivo que se utilizará para instalar las dependencias en su instancia. Por lo tanto, debe ser incluido en su árbol git y empujado junto con su aplicación.

Dominios

Un nombre de dominio se vincula automáticamente a su instancia en el momento de la creación con fines de prueba. Puede vincular varios dominios y subdominios adicionales a su instancia. Todos utilizarán la misma base de código de la aplicación.

Si desea que diferentes dominios enruten a diferentes aplicaciones Ruby en una única instancia de Simple Hosting, deberá configurar el enrutamiento usted mismo en el archivo config.ru.

Un ejemplo sencillo:

map 'http://www.example.com/' do
     run Proc.new { |env|
        [200, {'Content-Type' => 'text/html; charset="utf-8"'},
             ['<!DOCTYPE html><html><meta charset="utf-8"><title>funciona',
             "</title><b>Funciona!</b><br /><br />Ha llegado a ",
             'www.example.com'
            ]
        ]
     }
end

map 'http://www.another-example.com/' do
     run Proc.new { |env|
        [200, {'Content-Type' => 'text/html; charset="utf-8"'},
             ['<!DOCTYPE html><html><meta charset="utf-8"><title>funciona',
             "</title><b>Funciona!</b><br /><br />Ha llegado a ",
             'www.another-example.com'
            ]
        ]
     }
end

Bases de datos

Al igual que las otras familias de instancias de Simple Hosting, las instancias de Ruby son compatibles con tres tipos de bases de datos: MySQL, PostgreSQL y MongoDB.

PostgreSQL

PostgreSQL versión 9.6 está disponible para Simple Hosting con Ruby.

Ajustes de conexión:

Hostname: localhost
Port: 5432

Por defecto, puede usar el usuario hosting-db sin contraseña para conectarse a la base de datos por defecto, llamada postgres. Le recomendamos que cree credenciales seguras para su uso real.

Puede crear tantas bases de datos y usuarios de bases de datos como necesite; sólo está limitado por su espacio en disco, el cual puede aumentar en cualquier momento hasta 1 TB.

Puede administrar su base de datos PostgreSQL con los comandos estándar de shell a través de la consola SSH (psql, pg_dump, etc.), o desde el panel de administración Web con phpPgAdmin. Consulte el artículo de referencia sobre la administración de PostgreSQL en Simple Hosting para obtener más información.

A continuación se muestra un ejemplo de configuración config/database.yml para Ruby on Rails que utiliza la base de datos por defecto.

production:
  adapter: postgresql
  database: ruby-example
  host: localhost
  port: 5432
  username: hosting-db
  password:
  encoding: unicode
  pool: 5

MySQL

MySQL 5.7 está disponible para usar con instancias de Ruby en Simple Hosting.

Ajustes de conexión:

Socket: /srv/run/mysqld/mysqld.sock

Puede conectarse al servicio de base de datos MySQL a través de su socket Unix, disponible en /srv/run/mysqld/mysqld.sock. El usuario por defecto es root y no se requiere ninguna contraseña por defecto. Sin embargo, debe crear credenciales seguras para su uso real. También puede utilizar la base de datos default_db para realizar configuraciones rápidas y pruebas, ya que se configura automáticamente cuando se crea la instancia.

Puede crear tantas bases de datos y usuarios de bases de datos como necesite; sólo está limitado por su espacio en disco, el cual puede aumentar en cualquier momento hasta 1 TB.

Puede administrar su base de datos MySQL con las herramientas estándar de shell (mysql, mysqldump, etc.) a través de la consola SSH, o desde la consola de administración web con PHPMyAdmin. Consulte el artículo de referencia sobre la administración de MySQL en Simple Hosting para obtener más información.

A continuación se muestra un ejemplo config/database.yml para Ruby on Rails con una base de datos MySQL:

production:
  adapter: mysql2
  socket: /srv/run/mysqld/mysqld.sock
  database: default_db
  username: root
  password:
  encoding: utf-8
  pool: 5

MongoDB

MongoDB 3.2 es la versión disponible actualmente para las instancias de Ruby en Simple Hosting.

Ajustes de conexión:

Hostname: localhost
Port: 27017

El servicio de base de datos MongoDB está disponible en localhost en el puerto 27017. No se requiere ningún usuario ni contraseña de forma predeterminada, pero debe crear credenciales seguras para su uso en el mundo real.

Puede crear tantos usuarios y bases de datos como necesite; sólo está limitado por su espacio en disco, el cual puede aumentar en cualquier momento hasta 1 TB.

Puede administrar su base de datos MongoDB desde el shell estándar de mongo a través de la consola SSH, o desde el panel de administración Web con Adminer. Consulte el artículo de referencia sobre la gestión de MongoDB en Simple Hosting para obtener más información.

A continuación se muestra un ejemplo de configuración del archivo mongoid.yml para la gema Mongoid:

production:
  sessions:
    default:
      database: ruby-example
      hosts:
        - localhost:27017

Empujando su aplicación a su instancia

Debe usar git para empujar su aplicación a su instancia y para desplegarla. Siga las instrucciones a continuación para obtener más información.

Crear un repositorio local de git

Primero, en el directorio raíz de su proyecto en su computadora local, ejecute los siguientes comandos para inicializar un repositorio Git para rastrear los cambios de su código:

$ git init
$ git add .
$ git commit -m "Initial commit"

Nota

Recuerde que su árbol git debe incluir al menos un archivo config.ru para arrancar su aplicación. También debería rastrear los archivos Gemfile y Gemfile.lock si desea instalar dependencias.

Implementación de su aplicación

Nota

Las siguientes instrucciones están disponibles en la página Cargar (Deploy) de la página de administración de instancias. Ahí también encontrará el valor de la variable $GIT_URL utilizada en los siguientes ejemplos.

Una vez que su código es rastreado por git localmente, usted puede empujar y desplegar a su instancia.

$ git remote add gandi $GIT_URL
$ git push gandi master
$ ssh $GIT_URL deploy default.git

Para desplegar una rama o etiqueta en particular (una rama de producción, por ejemplo), simplemente especifíquela como segundo argumento:

$ git push gandi production
$ ssh $GIT_URL deploy default.git production

Registros y resolución de problemas

La salida estándar (stdout) así como los errores relacionados con la ejecución de la aplicación se almacenan en los siguientes archivos de registro en el disco de datos de su instancia:

  • vía SSH: /srv/data/var/log/www/uwsgi.log
  • vía SFTP: /lamp0/var/log/www/uwsgi.log

Esto es útil, por ejemplo, para verificar que la aplicación se ha iniciado correctamente.

Trabajos de Cron (Cron jobs)

Al igual que otras familias de instancias de Simple Hosting, es posible ejecutar tareas programadas (cron jobs) en instancias de Ruby. Las variables de entorno definidas por su aplicación también están disponibles en sus trabajos de cron (ver `diseño_interno`_ para más detalles sobre las variables de entorno).

Ejemplo de trabajo de cron:

1@hourly 0 test (cd /srv/data/web/vhosts/default; rake my_namespace:alguna_tarea_util)

Para obtener más información sobre las tareas de cron y Simple Hosting, consulte la documentación de Anacron.

Diseño interno

Las instancias de Ruby usan Uwsgi para ejecutar el código de su aplicación. Apache se utiliza para servir archivos estáticos. Apache servirá los archivos que existen en un directorio llamado public/ en la raíz de su proyecto y transmitirá todas las demás peticiones a Uwsgi.

Las siguientes variables de entorno están asignadas y disponibles en su aplicación y en tareas de cron:

  • RAILS_ENV=production
  • RACK_ENV=production