我可以修改Ruby on Rails应用程序的DNS设置吗?

时间:2013-09-19 15:05:18

标签: ruby heroku ruby-on-rails-3.2 dns

我正在尝试通过我的Ruby on Rails应用程序与第三方服务集成,该应用程序的地址只能由某些DNS服务器解析。

有没有办法告诉我的应用程序哪个DNS服务器可以进行查找?一般的Ruby解决方案或Heroku特定的解决方案都可以。

2 个答案:

答案 0 :(得分:6)

找到一种方法来替换应用程序范围内的DNS解析程序。

使用以下内容创建config/initializers/dns.rb

class << Resolv

  def use_google_dns
    remove_const :DefaultResolver
    const_set :DefaultResolver, self.new(
      [Resolv::Hosts.new, Resolv::DNS.new(nameserver: ['8.8.8.8', '8.8.4.4'], search: ['mydns.com'], ndots: 1)]
    )
  end

end

Resolv.use_google_dns
require 'resolv-replace'

使用Ruby 2.0测试,但我相信它也适用于1.9。文件位置指令是特定于Rails的,但代码应该适用于任何Ruby项目。

答案 1 :(得分:2)

您不需要使用Resolv :: DefaultResolver.replace_resolvers取消定义常量:

Resolv::DefaultResolver.replace_resolvers([
  Resolv::Hosts.new, 
  Resolv::DNS.new(
    nameserver: ['8.8.8.8', '8.8.4.4'], 
    search: ['mydns.com'], 
    ndots: 1
  )
])

require 'resolv-replace'