Интеграция 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.
Ответы
Ответ 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
).