Suche…


Bereitstellung Ihrer Anwendung

Stellen Sie sicher, dass Sie sich in dem Verzeichnis befinden, in dem sich Ihre Rails-App befindet, und erstellen Sie dann eine App auf Heroku.

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

Die erste URL der Ausgabe, http://example.herokuapp.com , ist der Ort, an dem die App verfügbar ist. Die zweite URL, [email protected]: example.git, ist die Remote-git-Repository-URL.

Dieser Befehl sollte nur für ein initialisiertes git-Repository verwendet werden. Der Befehl heroku create fügt automatisch eine git-Fernbedienung namens "heroku" hinzu, die auf diese URL zeigt.

Das App-Namensargument ("Beispiel") ist optional. Wenn kein Anwendungsname angegeben wird, wird ein zufälliger Name generiert. Da sich die Heroku-App-Namen in einem globalen Namespace befinden, können Sie davon ausgehen, dass allgemeine Namen wie „Blog“ oder „Wiki“ bereits vergeben sind. Es ist oft einfacher, mit einem Standardnamen zu beginnen und die App später umzubenennen.

Stellen Sie als Nächstes Ihren Code bereit:

$ 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

Wenn Sie die Datenbank in Ihrer Anwendung verwenden, müssen Sie die Datenbank manuell migrieren, indem Sie Folgendes ausführen:

$ heroku run rake db:migrate

Alle Befehle nach dem heroku run werden auf einem Heroku-Dyno ausgeführt. Sie können eine interaktive Shell-Sitzung abrufen, indem Sie Folgendes ausführen:

$ heroku run bash

Stellen Sie sicher, dass Sie über einen Dyno den Webprozesstyp ausführen:

$ heroku ps:scale web=1

Der Befehl heroku ps listet die ausgeführten Dynamiken Ihrer Anwendung auf:

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

Sie können die App jetzt in unserem Browser mit heroku open .

$ heroku open

Heroku gibt Ihnen eine Standard-Web-URL in der Domäne herokuapp.com . Wenn Sie für die Produktion bereit sind, können Sie Ihre eigene benutzerdefinierte Domäne hinzufügen.

Produktions- und Inszenierungsumgebungen für ein Heroku verwalten

Jede Heroku-App kann in mindestens zwei Umgebungen ausgeführt werden: auf Heroku (wir nennen diese Produktion) und auf Ihrem lokalen Computer (Entwicklung). Wenn mehr als eine Person an der App arbeitet, gibt es mehrere Entwicklungsumgebungen - in der Regel eine pro Maschine. Normalerweise verfügt jeder Entwickler auch über eine Testumgebung für die Ausführung von Tests. Dieser Ansatz schlägt leider fehl, da die Umgebungen weniger ähnlich sind. Windows und Macs bieten beispielsweise unterschiedliche Umgebungen als der Linux-Stack von Heroku. Sie können also nicht immer sicher sein, dass in Ihrer lokalen Entwicklungsumgebung funktionierender Code auf die gleiche Weise funktioniert, wenn Sie ihn für die Produktion bereitstellen.

Die Lösung ist eine Staging-Umgebung, die der Produktion so ähnlich wie möglich ist. Dies kann erreicht werden, indem eine zweite Heroku-Anwendung erstellt wird, die Ihre Staging-Anwendung hostet. Mit Staging können Sie Ihren Code in einer produktionsähnlichen Einstellung überprüfen, bevor er sich auf Ihre tatsächlichen Benutzer auswirkt.

Von Anfang an anfangen

Angenommen, Sie haben eine Anwendung, die auf Ihrem lokalen Computer ausgeführt wird, und Sie sind bereit, sie auf Heroku zu übertragen. Wir müssen sowohl Remote-Umgebungen als auch Staging und Produktion erstellen. Um sich daran zu gewöhnen, zuerst auf die Inszenierung zu drängen, beginnen wir damit:

$ 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

Standardmäßig erstellt die Heroku-CLI Projekte mit einer Heroku-Fernbedienung. Hier geben wir einen anderen Namen mit der Flagge --remote an. Wenn Sie also Code in Heroku eingeben und Befehle gegen die App ausführen, sehen Sie etwas anders aus als der 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

Sobald Ihre Staging-App ordnungsgemäß läuft, können Sie Ihre Produktions-App erstellen:

$ 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

Und damit haben Sie die gleiche Codebase wie zwei separate Heroku-Apps - eine Inszenierung und eine Produktion, die identisch eingerichtet sind. Denken Sie daran, dass Sie angeben müssen, welche App Sie bei Ihrer täglichen Arbeit verwenden werden. Sie können entweder das Flag "--remote" oder Ihre git config verwenden, um eine Standard-App anzugeben.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow