Ruby on Rails
Despliegue de una aplicación Rails en Heroku
Buscar..
Desplegando su aplicación
Asegúrese de estar en el directorio que contiene su aplicación Rails, luego cree una aplicación en Heroku.
$ heroku create example
Creating ⬢ example... done
https://example.herokuapp.com/ | https://git.heroku.com/example.git
La primera URL de la salida, http://example.herokuapp.com , es la ubicación en la que está disponible la aplicación. La segunda URL, [email protected]: example.git, es la URL del repositorio git remoto.
Este comando solo debe usarse en un repositorio git inicializado. El comando heroku create agrega automáticamente un control remoto de git llamado "heroku" que apunta a esta URL.
El argumento del nombre de la aplicación ("ejemplo") es opcional. Si no se especifica ningún nombre de aplicación, se generará un nombre aleatorio. Dado que los nombres de las aplicaciones Heroku están en un espacio de nombres global, puede esperar que ya se tomen nombres comunes, como "blog" o "wiki". A menudo es más fácil comenzar con un nombre predeterminado y cambiar el nombre de la aplicación más tarde.
A continuación, despliegue su código:
$ git push heroku master
remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> Ruby app detected
remote: -----> Compiling Ruby/Rails
remote: -----> Using Ruby version: ruby-2.3.1
remote: -----> Installing dependencies using bundler 1.11.2
remote: Running: bundle install --without development:test --path vendor/bundle --binstubs vendor/bundle/bin -j4 --deployment
remote: Warning: the running version of Bundler is older than the version that created the lockfile. We suggest you upgrade to the latest version of Bundler by running `gem install bundler`.
remote: Fetching gem metadata from https://rubygems.org/..........
remote: Fetching version metadata from https://rubygems.org/...
remote: Fetching dependency metadata from https://rubygems.org/..
remote: Installing concurrent-ruby 1.0.2
remote: Installing i18n 0.7.0
remote: Installing rake 11.2.2
remote: Installing minitest 5.9.0
remote: Installing thread_safe 0.3.5
remote: Installing builder 3.2.2
remote: Installing mini_portile2 2.1.0
remote: Installing erubis 2.7.0
remote: Installing pkg-config 1.1.7
remote: Installing rack 2.0.1
remote: Installing nio4r 1.2.1 with native extensions
remote: Installing websocket-extensions 0.1.2
remote: Installing mime-types-data 3.2016.0521
remote: Installing arel 7.0.0
remote: Installing coffee-script-source 1.10.0
remote: Installing execjs 2.7.0
remote: Installing method_source 0.8.2
remote: Installing thor 0.19.1
remote: Installing multi_json 1.12.1
remote: Installing puma 3.4.0 with native extensions
remote: Installing pg 0.18.4 with native extensions
remote: Using bundler 1.11.2
remote: Installing sass 3.4.22
remote: Installing tilt 2.0.5
remote: Installing turbolinks-source 5.0.0
remote: Installing tzinfo 1.2.2
remote: Installing nokogiri 1.6.8 with native extensions
remote: Installing rack-test 0.6.3
remote: Installing sprockets 3.6.3
remote: Installing websocket-driver 0.6.4 with native extensions
remote: Installing mime-types 3.1
remote: Installing coffee-script 2.4.1
remote: Installing uglifier 3.0.0
remote: Installing turbolinks 5.0.0
remote: Installing activesupport 5.0.0
remote: Installing mail 2.6.4
remote: Installing globalid 0.3.6
remote: Installing activemodel 5.0.0
remote: Installing jbuilder 2.5.0
remote: Installing activejob 5.0.0
remote: Installing activerecord 5.0.0
remote: Installing loofah 2.0.3
remote: Installing rails-dom-testing 2.0.1
remote: Installing rails-html-sanitizer 1.0.3
remote: Installing actionview 5.0.0
remote: Installing actionpack 5.0.0
remote: Installing actionmailer 5.0.0
remote: Installing railties 5.0.0
remote: Installing actioncable 5.0.0
remote: Installing sprockets-rails 3.1.1
remote: Installing coffee-rails 4.2.1
remote: Installing jquery-rails 4.1.1
remote: Installing rails 5.0.0
remote: Installing sass-rails 5.0.5
remote: Bundle complete! 15 Gemfile dependencies, 54 gems now installed.
remote: Gems in the groups development and test were not installed.
remote: Bundled gems are installed into ./vendor/bundle.
remote: Bundle completed (31.86s)
remote: Cleaning up the bundler cache.
remote: Warning: the running version of Bundler is older than the version that created the lockfile. We suggest you upgrade to the latest version of Bundler by running `gem install bundler`.
remote: -----> Preparing app for Rails asset pipeline
remote: Running: rake assets:precompile
remote: I, [2016-07-08T17:08:57.046245 #1222] INFO -- : Writing /tmp/build_49ba6c877f5502cd4029406e981f90b4/public/assets/application-1bf5315c71171ad5f9cbef00193d56b7e45263ddc64caf676ce988cfbb6570bd.js
remote: I, [2016-07-08T17:08:57.046951 #1222] INFO -- : Writing /tmp/build_49ba6c877f5502cd4029406e981f90b4/public/assets/application-1bf5315c71171ad5f9cbef00193d56b7e45263ddc64caf676ce988cfbb6570bd.js.gz
remote: I, [2016-07-08T17:08:57.060208 #1222] INFO -- : Writing /tmp/build_49ba6c877f5502cd4029406e981f90b4/public/assets/application-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css
remote: I, [2016-07-08T17:08:57.060656 #1222] INFO -- : Writing /tmp/build_49ba6c877f5502cd4029406e981f90b4/public/assets/application-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css.gz
remote: Asset precompilation completed (4.06s)
remote: Cleaning assets
remote: Running: rake assets:clean
remote:
remote: ###### WARNING:
remote: No Procfile detected, using the default web server.
remote: We recommend explicitly declaring how to boot your server process via a Procfile.
remote: https://devcenter.heroku.com/articles/ruby-default-web-server
remote:
remote: -----> Discovering process types
remote: Procfile declares types -> (none)
remote: Default types for buildpack -> console, rake, web, worker
remote:
remote: -----> Compressing...
remote: Done: 29.2M
remote: -----> Launching...
remote: Released v5
remote: https://example.herokuapp.com/ deployed to Heroku
remote:
remote: Verifying deploy... done.
To https://git.heroku.com/example.git
* [new branch] master -> master
Si está utilizando la base de datos en su aplicación, necesita migrar manualmente la base de datos ejecutando:
$ heroku run rake db:migrate
Cualquier comando después de la heroku run
Heroku se ejecutará en un dino Heroku. Puede obtener una sesión de shell interactiva ejecutando:
$ heroku run bash
Asegúrese de tener un dinamómetro que ejecuta el tipo de proceso web:
$ heroku ps:scale web=1
El comando heroku ps enumera los días de ejecución de su aplicación:
$ heroku ps
=== web (Standard-1X): bin/rails server -p $PORT -e $RAILS_ENV (1)
web.1: starting 2016/07/08 12:09:06 -0500 (~ 2s ago)
Ahora puedes visitar la aplicación en nuestro navegador con heroku open
.
$ heroku open
Heroku te da una URL web predeterminada en el dominio herokuapp.com
. Cuando esté listo para escalar para la producción, puede agregar su propio dominio personalizado.
Gestión de entornos de producción y puesta en escena para un Heroku.
Cada aplicación Heroku se ejecuta en al menos dos entornos: en Heroku (llamaremos a esa producción) y en su máquina local (desarrollo). Si más de una persona está trabajando en la aplicación, entonces tiene múltiples entornos de desarrollo, uno por máquina, generalmente. Por lo general, cada desarrollador también tendrá un entorno de prueba para ejecutar pruebas. Desafortunadamente, este enfoque se rompe a medida que los entornos se vuelven menos similares. Windows y Mac, por ejemplo, proporcionan entornos diferentes a la pila de Linux en Heroku, por lo que no siempre puede estar seguro de que el código que funciona en su entorno de desarrollo local funcionará de la misma manera cuando lo implemente en producción.
La solución es tener un entorno de prueba que sea tan similar a la producción como sea posible. Esto se puede lograr creando una segunda aplicación de Heroku que aloja su aplicación de estadificación. Con la puesta en escena, puede verificar su código en una configuración similar a la producción antes de que afecte a sus usuarios reales.
Empezando desde cero
Suponga que tiene una aplicación ejecutándose en su máquina local y que está listo para enviarla a Heroku. Tendremos que crear tanto entornos remotos, puesta en escena y producción. Para adquirir el hábito de empujar a la puesta en escena primero, comenzaremos con esto:
$ heroku create --remote staging
Creating strong-river-216.... done
http://strong-river-216.heroku.com/ | https://git.heroku.com/strong-river-216.git
Git remote staging added
De forma predeterminada, la CLI de heroku crea proyectos con un control remoto de heroku git. Aquí, estamos especificando un nombre diferente con la marca --remote, por lo que presionar el código a Heroku y ejecutar los comandos contra la aplicación parece un poco diferente al git push heroku master normal:
$ git push staging master
...
$ heroku ps --remote staging
=== web: `bundle exec puma -C config/puma.rb``
web.1: up for 21s
Una vez que su aplicación de pruebas está funcionando correctamente, puede crear su aplicación de producción:
$ heroku create --remote production
Creating fierce-ice-327.... done
http://fierce-ice-327.heroku.com/ | https://git.heroku.com/fierce-ice-327.git
Git remote production added
$ git push production master
...
$ heroku ps --remote production
=== web: `bundle exec puma -C config/puma.rb
web.1: up for 16s
Y con eso, tiene el mismo código base que se ejecuta como dos aplicaciones Heroku separadas: una puesta en escena y una producción, configuradas de manera idéntica. Solo recuerde que tendrá que especificar qué aplicación va a operar en su trabajo diario. Puede usar la bandera '--remote' o usar git config para especificar una aplicación predeterminada.