【问题标题】:Heroku rails deployment sharing add-ons between appsHeroku rails 在应用程序之间部署共享插件
【发布时间】:2011-09-20 03:35:44
【问题描述】:

Heroku 附加组件是特定于应用程序的,还是可以在多个应用程序之间共享(如果有的话)?

换句话说,如果我的帐户中有 5 个单独的应用程序,并且我想要每月 200 美元的 Ronin Postgre DB 插件和每月 20 美元的 WebSolr Silver,那么我的所有 5 个应用程序都可以以每人 220 美元的价格访问它们吗?月?或者您是否需要为每个单独的应用单独添加插件?

【问题讨论】:

    标签: heroku


    【解决方案1】:

    是的,您可以在应用程序之间共享数据库实例 - 事实上,您甚至不需要使用 Ronin 插件,您可以使用包含的 PG 来完成 - 请参阅this 线程,我提出了一个解决方案通过在第二个应用程序中使用与第一个应用程序相同的 DB url。

    当您添加插件时,heroku 通常会为您的应用程序编写一堆 heroku 配置变量,然后他们会在他们编写的文件中使用这些变量 - 例如 database.yml - 实际的 database.yml 文件 heroku 写入您的应用程序是:

    <%
    
    require 'cgi'
    require 'uri'
    
    begin
      uri = URI.parse(ENV["DATABASE_URL"])
    rescue URI::InvalidURIError
      raise "Invalid DATABASE_URL"
    end
    
    raise "No RACK_ENV or RAILS_ENV found" unless ENV["RAILS_ENV"] || ENV["RACK_ENV"]
    
    def attribute(name, value)
      value ? "#{name}: #{value}" : ""
    end
    
    adapter = uri.scheme
    adapter = "postgresql" if adapter == "postgres"
    
    database = (uri.path || "").split("/")[1]
    
    username = uri.user
    password = uri.password
    
    host = uri.host
    port = uri.port
    
    params = CGI.parse(uri.query || "")
    
    %>
    
    <%= ENV["RAILS_ENV"] || ENV["RACK_ENV"] %>:
      <%= attribute "adapter",  adapter %>
      <%= attribute "database", database %>
      <%= attribute "username", username %>
      <%= attribute "password", password %>
      <%= attribute "host",     host %>
      <%= attribute "port",     port %>
    
    <% params.each do |key, value| %>
      <%= key %>: <%= value.first %>
    <% end %>
    

    如果您将 websolr 添加到单个实例,然后查看设置了哪些配置变量并在其他应用程序中设置相同,我想同样的事情也将成为可能。我也想这不是 Heroku 支持的,但是他们会积极阻止你这样做。

    【讨论】:

    • 感谢分享数据库的信息。我继续联系 Heroku,并被告知通常大多数附加组件都是特定于应用程序的,但可以共享数据库,尽管不是 WebSolr 附加组件。正如你所提到的,可能有办法,但他们可能不希望那样。
    猜你喜欢
    • 2012-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-04
    • 2011-03-13
    相关资源
    最近更新 更多