我在GitHub中有一个“超级”存储库,它将包含我想要部署到Heroku的几个应用程序。这是我的存储库的一个例子。
/app
/.git
/website <-- would like to deploy this to Heroku
当我尝试使用以下命令推送时:
$ git push heroku master
我收到以下错误:
Heroku push rejected, no Rails or Rack app detected.
如何将子目录部署到Heroku?
答案 0 :(得分:22)
这可以通过在您的根目录中放置一个config.ru来告诉Heroku在哪里找到您的应用程序来实现。例如,使用Rails 3,在根目录中尝试这样的config.ru:
WEBSITE_SUBDIR = 'website'
require "#{WEBSITE_SUBDIR}/config/environment"
run YourApplicationName::Application
在Rails 2.x上,你需要这样的东西:
WEBSITE_SUBDIR = 'website'
require "#{WEBSITE_SUBDIR}/config/environment"
use Rails::Rack::LogTailer
use Rails::Rack::Static
run ActionController::Dispatcher.new
答案 1 :(得分:2)
您如何看待在/ app / website中创建本地git存储库并使用Git Hooks,以便在提交时,它还会提交您的网站代码?
从我的角度来看,基本答案是你需要一个网站级别的git存储库,而不是父级别。那里的一切都取决于你的观点 - 你是否使用/ website的子模块将/ website作为自己的存储库/ app? (这就是我的方式)
答案 2 :(得分:2)
我最近在使用AppGyver Supersonic框架和Heroku应用程序的项目上遇到了同样的问题。
我们的Supersonic应用程序生活在root中,因此也不能让Heroku在那里生活。最后,我们将Heroku应用程序移动到名为web/
的子目录中。我们现在使用:
git subtree push --prefix web heroku master