Hola que tal amigos de Devcodela en este video aprenderemos a desplegar nuestra aplicación Rails. Este paso es opcional pero si hacemos el despliegue temprano, nos permitirá detectar cualquier problema de implementación durante el ciclo de desarrollo. Para el deployment de nuestra aplicacion en Rails es muy muy fácil. Siempre y cuando nuestra aplicacion se encuentra dentro del control de versiones con Git. Por eso te invito a que veas el video anterior sobre Git y GutHub con Rails (http://www.youtube.com/watch?v=rOXhR2Q6ukc&feature=c4-overview&list=UUD_CzFZrcJcT2HR9CbdPLyA).
Heroku es una plataforma como servicio de computación en la Nube que fue desarrollado con el objetivo de soportar solamente el lenguaje de programación Ruby, pero posteriormente se ha ido extendiendo a distintos lenguajes de programación como Java, Node.js, Python, etc.
Heroku usa el Gestor de Base de Datos PostgreSQL, esot significa que debemos de añadir la gema pg en el entorno de produccion que permite a Rails hablar con Postgresql Tome en cuenta que tambien hemos agregado la gema rails_12factor, el cual es usado por Heroku para servir archivos estáticos tales cmoo imagenesy css.
Estos cambios lo hacemos en el Gemfile.rb
>>>
source 'https://rubygems.org'
ruby '2.0.0'
#ruby-gemset=railstutorial_rails_4_0
gem 'rails', '4.0.2'
group :development do
gem 'sqlite3', '1.3.8'
end
gem 'sass-rails', '4.0.1'
gem 'uglifier', '2.1.1'
gem 'coffee-rails', '4.0.1'
gem 'jquery-rails', '3.0.4'
gem 'turbolinks', '1.1.1'
gem 'jbuilder', '1.0.2'
group :doc do
gem 'sdoc', '0.3.20', require: false
end
group :production do
gem 'pg', '0.15.1'
gem 'rails_12factor', '0.0.2'
end
Después de haber agregado las gemas necesaris, las instalaremos ejecutando bundle :
>>>
$ bundle install --without production
Esta opcion impide la instalcion de las gemas de producción. En este caso las únicas gemas que hemos añadido se limitan a entornos de produccion. Este comando no instalà nada, pero es necesario actualizar el Gemfile.lock con pg y rails_12factor.
Para poder trabajar con Heroku es necesario registrarnos e el sitio oficial de Heroku https://www.heroku.com/, revisar nuestro email y completamos la creación de nuestra cuenta. Luego iniciamos sesión.
Luego debemos instalar el software necesario usando https://toolbelt.heroku.com/debian, Aqui elegimos la plataforma en nuestro caso como es LinuxMint seleccionamos Debian/Ubuntu. En nuestra línea de comandos correremos lo sgute:
>>>
wget -qO- https://toolbelt.heroku.com/install-ubuntu.sh | sh
Esto se encargará de instalar Heroku en nuestra PC.
Luego desde nuestra terminal nos ubicamos en la raíz de nuestro proyecto y comiteamos los últimos cambios,
>>>
$ git commit -a -m "Actualizar Gemfile.lock para Heroku"
$ git push
Username for 'https://github.com': Elicia
Password for 'https://[email protected]':
Counting objects: 19, done.
Compressing objects: 100% (14/14), done.
Writing objects: 100% (14/14), 175.50 KiB, done.
Total 14 (delta 6), reused 0 (delta 0)
To https://github.com/DevCodela/Curso-Rails
e4628c3..be8a7fd master -> master
Algunos necesitan precompilar archivos estáticos css, imágenes el cual se puede incluir de la siguiente manera:
>>>
$ rake assets:precompile
I, [2014-02-11T13:06:12.628637 #4342] INFO -- : Writing /home/elicia/proyectos_rails/miblog_demo/public/assets/application-1b1b3e4065e4eded33d33d3d.js
I, [2014-02-11T13:06:12.824637 #4342] INFO -- : Writing /home/elicia/proyectos_rails/miblog_demo/public/assets/application-1ed343d3ded3533ed3e3eet4.css
>>>
$ git add .
$ git commit -m "Agregando recursos precompilados para Heroku"
5 files changed, 10681 insertions(+) create mode 100644 public/assets/applications-1b1b3e4065e4eded33d33d3d.js create mode 100644 public/assets/applications-1b1b3e4065e4eded33d33d3d.js.gz create mode 100644 public/assets/applications-1ed343d3ded3533ed3e3eet4.css create mode 100644 public/assets/applications-1ed343d3ded3533ed3e3eet4.css.gz create mode 100644 public/assets/manifest-cdcasd3d45sc5sscs54sd4d5e2ee.json
Iniciamos sesión
>>>
$ heroku login
Enter your Heroku credentials.
Email: [email protected]
Password (typing will be hidden):
Authentication successful.
>>>
$ heroku create
Creating aqueous-earth-5910... done, stack is cedar
http://aqueous-earth-5910.herokuapp.com/ | [email protected]:aqueous-earth-5910.git
El comando heroku crea un nuevo subdominio solo para nuestra aplicacion.
Para desplegar la aplicación, el primer paso es usar Git para hacer push a Heroku.
>>>
$ git push heroku master
Initializing repository, done.
Counting objects: 101, done.
Compressing objects: 100% (93/93), done.
Writing objects: 100% (101/101), 20.56 KiB, done.
Total 101 (delta 4), reused 0 (delta 0)
-----> Ruby app detected
-----> Compiling Ruby/Rails
-----> Using Ruby version: ruby-2.0.0
-----> Installing dependencies using 1.5.2
Running: bundle install --without development:test --path vendor/bundle --binstubs vendor/bundle/bin -j4 --deployment
Using rake (10.1.1)
Using minitest (4.7.5)
Using multi_json (1.8.4)
Using i18n (0.6.9)
Using atomic (1.1.14)
Using tzinfo (0.3.38)
Using builder (3.1.4)
Using rack (1.5.2)
Using erubis (2.7.0)
Using polyglot (0.3.3)
Using activerecord-deprecated_finders (1.0.3)
Using mime-types (1.25.1)
Using arel (4.0.1)
Using coffee-script-source (1.6.3)
Using execjs (2.0.2)
Using thor (0.18.1)
Using json (1.8.1)
Using pg (0.15.1)
Using hike (1.2.3)
Using bundler (1.5.2)
Using rails_serve_static_assets (0.0.2)
Using tilt (1.4.1)
Using sass (3.2.13)
Using thread_safe (0.1.3)
Using treetop (1.4.15)
Using rack-test (0.6.2)
Using coffee-script (2.2.0)
Using rails_stdout_logging (0.0.3)
Using rdoc (3.12.2)
Using sprockets (2.10.1)
Using uglifier (2.1.1)
Using activesupport (4.0.2)
Using rails_12factor (0.0.2)
Using mail (2.5.4)
Using actionpack (4.0.2)
Using activemodel (4.0.2)
Using jbuilder (1.0.2)
Using sdoc (0.3.20)
Using activerecord (4.0.2)
Using actionmailer (4.0.2)
Using railties (4.0.2)
Using sprockets-rails (2.0.1)
Using coffee-rails (4.0.1)
Using rails (4.0.2)
Using jquery-rails (3.0.4)
Using sass-rails (4.0.1)
Using turbolinks (1.1.1)
Your bundle is complete!
Gems in the groups development and test were not installed.
It was installed into ./vendor/bundle
Bundle completed (0.71s)
Cleaning up the bundler cache.
-----> Writing config/database.yml to read from DATABASE_URL
Detected manifest file, assuming assets were compiled locally
-----> Discovering process types
Procfile declares types -> (none)
Default types for Ruby -> console, rake, web, worker
-----> Compressing... done, 20.9MB
-----> Launching... done, v7
http://aqueous-earth-5910.herokuapp.com deployed to Heroku
To [email protected]:aqueous-earth-5910.git
*[new branch] master -> master
Para obtener la Base de Datos de la aplicación a trabajar, tendriamos que migrar la Base de Datos a producción.
>>>
$ heroku run rake db:migrate
Running 'rake db:migrate' attached to terminal...up, run 9318
Migrating to CreateUsers (202312311102)
== CreateUsers: migrating ============================================
-- create_table(:users)
-> 0.0301 s
== CreateUsers: migrated (0.0233s) ===================================
Migrating to CreatePosts (202242319121) == CreatePosts: migrating ============================================ -- create_table(:posts)
-> 0.0205 s
== CreatePosts: migrated (0.0266s) ===================================
Ya hemos terminado, para ver el despliegue de nuestra aplicaciòn, visitamos la dirección anterior. Tambié podemos abrir el navegador automàticamente con:
>>>
$ heroku open
Opening aqueous-earth-5910... done
Desafortunadamente por razones tècnicas la pàgina de Rails por defecto no funciona con Heroku. El error desaparecerà cuando ingresamos a /users y agregamos un nuevo usuario para ver que funciona.
Tambien podemos cambiar el nombre del subodminio con
>>>
$ heroku rename miblogdemo
Renaming aqueous-earth-5910 to miblogdemo... done
http://miblogdemo.herokuapp.com/ | [email protected]:miblogdemo.git
Git remote heroku updated
>>>
$ heroku open
Opening miblogdemo... done
http://miblogdemo.herokuapp.com/
Esto sólo cambiarà el subdominio.
Eso fue todo por le video de hoy, espero q les haya gustado y no se olviden de seguirnos en nuestras redes sociales, envíennos sus comentarios, sugerencias y dudas que les responderemos en la brevedad posible. Hasta la proxima.