Подтвердить что ты не робот

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

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

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

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

git push heroku

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

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

Ответ 1

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

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

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

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

Ответ 2

Решение для ситуации 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 таким образом!

Ответ 3

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

Ответ 4

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