2012-01-05 76 views
3

我有一个在git下的Rails项目。当推送到Heroku的应用程序的位置

结构是:

SomeProject 
    -Docs 
    -Src 
     -Rails 

Rails是导轨应用程序的根,但SomeProject是回购的根。

当我试着推到Heroku上我得到:

Heroku的推拒绝,没有雪松支持的应用程序检测

所以我的问题是:

  1. 会变成这样是因为repo的根目录和Rails应用程序的根目录是不同的?

  2. 如果是这样,有没有办法,我可以告诉那里的Heroku的Rails应用程序的根是什么?

  3. 如果不是什么会导致此问题?

+1

这是一个很好的问题。我当然从来没有见过这样做。你可以做一些假设,把config.ru放在基础中,并将src目录添加到加载路径中,但它总会期望/ public存在。我倾向于将应用程序拆分为自己的回购,并将其作为git子模块链接到/ Src/Rails。 – 2012-01-05 17:25:04

+0

有点像这个解决方案的更多: http://stackoverflow.com/questions/3081699/deploy-a-subdirectory-to-heroku – 2012-12-11 23:21:51

回答

3

这不是一个理想的情况,特别是对于heroku,但是普遍接受的解决方案非常简单。它会代表你的工作,但没有太坏。

  1. 创建两个存储库,一个用于rails应用程序,另一个用于“SomeProject”。

  2. 应用添加您的轨道作为子模块为“SomeProject。”您可以使用git submodule add [email protected]:user/rails_app/ rails之类的东西轻松添加它们。这会将rails应用程序作为子模块添加到项目中,所以它本质上就是它自己的存储库。查找更多信息here

  3. 添加的Heroku作为远程子模块,当你要部署的应用程序,从子模块推,而不是整个项目。

这并不像git push heroku master:'/rails'那么容易,但没有像这样的东西存在(但是,无论如何)。

希望这会有所帮助!

+0

尼斯的答案。谢谢。 – Undistraction 2012-01-05 17:32:01

1

最简单的解决方案是你的Rails应用程序拆分到自己的仓库,作为andrewpthorp建议。

另一种解决方案是将自己的buildpack编写在基于heroku/heroku-buildpack-ruyby的独立存储库中,但是可以自定义以支持备用项目布局,并使用它来部署应用程序。