Поиск…


Развертывание приложения

Убедитесь, что вы находитесь в каталоге, который содержит ваше приложение Rails, а затем создайте приложение на Heroku.

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

Первый URL-адрес выхода, http://example.herokuapp.com , - это местоположение, в котором доступно приложение. Второй URL-адрес, [email protected]: example.git, является удаленным URL-адресом репозитория git.

Эта команда должна использоваться только в инициализированном репозитории git. Команда create heroku автоматически добавляет git remote с именем «heroku», указывающий на этот URL.

Аргумент имени приложения («пример») является необязательным. Если имя приложения не указано, будет создано случайное имя. Поскольку имена приложений Heroku находятся в глобальном пространстве имен, вы можете ожидать, что общие имена, такие как «блог» или «вики», уже будут приняты. Часто проще начать с имени по умолчанию и позже переименовать приложение.

Затем разверните свой код:

$ 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

Если вы используете базу данных в своем приложении, вам необходимо вручную выполнить миграцию базы данных, выполнив:

$ heroku run rake db:migrate

Любые команды после heroku run будут исполняться на heroku run Heroku. Вы можете получить интерактивный сеанс оболочки, выполнив:

$ heroku run bash

Убедитесь, что у вас есть один динамический тип веб-процесса:

$ heroku ps:scale web=1

Команда heroku ps перечисляет текущие динамики вашего приложения:

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

Теперь вы можете посетить приложение в нашем браузере с heroku open .

$ heroku open

Heroku предоставляет веб-URL по умолчанию в домене herokuapp.com . Когда вы будете готовы к расширению для производства, вы можете добавить свой собственный домен.

Управление производственными и промежуточными средами для Heroku

Каждое приложение Heroku работает как минимум в двух средах: на Heroku (мы будем называть это производство) и на вашей локальной машине (разработка). Если в приложении работает более одного человека, у вас есть несколько сред разработки - по одному на машину. Обычно у каждого разработчика также есть тестовая среда для запуска тестов. К сожалению, этот подход разрушается, поскольку среда становится менее похожей. Например, Windows и Mac предоставляют различные среды, чем стек Linux на Heroku, поэтому вы не всегда можете быть уверены, что код, который работает в вашей локальной среде разработки, будет работать одинаково, когда вы развертываете его на производство.

Решение состоит в том, чтобы иметь промежуточную среду, которая настолько же похожа на производство, насколько это возможно. Этого можно достичь, создав второе приложение Heroku, на котором размещено ваше промежуточное приложение. С помощью этапа вы можете проверить свой код в настройке, подобной произведению, прежде чем он повлияет на ваших реальных пользователей.

Начиная с нуля

Предположим, у вас есть приложение, запущенное на вашем локальном компьютере, и вы готовы нажать его на Heroku. Нам нужно создать как удаленные среды, так и постановку. Чтобы привыкнуть к тому, чтобы сначала продвигаться вперед, мы начнем с этого:

$ 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

По умолчанию CLI героя создает проекты с удаленным героем git. Здесь мы указываем другое имя с флагом -remote, поэтому нажатие кода на Heroku и запуск команд против приложения выглядят немного иначе, чем обычный 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

После того, как ваше промежуточное приложение работает правильно, вы можете создать свое производственное приложение:

$ 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

И с этим у вас есть тот же код, который работает как два отдельных приложения Heroku - одна постановка и одна постановка, настроенная одинаково. Просто помните, что вам нужно будет указать, какое приложение будет работать на вашей повседневной работе. Вы можете использовать флаг '--remote' или использовать конфигурацию git для указания приложения по умолчанию.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow