Интеграция Heroku и Github (как структурировать проект)

StackOverflow https://stackoverflow.com/questions/2454661

  •  20-09-2019
  •  | 
  •  

Вопрос

Я создаю веб-сервис и хочу сохранить исходный код на GitHub и запустить приложение на Heroku.Я пока не видел моего точного сценария нигде в сети, поэтому спрошу здесь:

Я хочу иметь следующую структуру каталогов:

/project
  .git
  README <-- project readme file
  TODO.otl <-- project outline
  ... <-- other project-related stuff
  /my_rails_app
     app
     config
     ...
     README <-- rails' readme file 

В приведенном выше проекте проект соответствует http://github.com/myuser/project, а my_rails_app — это код, который следует отправить в Heroku.Нужна ли мне отдельная ветка для приложения рельсов или мне не хватает более простого способа?

Я предполагаю, что мои файлы, не связанные с Rails, могут находиться в my_rails_app, но README Rails уже находится там, и кажется нецелесообразным перезаписывать его.Однако, если я оставлю это, моя страница github для приложения рельсов будет содержать файл readme для рельсов, что не имеет смысла.

Также ...Я попробовал просто настроить его, как описано выше, и запустить

git push heroku

из основной папки проекта.Конечно, героку не знает, что я хочу развернуть подпапку:

-----> Heroku receiving push
 !     Heroku push rejected, no Rails or Rack app detected.
Это было полезно?

Решение

Вот простое решение, которое может подойти вам, а может и не подойти.

  • Создайте два проекта на GitHub.Один проект должен представлять собой просто приложение Rails (т.все внутри каталога приложения Rails).Другой проект должен находиться за пределами каталога приложений Rails.

  • Добавьте проект приложения Rails как подмодуль git в проект «контейнер».

  • Теперь вы можете добавить Heroku в качестве удаленного приложения в репозиторий приложений Rails отдельно и отправить его в Heroku.Heroku примет запрос, потому что это просто приложение Rails с ожидаемыми каталогами и файлами.

Другие советы

Решение ситуации с Heroku (не файл README):

Если вы используете новый Хероку Кедр (Я считаю, что он был недоступен, когда вы впервые задали свой вопрос), затем ваши процессы (например, процесс сервера рельсов) запускаются с использованием мастер.Таким образом, вы можете разместить Procfile в корневом каталоге GitHub это выглядит так:

web:     my_rails_app/script/runserver.sh

А потом my_rails_app/script/runserver.sh может быть простой

#!/bin/sh

cd my_rails_app
bundle exec rails server -p $PORT

Локально вам также следует создать файл с именем .env (Обратите внимание .в начале), который содержит

PORT=3000

Этот файл читается бригадиром и используется для установки переменных среды, чтобы порт устанавливался при выполнении foreman start на вашем компьютере (из корневого каталога github, где находится Procfile).Сервер Heroku позаботится о файле .env на вашем динамометрическом стенде.Большим преимуществом является то, что таким образом вы можете настроить на динамометрическом стенде несколько процессов!

Просто перезапишите значение по умолчанию Rails README файл.Нет причин держать это при себе.Прочие материалы, связанные с управлением проектами, поместите в doc каталог.Хотя у вас, безусловно, есть веские причины для того, чтобы настроить его так, как вы это сделали, вы просто создаете себе головную боль, нарушая условности, и, вероятно, это того не стоит.

Я бы добавил все ниже /my_rails_app в git-репозиторий Heroku.Затем добавьте GitHub в качестве удаленного устройства и добавьте все, что находится под ним. /project в репозиторий GitHub.Затем вы можете отправить приложение Rails в Heroku (из /my_rails_app) и отправьте весь проект на GitHub (из /project).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top