Ruby on Rails
Distribuera en Rails-app på Heroku
Sök…
Distribuera din ansökan
Se till att du är i katalogen som innehåller din Rails-app och skapa sedan en app på Heroku.
$ heroku create example
Creating ⬢ example... done
https://example.herokuapp.com/ | https://git.heroku.com/example.git
Den första URL-adressen för ouput, http://example.herokuapp.com , är den plats appen är tillgänglig på. Den andra URL: en, [email protected]: example.git, är den externa git-lagringsadressen.
Detta kommando ska endast användas på ett initialiserat git-arkiv. Heroku create-kommandot lägger automatiskt till en git-fjärrkontroll som heter "heroku" som pekar på denna URL.
Appnamnsargumentet ("exempel") är valfritt. Om inget appnamn anges genereras ett slumpmässigt namn. Eftersom Heroku-appnamn finns i ett globalt namnutrymme kan du förvänta dig att vanliga namn, som "blogg" eller "wiki", redan kommer att tas. Det är ofta lättare att börja med ett standardnamn och byta namn på appen senare.
Därefter distribuerar du din kod:
$ 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
Om du använder databasen i din applikation måste du migrera databasen manuellt genom att köra:
$ heroku run rake db:migrate
Eventuella kommandon efter heroku run
kommer att utföras på en Heroku-dyno. Du kan få en interaktiv skal-session genom att köra:
$ heroku run bash
Se till att du har en dyno som kör webbprocesstypen:
$ heroku ps:scale web=1
Heroku ps-kommandot visar din applikations kördynos:
$ 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)
Du kan nu besöka appen i vår webbläsare med heroku open
.
$ heroku open
Heroku ger dig en standardwebadress i herokuapp.com
domänen. När du är redo att skala upp för produktion kan du lägga till din egen anpassade domän.
Hantera produktions- och iscensättningsmiljöer för en Heroku
Varje Heroku-app körs i minst två miljöer: på Heroku (vi kommer att kalla den produktionen) och på din lokala maskin (utveckling). Om mer än en person arbetar med appen har du flera utvecklingsmiljöer - vanligtvis en per maskin. Vanligtvis kommer varje utvecklare också att ha en testmiljö för körningstester. Tyvärr bryts detta tillvägagångssätt eftersom miljöerna blir mindre lika. Windows och Mac, till exempel, ger båda olika miljöer än Linux-stacken på Heroku, så du kan inte alltid vara säker på att kod som fungerar i din lokala utvecklingsmiljö fungerar på samma sätt när du distribuerar den till produktion.
Lösningen är att ha en iscensättningsmiljö som är så lik produktionen som möjligt. Detta kan uppnås genom att skapa en andra Heroku-applikation som är värd för din scenapplikation. Med iscensättning kan du kontrollera din kod i en produktionsliknande inställning innan den påverkar dina faktiska användare.
Börjar från början
Antag att du har en applikation som körs på din lokala maskin och att du är redo att driva den till Heroku. Vi måste skapa både avlägsna miljöer, iscensättning och produktion. För att komma in i vanan att trycka på scenen först, börjar vi med detta:
$ 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
Som standard skapar heroku CLI projekt med en heroku git-fjärrkontroll. Här specificerar vi ett annat namn med - fjärrflaggan, så att driva kod till Heroku och köra kommandon mot appen ser lite annorlunda ut än den normala 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
När din iscenesättningsapp har körts korrekt kan du skapa din produktionsapp:
$ 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
Och med det har du samma kodbas som två separata Heroku-appar - en iscensättning och en produktion, inställd identiskt. Kom bara ihåg att du måste ange vilken app du ska använda för ditt dagliga arbete. Du kan antingen använda flaggan '- avlägsna' eller använda din git-konfiguration för att ange en standardapp.