【问题标题】:How do I add domains to Heroku app using Ruby code?如何使用 Ruby 代码将域添加到 Heroku 应用程序?
【发布时间】:2011-04-27 07:53:49
【问题描述】:

我正在创建一个允许用户使用自己的域的应用。我在我的 Rails 应用程序中使用什么方法来自动向 Heroku 注册他们选择的域?如果他们更改它,我也需要注销它。

【问题讨论】:

    标签: ruby-on-rails dns heroku


    【解决方案1】:

    heroku gem 现已被弃用。您应该改用heroku.rb gem。命令略有变化,但基本相同。

    require 'heroku-api'
    
    heroku = Heroku::API.new(:api_key => API_KEY)                           # use API Key
    heroku = Heroku::API.new(:username => USERNAME, :password => PASSWORD)  # use username and password
    heroku = Heroku::API.new(:headers => {'User-Agent' => 'custom'})        # use custom header
    
    
    heroku.delete_domain('app', 'example.com') # remove the 'example.com' domain from the 'app' app
    heroku.get_domains('app')                  # list configured domains for the 'app' app
    heroku.post_domain('app', 'example.com')   # add 'example.com' domain to the 'app' app
    

    【讨论】:

      【解决方案2】:

      我已经联系了 Heroku,他们只是将我指向 their api,并说可以这样使用它。

      恐怕没有。 Our API 仅由客户端的代码“记录”。

      您可能会发现我们的 google 小组也有助于从社区成员那里获得建议:http://groups.google.com/group/heroku/

      奥伦

      下面是简单的操作方法:

      require 'heroku'
      
      heroku = Heroku::Client.new('heroku_username', 'heroku_password')
      heroku.add_domain('heroku_app_name', 'example.com')
      heroku.remove_domain('heroku_app_name','example.com')
      

      请参阅the api 了解更多信息。

      当然,我建议不要将明文密码放入您的代码中。您可以做的一件好事是使用 heroku 环境变量从代码中获取密码。

      heroku = Heroku::Client.new(ENV['HEROKU_USER'], ENV['HEROKU_PASSWORD'])
      

      然后你可以在你的应用上设置环境变量

      $> heroku config:add HEROKU_USER='heroku_username'
      $> heroku config:add HEROKU_PASSWORD='heroku_password'
      

      从命令行。

      【讨论】:

        【解决方案3】:

        gem 来自 heroku,是推荐的方法。我刚刚就同样的问题联系了 Heroku,得到了回复:

        您还需要告诉 Heroku 域以及将其路由到何处。 CNAME 告诉 DNS 如何将请求发送到 Heroku。现在你必须告诉 Heroku 将它发送到哪个应用程序。您可以通过将域添加到您的应用程序来执行此操作。在您的情况下,您需要在您的应用程序中运行“heroku 域:添加 my.domain.com”。您也可以通过我们的 API 从应用程序内部以编程方式执行此操作。有关如何连接和使用 API 的示例,请参阅 Heroku gem (http://github.com/heroku/heroku)。

        【讨论】:

          【解决方案4】:

          您通常add domains in Heroku 的方式是通过Heroku gem 使用Heroku API。 您可以调用一个名为 heroku domains:add 的命令

          $ heroku domains:add example.com
          

          正如我之前所说,客户端调用 Heroku API。您可以从库中提取 Heroku 域 API 信息,并创建一个自定义脚本来调用 Heroku API 以在您的应用中添加和删除域。

          这是client source code

          注意。因为您是“逆向工程”和似乎没有记录的 API,所以您应该请求 Heroku 允许这样做,以确保您没有创建违反他们的 TOS 的东西。

          【讨论】:

          • 谢谢西蒙娜。那么没有记录在案的方法可以合法地做到这一点吗?
          • 老实说,我不相信这种方式是“非法的”,因为你没有反编译任何东西。顺便说一句,您应该联系 Heroku 以确保可以完成。
          • 不用担心,Heroku 支持使用 API,例如,他们提到使用它到 change your number of dynos in their docs。但是,API 将来可能会发生变化。
          • 使用 api 并不违法,heroku 的人对此很好。他们不宣传该 api,因为它尚未最终确定或没有详细记录
          猜你喜欢
          • 2012-05-03
          • 2013-09-22
          • 2013-11-23
          • 1970-01-01
          • 2015-10-29
          • 2023-03-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多