2010-03-16 6 views
24

Я создаю веб-сервис, и я хочу сохранить источник на github и запустить приложение на heroku. Я не видел мой точный сценарий на имя в любом месте «сети до сих пор, поэтому я задам его здесь:Интеграция Heroku и Github (как структурировать проект)

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

/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 не знаю, что я хочу, чтобы развернуть вложенную:

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

ответ

18

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

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

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

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

+0

Это сработало, спасибо. – g33kz0r

0

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

+0

Вы в основном говорите, что создаете два репозитория, правильно? Один внутри другого? Хорошо, хотя. Однако я уже пробовал это, и он не работает :). Github - проблема: вместо отображения my_rails_app в качестве обычной папки с контролируемой версией она отображается как ссылка на ссылку git commit (в этом случае первые несколько символов идентификатора фиксации my_rails_app git repo). Таким образом, в основном это делает веб-просмотр github бесполезным для всех целей и задач. – g33kz0r

+0

Вам нужно будет иметь два РЕПО, потому что Героку требует своего. Я сделал это успешно с Heroku и GitHub, но не был вложен таким образом. Похоже, что справедливость может дать хороший ответ. –

4

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

6

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

Если вы используете новые Heroku Cedar (я считаю, что это не был доступен, когда вы впервые задавал Ваш вопрос), то ваши процессы (подобно rails server) запускается с использованием 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 именно так!

Смежные вопросы