Zoeken…


Uw toepassing implementeren

Zorg ervoor dat u zich in de map bevindt die uw Rails-app bevat en maak vervolgens een app op Heroku.

$ heroku create example
Creating ⬢ example... done
https://example.herokuapp.com/ | https://git.heroku.com/example.git

De eerste URL van het resultaat, http://example.herokuapp.com , is de locatie waar de app beschikbaar is. De tweede URL, [email protected]: example.git, is de externe git-repository-URL.

Deze opdracht mag alleen worden gebruikt op een geïnitialiseerde git-repository. Het heroku create commando voegt automatisch een git remote toe genaamd "heroku" wijzend naar deze URL.

Het argument app-naam ("voorbeeld") is optioneel. Als er geen app-naam is opgegeven, wordt een willekeurige naam gegenereerd. Omdat de namen van de Heroku-app zich in een globale naamruimte bevinden, kunt u verwachten dat algemene namen, zoals 'blog' of 'wiki', al in gebruik zijn. Het is vaak eenvoudiger om met een standaardnaam te beginnen en de app later te hernoemen.

Implementeer vervolgens uw code:

$ 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

Als u de database in uw toepassing gebruikt, moet u de database handmatig migreren door het volgende uit te voeren:

$ heroku run rake db:migrate

Alle opdrachten na de heroku run worden uitgevoerd op een Heroku-dyno. U kunt een interactieve shell-sessie verkrijgen door het volgende uit te voeren:

$ heroku run bash

Zorg ervoor dat er één dyno is die het webprocestype uitvoert:

$ heroku ps:scale web=1

De opdracht Heroku ps geeft de actieve dynos van uw toepassing weer:

$ 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)

U kunt de app nu in onze browser bezoeken met heroku open .

$ heroku open

Heroku geeft u een standaardweb-URL in het herokuapp.com domein. Wanneer u klaar bent om op te schalen voor productie, kunt u uw eigen aangepaste domein toevoegen.

Beheer van productie- en staging-omgevingen voor een Heroku

Elke Heroku-app werkt in ten minste twee omgevingen: op Heroku (we noemen dat productie) en op uw lokale machine (ontwikkeling). Als er meer dan één persoon aan de app werkt, hebt u meerdere ontwikkelomgevingen - meestal één per machine. Gewoonlijk heeft elke ontwikkelaar ook een testomgeving voor het uitvoeren van tests. Helaas breekt deze aanpak af naarmate de omgevingen minder op elkaar lijken. Windows en Macs bieden bijvoorbeeld beide een andere omgeving dan de Linux-stack op Heroku, dus je kunt niet altijd zeker zijn dat code die werkt in je lokale ontwikkelomgeving op dezelfde manier werkt als je deze in productie implementeert.

De oplossing is om een staging-omgeving te hebben die zo veel mogelijk lijkt op de productie. Dit kan worden bereikt door een tweede Heroku-applicatie te maken die uw staging-applicatie host. Met enscenering kunt u uw code controleren in een productie-achtige omgeving voordat deze uw daadwerkelijke gebruikers beïnvloedt.

Beginnen bij het begin

Stel dat er een toepassing op uw lokale computer actief is en dat u deze naar Heroku wilt pushen. We moeten zowel externe omgevingen, enscenering als productie creëren. Om de gewoonte aan te nemen om eerst naar enscenering te gaan, beginnen we hiermee:

$ 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

Standaard maakt de heroku CLI projecten met een heroku git-afstandsbediening. Hier specificeren we een andere naam met de --remote vlag, dus het pushen van code naar Heroku en het uitvoeren van commando's tegen de app zien er een beetje anders uit dan de normale git push heroku master:

 $ git push staging master
...
 $ heroku ps --remote staging
=== web: `bundle exec puma -C config/puma.rb``
web.1: up for 21s

Zodra uw ensceneringsapp correct werkt, kunt u uw productie-app maken:

$ 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

En daarmee heb je dezelfde codebase als twee afzonderlijke Heroku-apps - een enscenering en een productie, identiek opgezet. Vergeet niet dat u moet opgeven welke app u voor uw dagelijkse werk gaat gebruiken. Je kunt de vlag '--remote' gebruiken of je git-configuratie gebruiken om een standaard-app op te geven.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow