em-resolv-replace 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -14,6 +14,14 @@ Ruby replacement that is not loaded by default:
14
14
  Socket objects to use resolv. This gem monkeypatches the monkeypatch so that the Socket
15
15
  classes will use an EventMachine-aware resolver, em-dns-resolver.
16
16
 
17
+ == Requirements
18
+
19
+ em-resolv-replace requires Ruby 1.9.
20
+
21
+ == Installation
22
+
23
+ gem install em-resolv-replace
24
+
17
25
  == Usage
18
26
 
19
27
  Just require em-resolv-replace when initializing your application:
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.0
1
+ 1.1.0
@@ -6,24 +6,42 @@ require 'resolv-replace'
6
6
  require 'em-dns-resolver'
7
7
  require 'fiber'
8
8
 
9
+ #
10
+ =begin
11
+ require './em-resolv-replace'
12
+ EM.run {
13
+ Fiber.new do
14
+ p Resolv.getaddresses('localhost')
15
+ p Resolv.getaddress('localhost')
16
+ EM.stop
17
+ end.resume
18
+ }
19
+ =end
9
20
  # Now override the override with EM-aware functions
10
21
  class Resolv
11
22
 
12
23
  alias :orig_getaddress :getaddress
13
24
 
14
25
  def getaddress(host)
15
- EM.reactor_running? ? em_getaddress(host)[0] : orig_getaddress(host)
26
+ EM.reactor_running? ? em_getaddresses(host)[0] : orig_getaddress(host)
16
27
  end
17
28
 
18
29
  alias :orig_getaddresses :getaddresses
19
30
 
20
31
  def getaddresses(host)
21
- EM.reactor_running? ? em_getaddress(host) : orig_getaddresses(host)
32
+ EM.reactor_running? ? em_getaddresses(host) : orig_getaddresses(host)
22
33
  end
23
34
 
24
35
  private
25
36
 
26
- def em_getaddress(host)
37
+ def em_getaddresses(host)
38
+ # Lookup in /etc/hosts
39
+ x = []
40
+ @hosts ||= Resolv::Hosts.new
41
+ @hosts.each_address(host) {|addr| x << addr.to_s }
42
+ return x unless x.empty?
43
+
44
+ # Nothing, hit DNS
27
45
  fiber = Fiber.current
28
46
  df = EM::DnsResolver.resolve(host)
29
47
  df.callback do |a|
@@ -40,4 +40,16 @@ class TestEmResolvReplace < Test::Unit::TestCase
40
40
  end
41
41
  end
42
42
 
43
+ should "resolve localhost with eventmachine" do
44
+ Resolv.any_instance.expects(:orig_getaddresses).times(0)
45
+
46
+ EM.run do
47
+ Fiber.new do
48
+ results = Resolv.getaddresses('localhost')
49
+ assert (results.first =~ IPv4 || results.first =~ /::/), "Invalid IP #{results}"
50
+ EM.stop
51
+ end.resume
52
+ end
53
+ end
54
+
43
55
  end
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: em-resolv-replace
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ prerelease: false
5
+ segments:
6
+ - 1
7
+ - 1
8
+ - 0
9
+ version: 1.1.0
5
10
  platform: ruby
6
11
  authors:
7
12
  - Mike Perham
@@ -9,29 +14,37 @@ autorequire:
9
14
  bindir: bin
10
15
  cert_chain: []
11
16
 
12
- date: 2010-02-10 00:00:00 -06:00
17
+ date: 2010-04-05 00:00:00 -05:00
13
18
  default_executable:
14
19
  dependencies:
15
20
  - !ruby/object:Gem::Dependency
16
21
  name: shoulda
17
- type: :development
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
20
24
  requirements:
21
25
  - - ">="
22
26
  - !ruby/object:Gem::Version
27
+ segments:
28
+ - 2
29
+ - 10
30
+ - 3
23
31
  version: 2.10.3
24
- version:
32
+ type: :development
33
+ version_requirements: *id001
25
34
  - !ruby/object:Gem::Dependency
26
35
  name: mocha
27
- type: :development
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
36
+ prerelease: false
37
+ requirement: &id002 !ruby/object:Gem::Requirement
30
38
  requirements:
31
39
  - - ">="
32
40
  - !ruby/object:Gem::Version
41
+ segments:
42
+ - 0
43
+ - 9
44
+ - 8
33
45
  version: 0.9.8
34
- version:
46
+ type: :development
47
+ version_requirements: *id002
35
48
  description:
36
49
  email: mperham@gmail.com
37
50
  executables: []
@@ -65,18 +78,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
65
78
  requirements:
66
79
  - - ">="
67
80
  - !ruby/object:Gem::Version
81
+ segments:
82
+ - 0
68
83
  version: "0"
69
- version:
70
84
  required_rubygems_version: !ruby/object:Gem::Requirement
71
85
  requirements:
72
86
  - - ">="
73
87
  - !ruby/object:Gem::Version
88
+ segments:
89
+ - 0
74
90
  version: "0"
75
- version:
76
91
  requirements: []
77
92
 
78
93
  rubyforge_project:
79
- rubygems_version: 1.3.5
94
+ rubygems_version: 1.3.6
80
95
  signing_key:
81
96
  specification_version: 3
82
97
  summary: EventMachine-aware DNS lookup for Ruby