我正在尝试通过我的Ruby on Rails应用程序与第三方服务集成,该应用程序的地址只能由某些DNS服务器解析。
有没有办法告诉我的应用程序哪个DNS服务器可以进行查找?一般的Ruby解决方案或Heroku特定的解决方案都可以。
答案 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'