Интеграция Heroku и Github (как структурировать проект) - PullRequest
24 голосов
/ 16 марта 2010

Я создаю веб-сервис и хочу сохранить исходный код на 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 уже существует, и кажется, что перезаписать это непоследовательно. Однако, если я оставлю это, моя страница github для приложения rails будет содержать readme для rails, что не имеет смысла.

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

git push heroku

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

-----> Heroku receiving push
 !     Heroku push rejected, no Rails or Rack app detected.

Ответы [ 4 ]

18 голосов
/ 16 марта 2010

Вот простое решение, которое может или не может работать для вас.

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

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

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

6 голосов
/ 16 сентября 2011

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

Если вы используете новый Heroku Cedar (я полагаю, он не был доступен, когда вы впервые задали свой вопрос), тогда ваши процессы (например, процесс сервера rails) запускаются с использованием Foreman . Таким образом, вы можете поместить 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 на вашем dyno. Большим преимуществом является то, что вы можете настроить несколько процессов на dyno таким образом!

4 голосов
/ 12 апреля 2011

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

0 голосов
/ 16 марта 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...