====== 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 [[http://rack.github.io/|Rack]] * Una aplicación que usa [[http://bundler.io/|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 [[http://rack.rubyforge.org/doc/SPEC.html|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 [[http://bundler.io/v1.5/man/gemfile.5.html|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|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 [[http://uwsgi-docs.readthedocs.org/en/latest/|Uwsgi]] para ejecutar el código de su aplicación. [[http://httpd.apache.org/|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 [[https://www.gandi.net/hosting/simple/wishlist/|wishlist]].