【问题标题】:Rails3 & Git & Heroku - development/staging serverRails3 & Git & Heroku - 开发/登台服务器
【发布时间】:2011-12-14 10:37:43
【问题描述】:

我有一个 Rails 3 应用程序,我正在与一个使用 Git/Github 的团队一起开发并部署到 Heroku cedar 堆栈。我们的 Github 存储库有 2 个主要分支 Master 和 Development。

我想定期将我们的开发分支推送到 Heroku 上的不同服务器作为开发/暂存环境。

将我们的 Development 分支推送到与 Master 不同的应用程序而不会过多干扰我们的 Git 流程的最简单的方法是什么?

非常感谢!

【问题讨论】:

    标签: ruby-on-rails git heroku github


    【解决方案1】:

    您需要添加第二个 git 远程,即您的第二个应用程序的 heroku git repo url 到您的应用程序,以便能够从单个代码库推送到它。

    目前,您可能拥有名为“heroku”的默认远程源,它正在推送到您的生产应用程序。

    您需要添加第二个远程原点,指向您打算用于暂存的新 Heroku 应用,例如

    git remote add staging <git repo url from 'my apps' page on heroku>
    

    一旦你设置了新的 git origin,你就可以通过;

    git push staging <branch to deploy>:master
    

    【讨论】:

    • 好吧,我现在喜欢这条路线。我添加了第二个应用程序并将其推送到现场。现在我唯一的问题是,要非常小心,当我从命令行运行heroku &lt;anything&gt; 的东西时,我怎么知道我正在与哪个应用程序交谈?就像我想做heroku run rake db:seed 一样,它如何/为什么知道我正在与哪个应用程序交谈?非常感谢
    • 将它与命令一起显式传递,例如heroku run rake db:seed --app &lt;heroku app name&gt;。请注意,它是显示在 heroku 上“我的应用程序”中的应用程序名称,而不是远程源名称。
    • 这是我写的一篇关于这个主题的旧博文 - john.beynon.org.uk/…
    • 如果你不想每次都指定--app,你可以运行git config heroku.remote &lt;remote_name_here&gt;,之后,当你运行heroku命令时,heroku将使用你默认指定的任何远程没有-应用程序,直到您将其切换到其他遥控器。
    【解决方案2】:

    简单。 Heroku 总是使用 master 分支,但是使用 Git 将允许你将 /your/ development 分支推送到 /their/ master

    例如:

    git push heroku development:master
    

    heroku 是您的 heroku 开发环境的来源,development 是您的本地开发分支。如果您不希望您的 dev 分支在生产模式下运行,您可能还想覆盖 Heroku 上的 RACK_ENV var(尽管我个人会在您的代码中创建一个暂存环境,用于缓存等,但不发送电子邮件到生产地址等)

    【讨论】:

    • 您可以通过让您的 config/environments/production.rb 根据环境变量设置某些配置选项来完成类似的配置,然后为每个暂存/生产应用程序设置不同的 Heroku 配置变量。
    【解决方案3】:

    heroku_san 是一个 Gem,它允许在使用 Heroku 时进行复杂的部署配置,而无需在命令行上不断指定要推送到哪个 Heroku 应用程序。它可以让您完全按照上面的描述进行操作。

    【讨论】:

    • 我打算使用它,或者至少在不久的将来检查一下。它看起来很甜。谢谢。
    猜你喜欢
    • 2014-03-24
    • 1970-01-01
    • 2016-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-18
    • 2013-04-05
    相关资源
    最近更新 更多