我有一堆使用外部数据库的 rspec 测试(我知道,这不是一个好主意,但有很多原因,这是这种情况下的最佳解决方案)。我已经设置了一个带有测试环境的不同 vlan,以便在隔离环境中运行测试。现在我想定义所有 rspec 测试都使用不同的 DNS 服务器来解析主机名(以与开发环境一起工作)。有什么我可以使用的吗?
最佳答案
RubyDNS 可能适合您。这个例子几乎是从他们的 GH 页面上逐字记录的:
#!/usr/bin/env ruby
require 'rubydns'
INTERFACES = [
[:udp, "0.0.0.0", 5300],
[:tcp, "0.0.0.0", 5300]
]
Name = Resolv::DNS::Name
IN = Resolv::DNS::Resource::IN
# Use upstream DNS for name resolution.
UPSTREAM = RubyDNS::Resolver.new([[:udp, "8.8.8.8", 53], [:tcp, "8.8.8.8", 53]])
# start the RubyDNS server
RubyDNS::run_server(:listen => INTERFACES) do
match(/database\.testing\.com/, IN::A) do |transaction|
transaction.respond!("10.0.0.80")
end
# Default DNS handler
otherwise do |transaction|
transaction.passthrough!(UPSTREAM)
end
end
然后查询:
➜ ruby_dns_example dig @localhost -p 5300 database.testing.com
; <<>> DiG 9.8.3-P1 <<>> @localhost -p 5300 database.testing.com
; (3 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34286
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: recursion requested but not available
;; QUESTION SECTION:
;database.testing.com. IN A
;; ANSWER SECTION:
database.testing.com. 86400 IN A 10.0.0.80
;; Query time: 2 msec
;; SERVER: 127.0.0.1#5300(127.0.0.1)
;; WHEN: Sat Jan 31 13:14:14 2015
;; MSG SIZE rcvd: 54
这里有很多例子:
关于ruby - rspec 与不同的 DNS 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28216369/