Familia de instancia Ruby

Requisitos previos

Users of Ruby Simple Hosting instances should have:

  • Conocimiento de Ruby
  • conocimiento de git
  • Una aplicación compatible con Ruby (MRI) 1.9.3
  • Una aplicación compatible con Rack
  • Una aplicación que usa Bundler para gestionar sus dependencias
  • Lo siguiente de estar instalado localmente:
    • ruby
    • bundler
    • git

Nota: El uso de la instancia Ruby depende de herramientas estándares como bundler y git y deben ser instalados localmente .

Estructura de directorio

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

  • config.ru: Un archivo Rackup como el mencionado en documentación Rack
  • public/: Si tiene archivos estáticos deben estar en este directorio

Aplicaciones Ruby on Rails (rieles > 2 ) deberían funcionar sin manipulación.

Ejemplo de la estructura de archivos:

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

Instalación de dependencias

A fin de que las dependencias de la aplicación Ruby a ser instalados, debe declararlos en un Gemfile colocada en la raíz de su proyecto. This file must match the format indicated in the Bundler documentation.

Ejemplo Gemfile:

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

Note: Durante la instalación de dependencias, los gems especificados en los gupos development y test no se instalarán.

Gemfile.lock

Una vez que sus dependencias han sido declaradas, se debe generar un archivo Gemfile.lock ejecutando el comando bundle install. Este será el archivo usado para instalar las dependencias que se usarán en su instancia.

Bases de datos

Igual como las otras familias de instancias en Simple Hosting, instancias Ruby funciona con tres bases de datos three: MySQL, PostreSQL and MongoDB.

PostgreSQL

Parámetros:

  • Nombre de host: localhost
  • Puerto: 5432

Un ejemplo de Ruby on Rails configurado con una base de datos PostreSQL (config/database.yml):

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

MySQL

Parámetros:

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

Un ejemplo de Ruby on Rails configurado con una base de datos MySQL (config/database.yml):

production:
  adapter: mysql2
  database: ruby-example
  socket: /srv/run/mysqld/mysqld.sock
  username: tony
  password: micelli
  encoding: utf-8
  pool: 5

MongoDB

Parámetros:

  • Nombre de Host: localhost
  • Puerto: 27017

Un ejemplo de Ruby on Rails configurado con una base de datos MongoDB (mongoid.yml):

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

Empujando la aplicación a su instancia

La instancia Ruby utiliza Git para empujar su aplicación a su instancia y sea implementada.

Crear un repositorio git local

Primero, en el directorio raíz de su proyecto en su maquina local, debe ejecutar los comandos siguientes para iniciar un repo Git para grabar los cambios en el código:

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

Implementación de la aplicación

Se pueden ver los IDs de su instancia y data center, y el URL del git repo de la instancia en el panel de control de su instancia en su cuenta cuenta Gandi.

Una vez que su código es seguido por git localmente, se debe empujar a su instancia.

En el comando siguiente, se debe reemplazar INSTANCE_ID con el ID de su instancia, y DC_ID con el ID del datacenter donde recide su instancia (dc0 para Paris, dc1 para Baltimore, dc2 para Luxembourg):

$ git remote add gandi git+ssh://INSTANCE_ID@git.DC_ID.gpaas.net/default.git
$ git push gandi master

Luego, ejecute el comando de implementación:

$ ssh INSTANCE_ID@git.DC_ID.gpaas.net deploy

Para implementar una rama o tag en particular (una rama de production, por ejemplo), solo tiene que especificarlo como un segundo argumento:

$ ssh INSTANCE_ID@git.DC_ID.gpaas.net deploy production

Logs

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 la instancia :

  • via SSH: /srv/data/var/log/www/uwsgi.log
  • via SFTP: /lamp0/var/log/www/uwsgi.log

Esto es útil, sobre todo , para comprobar que su aplicación se ha iniciado correctamente.

Cron jobs

Al igual que otras familias de instancia Hosting simples , es posible ejecutar las tareas programadas ( cron jobs ) en instancias de Ruby. Las variables de entorno definidas por la aplicación también están disponibles en sus trabajos de cron (vea internal_design para más detalles sobre las variables de entorno).

Ejemplo de cron job:

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

Para mas información sobre cron jobs y Simple Hosting, vea http://wiki.gandi.net/en/simple/anacron.

Diseño interno

Instancias Ruby usan Uwsgi para ejecutar el código de su aplicación. Apache se usa para servir archivos estáticos. Los archivos en el directorio llamados “public/” en la raíz de su proyecto son servidos por Apache y retransmitirá las otras solicitudes a Uwsgi.

Las variables de entorno son asignados y disponibles en su aplicación y en los trabajos de cron:

  • RAILS_ENV=production
  • RACK_ENV=production

Información adicional

Actualmente Redis no es soportado en Simple Hosting. Si le gustaría ver Redis parte del show, déjenoslo saber en wishlist.

Última modificación: el 23/05/2014 a las 14:56 por Alexandre L. (Gandi)