【问题标题】:Deploy a subdirectory to Heroku将子目录部署到 Heroku
【发布时间】:2010-06-21 01:42:53
【问题描述】:

我在 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?

【问题讨论】:

    标签: ruby-on-rails heroku


    【解决方案1】:

    这可以通过在你的根目录中放置一个 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
    

    【讨论】:

    • 亚当 - 感谢您的回复。我决定不将完整的 repo 部署到 heroku,因为我不想部署额外的目录,但这看起来是一个干净的解决方案。
    • Jamie - config.ru 技巧奏效了,直到需要迁移数据库,我无法弄清楚如何将我的应用程序放在子目录中并让数据库工作。你两个都做过了吗?当我将应用程序移回顶层时,它起作用了......
    • 我在 Rails 3.1.3 上,很遗憾这对我不起作用,除非我在此过程中犯了一个错误?
    • Heroku 不一定会为非标准位置更新 database.yml,因此您需要一个使用 DATABASE_URL 的位置。您可以运行 heroku 控制台并从根级应用程序打印出 database.yml,以查看 Heroku 是如何做到的。您还需要注意您的 Rakefile 在哪里以及从哪里加载。
    • 我试过了,但没用,最后我只是把我的 Rails 应用程序放到它自己的仓库中
    【解决方案2】:

    您如何看待在 /app/website 中创建本地 git 存储库并使用 Git Hooks 以便在您提交时,它也会提交您的网站代码?

    从我的角度来看,基本答案是您需要一个网站级别的 git 存储库,而不是父级别。那里的一切都取决于您的观点——您是否希望 /website 成为自己的存储库,其中 /app 使用 /website 的子模块? (这就是我要走的路)

    【讨论】:

    • Jesse,从进一步的研究看来,必须创建另一个 repo 是唯一的选择。您可以使用子模块加入存储库,但那有什么意义呢。如果你有一个使用 web hooks 选项的例子,那可能对很多人都有帮助。
    【解决方案3】:

    我最近在使用 AppGyver Supersonic 框架和 Heroku 应用程序的项目中遇到了同样的问题。

    我们的 Supersonic 应用程序存在于根目录中,因此让 Heroku 也存在于其中不是一个选择。最后,我们将 Heroku 应用程序移至名为 web/ 的子目录中。我们现在使用以下方式部署到 Heroku:

    git subtree push --prefix web heroku master
    

    【讨论】:

      猜你喜欢
      • 2014-12-06
      • 2018-07-15
      • 2014-12-02
      • 2013-09-23
      • 2022-01-06
      • 1970-01-01
      • 1970-01-01
      • 2014-06-29
      • 2016-01-11
      相关资源
      最近更新 更多