devdnsd 2.2.0 → 2.3.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.
- data/.travis-gemfile +6 -4
- data/.travis.yml +1 -1
- data/Gemfile +6 -5
- data/README.md +1 -0
- data/devdnsd.gemspec +2 -2
- data/doc/DevDNSd.html +3 -3
- data/doc/DevDNSd/Application.html +57 -57
- data/doc/DevDNSd/ApplicationMethods.html +3 -3
- data/doc/DevDNSd/ApplicationMethods/Server.html +16 -16
- data/doc/DevDNSd/ApplicationMethods/System.html +10 -10
- data/doc/DevDNSd/ApplicationMethods/System/ClassMethods.html +6 -6
- data/doc/DevDNSd/Configuration.html +10 -12
- data/doc/DevDNSd/Errors.html +3 -3
- data/doc/DevDNSd/Errors/InvalidRule.html +3 -3
- data/doc/DevDNSd/Rule.html +37 -37
- data/doc/DevDNSd/Version.html +4 -4
- data/doc/_index.html +4 -4
- data/doc/class_list.html +1 -0
- data/doc/file.README.html +5 -4
- data/doc/file_list.html +2 -1
- data/doc/frames.html +1 -1
- data/doc/index.html +5 -4
- data/doc/js/full_list.js +5 -5
- data/doc/method_list.html +1 -0
- data/doc/top-level-namespace.html +3 -3
- data/lib/devdnsd/application.rb +33 -34
- data/lib/devdnsd/configuration.rb +6 -7
- data/lib/devdnsd/rule.rb +6 -6
- data/lib/devdnsd/version.rb +1 -1
- data/spec/coverage_helper.rb +3 -0
- data/spec/devdnsd/application_spec.rb +149 -134
- metadata +7 -7
data/lib/devdnsd/rule.rb
CHANGED
|
@@ -35,7 +35,7 @@ module DevDNSd
|
|
|
35
35
|
# @param block [Proc] An optional block to compute the reply instead of using the `reply` parameter.
|
|
36
36
|
# @see .create
|
|
37
37
|
def initialize(match = /.+/, reply = "127.0.0.1", type = :A, options = {}, &block)
|
|
38
|
-
|
|
38
|
+
i18n_setup(:devdnsd, ::File.absolute_path(::Pathname.new(::File.dirname(__FILE__)).to_s + "/../../locales/"))
|
|
39
39
|
self.i18n = options[:locale]
|
|
40
40
|
setup(match, reply, type, options, block)
|
|
41
41
|
validate_rule
|
|
@@ -45,7 +45,7 @@ module DevDNSd
|
|
|
45
45
|
#
|
|
46
46
|
# @return [Array|Class] The class(es) for the current rule.
|
|
47
47
|
def resource_class
|
|
48
|
-
classes = @type.ensure_array
|
|
48
|
+
classes = @type.ensure_array(nil, true, true) {|cls| self.class.symbol_to_resource_class(cls, options[:locale]) }
|
|
49
49
|
classes.length == 1 ? classes.first : classes
|
|
50
50
|
end
|
|
51
51
|
|
|
@@ -68,7 +68,7 @@ module DevDNSd
|
|
|
68
68
|
# @param hostname [String] The hostname to match.
|
|
69
69
|
# @return [MatchData|Boolean|Nil] Return `true` or MatchData (if the pattern is a regexp) if the rule matches, `false` or `nil` otherwise.
|
|
70
70
|
def match_host(hostname)
|
|
71
|
-
|
|
71
|
+
is_regexp? ? @match.match(hostname) : (@match == hostname)
|
|
72
72
|
end
|
|
73
73
|
|
|
74
74
|
# Creates a new rule.
|
|
@@ -81,7 +81,7 @@ module DevDNSd
|
|
|
81
81
|
# @return [Rule] The new rule.
|
|
82
82
|
def self.create(match, reply_or_type = nil, type = nil, options = {}, &block)
|
|
83
83
|
validate_options(reply_or_type, options, block, Lazier::Localizer.new(:devdnsd, ::File.absolute_path(::Pathname.new(::File.dirname(__FILE__)).to_s + "/../../locales/"), options.is_a?(Hash) ? options[:locale] : nil))
|
|
84
|
-
setup(
|
|
84
|
+
setup(new(match), reply_or_type, type, options, block)
|
|
85
85
|
end
|
|
86
86
|
|
|
87
87
|
# Converts a class to the correspondent symbol.
|
|
@@ -125,8 +125,8 @@ module DevDNSd
|
|
|
125
125
|
|
|
126
126
|
# Validates a newly created rule.
|
|
127
127
|
def validate_rule
|
|
128
|
-
raise(DevDNSd::Errors::InvalidRule.new(
|
|
129
|
-
raise(DevDNSd::Errors::InvalidRule.new(
|
|
128
|
+
raise(DevDNSd::Errors::InvalidRule.new(i18n.rule_invalid_call)) if @reply.blank? && @block.nil?
|
|
129
|
+
raise(DevDNSd::Errors::InvalidRule.new(i18n.rule_invalid_options)) if !@options.is_a?(::Hash)
|
|
130
130
|
end
|
|
131
131
|
|
|
132
132
|
# Setups a new rule.
|
data/lib/devdnsd/version.rb
CHANGED
data/spec/coverage_helper.rb
CHANGED
|
@@ -88,7 +88,7 @@ describe DevDNSd::Application do
|
|
|
88
88
|
end
|
|
89
89
|
|
|
90
90
|
let(:mamertes) {
|
|
91
|
-
|
|
91
|
+
Mamertes::App(run: false) do
|
|
92
92
|
option :configuration, [], {default: "/dev/null"}
|
|
93
93
|
option :tld, [], {default: "dev"}
|
|
94
94
|
option :port, [], {type: Integer, default: 7771}
|
|
@@ -257,7 +257,7 @@ describe DevDNSd::Application do
|
|
|
257
257
|
@resource_class = cls
|
|
258
258
|
end
|
|
259
259
|
|
|
260
|
-
def respond!(*
|
|
260
|
+
def respond!(*_)
|
|
261
261
|
true
|
|
262
262
|
end
|
|
263
263
|
end
|
|
@@ -328,6 +328,15 @@ describe DevDNSd::Application do
|
|
|
328
328
|
end
|
|
329
329
|
end
|
|
330
330
|
|
|
331
|
+
describe "#is_osx?" do
|
|
332
|
+
it "should return the correct information" do
|
|
333
|
+
stub_const("RbConfig::CONFIG", {"host_os" => "darwin foo"})
|
|
334
|
+
expect(application.is_osx?).to be_true
|
|
335
|
+
stub_const("RbConfig::CONFIG", {"host_os" => "another"})
|
|
336
|
+
expect(application.is_osx?).to be_false
|
|
337
|
+
end
|
|
338
|
+
end
|
|
339
|
+
|
|
331
340
|
describe "#resolver_path" do
|
|
332
341
|
it "should return the resolver file basing on the configuration" do
|
|
333
342
|
expect(application.resolver_path).to eq("/etc/resolver/#{application.config.tld}")
|
|
@@ -382,89 +391,92 @@ describe DevDNSd::Application do
|
|
|
382
391
|
end
|
|
383
392
|
|
|
384
393
|
describe "#action_install" do
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
::File.unlink(application.resolver_path) if ::File.exists?(application.resolver_path)
|
|
390
|
-
::File.unlink(application.launch_agent_path) if ::File.exists?(application.launch_agent_path)
|
|
391
|
-
|
|
392
|
-
application.action_install
|
|
393
|
-
expect(::File.exists?(resolver_path)).to be_true
|
|
394
|
-
|
|
395
|
-
::File.unlink(application.resolver_path) if ::File.exists?(application.resolver_path)
|
|
396
|
-
::File.unlink(application.launch_agent_path) if ::File.exists?(application.launch_agent_path)
|
|
397
|
-
end
|
|
394
|
+
before(:each) do
|
|
395
|
+
application.stub(:is_osx?).and_return(true)
|
|
396
|
+
application.stub(:execute_command)
|
|
397
|
+
end
|
|
398
398
|
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
399
|
+
it "should create the resolver" do
|
|
400
|
+
application.stub(:resolver_path).and_return(resolver_path)
|
|
401
|
+
application.stub(:launch_agent_path).and_return(launch_agent_path)
|
|
402
|
+
::File.unlink(application.resolver_path) if ::File.exists?(application.resolver_path)
|
|
403
|
+
::File.unlink(application.launch_agent_path) if ::File.exists?(application.launch_agent_path)
|
|
404
404
|
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
expect(::File.exists?(application.launch_agent_path)).to be_true
|
|
405
|
+
application.action_install
|
|
406
|
+
expect(::File.exists?(resolver_path)).to be_true
|
|
408
407
|
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
408
|
+
::File.unlink(application.resolver_path) if ::File.exists?(application.resolver_path)
|
|
409
|
+
::File.unlink(application.launch_agent_path) if ::File.exists?(application.launch_agent_path)
|
|
410
|
+
end
|
|
412
411
|
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
412
|
+
it "should create the agent" do
|
|
413
|
+
application.stub(:resolver_path).and_return(resolver_path)
|
|
414
|
+
application.stub(:launch_agent_path).and_return(launch_agent_path)
|
|
415
|
+
::File.unlink(application.resolver_path) if ::File.exists?(application.resolver_path)
|
|
416
|
+
::File.unlink(application.launch_agent_path) if ::File.exists?(application.launch_agent_path)
|
|
418
417
|
|
|
419
|
-
|
|
420
|
-
|
|
418
|
+
application.stub(:resolver_path).and_return(resolver_path)
|
|
419
|
+
application.action_install
|
|
420
|
+
expect(::File.exists?(application.launch_agent_path)).to be_true
|
|
421
421
|
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
422
|
+
::File.unlink(application.resolver_path) if ::File.exists?(application.resolver_path)
|
|
423
|
+
::File.unlink(application.launch_agent_path) if ::File.exists?(application.launch_agent_path)
|
|
424
|
+
end
|
|
425
425
|
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
426
|
+
it "should update the DNS cache" do
|
|
427
|
+
application.stub(:resolver_path).and_return(resolver_path)
|
|
428
|
+
application.stub(:launch_agent_path).and_return(launch_agent_path)
|
|
429
|
+
::File.unlink(application.resolver_path) if ::File.exists?(application.resolver_path)
|
|
430
|
+
::File.unlink(application.launch_agent_path) if ::File.exists?(application.launch_agent_path)
|
|
431
431
|
|
|
432
|
-
|
|
433
|
-
|
|
432
|
+
application.should_receive(:dns_update)
|
|
433
|
+
application.action_install
|
|
434
434
|
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
435
|
+
::File.unlink(application.resolver_path) if ::File.exists?(application.resolver_path)
|
|
436
|
+
::File.unlink(application.launch_agent_path) if ::File.exists?(application.launch_agent_path)
|
|
437
|
+
end
|
|
438
438
|
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
439
|
+
it "should not create an invalid resolver" do
|
|
440
|
+
application.stub(:resolver_path).and_return("/invalid/resolver")
|
|
441
|
+
application.stub(:launch_agent_path).and_return("/invalid/agent")
|
|
442
|
+
::File.unlink(application.resolver_path) if ::File.exists?(application.resolver_path)
|
|
443
|
+
::File.unlink(application.launch_agent_path) if ::File.exists?(application.launch_agent_path)
|
|
444
444
|
|
|
445
|
-
|
|
446
|
-
|
|
445
|
+
application.logger.should_receive(:error).with("Cannot create the resolver file.")
|
|
446
|
+
application.action_install
|
|
447
447
|
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
448
|
+
::File.unlink(application.resolver_path) if ::File.exists?(application.resolver_path)
|
|
449
|
+
::File.unlink(application.launch_agent_path) if ::File.exists?(application.launch_agent_path)
|
|
450
|
+
end
|
|
451
451
|
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
452
|
+
it "should not create an invalid agent" do
|
|
453
|
+
application.stub(:resolver_path).and_return(resolver_path)
|
|
454
|
+
application.stub(:launch_agent_path).and_return("/invalid/agent")
|
|
455
|
+
::File.unlink(application.resolver_path) if ::File.exists?(application.resolver_path)
|
|
456
|
+
::File.unlink(application.launch_agent_path) if ::File.exists?(application.launch_agent_path)
|
|
456
457
|
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
::File.unlink(application.resolver_path) if ::File.exists?(application.resolver_path)
|
|
460
|
-
::File.unlink(application.launch_agent_path) if ::File.exists?(application.launch_agent_path)
|
|
458
|
+
application.logger.should_receive(:error).with("Cannot create the launch agent.")
|
|
459
|
+
application.action_install
|
|
461
460
|
|
|
462
|
-
|
|
463
|
-
|
|
461
|
+
::File.unlink(application.resolver_path) if ::File.exists?(application.resolver_path)
|
|
462
|
+
::File.unlink(application.launch_agent_path) if ::File.exists?(application.launch_agent_path)
|
|
463
|
+
end
|
|
464
464
|
|
|
465
|
-
|
|
466
|
-
|
|
465
|
+
it "should not load an invalid agent" do
|
|
466
|
+
application.stub(:execute_command) do |command|
|
|
467
|
+
command =~ /^launchctl/ ? raise(StandardError) : true
|
|
467
468
|
end
|
|
469
|
+
|
|
470
|
+
application.stub(:resolver_path).and_return(resolver_path)
|
|
471
|
+
application.stub(:launch_agent_path).and_return(launch_agent_path)
|
|
472
|
+
::File.unlink(application.resolver_path) if ::File.exists?(application.resolver_path)
|
|
473
|
+
::File.unlink(application.launch_agent_path) if ::File.exists?(application.launch_agent_path)
|
|
474
|
+
|
|
475
|
+
application.logger.should_receive(:error).with("Cannot load the launch agent.")
|
|
476
|
+
application.action_install
|
|
477
|
+
|
|
478
|
+
::File.unlink(application.resolver_path) if ::File.exists?(application.resolver_path)
|
|
479
|
+
::File.unlink(application.launch_agent_path) if ::File.exists?(application.launch_agent_path)
|
|
468
480
|
end
|
|
469
481
|
|
|
470
482
|
it "should raise an exception if not running on OSX" do
|
|
@@ -475,87 +487,90 @@ describe DevDNSd::Application do
|
|
|
475
487
|
end
|
|
476
488
|
|
|
477
489
|
describe "#action_uninstall" do
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
::File.unlink(application.resolver_path) if ::File.exists?(application.resolver_path)
|
|
483
|
-
::File.unlink(application.launch_agent_path) if ::File.exists?(application.launch_agent_path)
|
|
484
|
-
|
|
485
|
-
application.action_install
|
|
486
|
-
application.action_uninstall
|
|
487
|
-
expect(::File.exists?(resolver_path)).to be_false
|
|
488
|
-
|
|
489
|
-
::File.unlink(application.resolver_path) if ::File.exists?(application.resolver_path)
|
|
490
|
-
::File.unlink(application.launch_agent_path) if ::File.exists?(application.launch_agent_path)
|
|
491
|
-
end
|
|
490
|
+
before(:each) do
|
|
491
|
+
application.stub(:is_osx?).and_return(true)
|
|
492
|
+
application.stub(:execute_command)
|
|
493
|
+
end
|
|
492
494
|
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
495
|
+
it "should remove the resolver" do
|
|
496
|
+
application.stub(:resolver_path).and_return(resolver_path)
|
|
497
|
+
application.stub(:launch_agent_path).and_return(launch_agent_path)
|
|
498
|
+
::File.unlink(application.resolver_path) if ::File.exists?(application.resolver_path)
|
|
499
|
+
::File.unlink(application.launch_agent_path) if ::File.exists?(application.launch_agent_path)
|
|
498
500
|
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
expect(::File.exists?(application.launch_agent_path)).to be_false
|
|
501
|
+
application.action_install
|
|
502
|
+
application.action_uninstall
|
|
503
|
+
expect(::File.exists?(resolver_path)).to be_false
|
|
503
504
|
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
505
|
+
::File.unlink(application.resolver_path) if ::File.exists?(application.resolver_path)
|
|
506
|
+
::File.unlink(application.launch_agent_path) if ::File.exists?(application.launch_agent_path)
|
|
507
|
+
end
|
|
507
508
|
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
509
|
+
it "should remove the agent" do
|
|
510
|
+
application.stub(:resolver_path).and_return(resolver_path)
|
|
511
|
+
application.stub(:launch_agent_path).and_return(launch_agent_path)
|
|
512
|
+
::File.unlink(application.resolver_path) if ::File.exists?(application.resolver_path)
|
|
513
|
+
::File.unlink(application.launch_agent_path) if ::File.exists?(application.launch_agent_path)
|
|
511
514
|
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
+
Bovem::Logger.stub(:default_file).and_return($stdout)
|
|
516
|
+
application.action_install
|
|
517
|
+
application.action_uninstall
|
|
518
|
+
expect(::File.exists?(application.launch_agent_path)).to be_false
|
|
515
519
|
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
520
|
+
::File.unlink(application.resolver_path) if ::File.exists?(application.resolver_path)
|
|
521
|
+
::File.unlink(application.launch_agent_path) if ::File.exists?(application.launch_agent_path)
|
|
522
|
+
end
|
|
519
523
|
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
524
|
+
it "should not delete an invalid resolver" do
|
|
525
|
+
application.stub(:resolver_path).and_return("/invalid/resolver")
|
|
526
|
+
application.stub(:launch_agent_path).and_return("/invalid/agent")
|
|
523
527
|
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
528
|
+
application.action_install
|
|
529
|
+
application.logger.should_receive(:warn).at_least(1)
|
|
530
|
+
application.action_uninstall
|
|
527
531
|
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
532
|
+
::File.unlink(application.resolver_path) if ::File.exists?(application.resolver_path)
|
|
533
|
+
::File.unlink(application.launch_agent_path) if ::File.exists?(application.launch_agent_path)
|
|
534
|
+
end
|
|
531
535
|
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
536
|
+
it "should not delete an invalid agent" do
|
|
537
|
+
application.stub(:resolver_path).and_return(resolver_path)
|
|
538
|
+
application.stub(:launch_agent_path).and_return("/invalid/agent")
|
|
535
539
|
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
application.logger.should_receive(:warn).at_least(1)
|
|
540
|
-
application.action_uninstall
|
|
540
|
+
application.action_install
|
|
541
|
+
application.logger.should_receive(:warn).at_least(1)
|
|
542
|
+
application.action_uninstall
|
|
541
543
|
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
544
|
+
::File.unlink(application.resolver_path) if ::File.exists?(application.resolver_path)
|
|
545
|
+
::File.unlink(application.launch_agent_path) if ::File.exists?(application.launch_agent_path)
|
|
546
|
+
end
|
|
545
547
|
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
::File.unlink(application.resolver_path) if ::File.exists?(application.resolver_path)
|
|
550
|
-
::File.unlink(application.launch_agent_path) if ::File.exists?(application.launch_agent_path)
|
|
548
|
+
it "should not unload invalid agent" do
|
|
549
|
+
application.stub(:resolver_path).and_return(resolver_path)
|
|
550
|
+
application.stub(:launch_agent_path).and_return("/invalid/agent")
|
|
551
551
|
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
552
|
+
application.action_install
|
|
553
|
+
application.stub(:execute_command).and_raise(StandardError)
|
|
554
|
+
application.stub(:dns_update)
|
|
555
|
+
application.logger.should_receive(:warn).at_least(1)
|
|
556
|
+
application.action_uninstall
|
|
555
557
|
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
558
|
+
::File.unlink(application.resolver_path) if ::File.exists?(application.resolver_path)
|
|
559
|
+
::File.unlink(application.launch_agent_path) if ::File.exists?(application.launch_agent_path)
|
|
560
|
+
end
|
|
561
|
+
|
|
562
|
+
it "should update the DNS cache" do
|
|
563
|
+
application.stub(:resolver_path).and_return(resolver_path)
|
|
564
|
+
application.stub(:launch_agent_path).and_return(launch_agent_path)
|
|
565
|
+
::File.unlink(application.resolver_path) if ::File.exists?(application.resolver_path)
|
|
566
|
+
::File.unlink(application.launch_agent_path) if ::File.exists?(application.launch_agent_path)
|
|
567
|
+
|
|
568
|
+
application.action_install
|
|
569
|
+
application.should_receive(:dns_update)
|
|
570
|
+
application.action_uninstall
|
|
571
|
+
|
|
572
|
+
::File.unlink(application.resolver_path) if ::File.exists?(application.resolver_path)
|
|
573
|
+
::File.unlink(application.launch_agent_path) if ::File.exists?(application.launch_agent_path)
|
|
559
574
|
end
|
|
560
575
|
|
|
561
576
|
it "should raise an exception if not running on OSX" do
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: devdnsd
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.3.0
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2013-
|
|
12
|
+
date: 2013-07-15 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: mamertes
|
|
@@ -18,7 +18,7 @@ dependencies:
|
|
|
18
18
|
requirements:
|
|
19
19
|
- - ~>
|
|
20
20
|
- !ruby/object:Gem::Version
|
|
21
|
-
version: 2.
|
|
21
|
+
version: 2.2.0
|
|
22
22
|
type: :runtime
|
|
23
23
|
prerelease: false
|
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -26,7 +26,7 @@ dependencies:
|
|
|
26
26
|
requirements:
|
|
27
27
|
- - ~>
|
|
28
28
|
- !ruby/object:Gem::Version
|
|
29
|
-
version: 2.
|
|
29
|
+
version: 2.2.0
|
|
30
30
|
- !ruby/object:Gem::Dependency
|
|
31
31
|
name: rubydns
|
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -34,7 +34,7 @@ dependencies:
|
|
|
34
34
|
requirements:
|
|
35
35
|
- - ~>
|
|
36
36
|
- !ruby/object:Gem::Version
|
|
37
|
-
version: 0.6.
|
|
37
|
+
version: 0.6.3
|
|
38
38
|
type: :runtime
|
|
39
39
|
prerelease: false
|
|
40
40
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -42,7 +42,7 @@ dependencies:
|
|
|
42
42
|
requirements:
|
|
43
43
|
- - ~>
|
|
44
44
|
- !ruby/object:Gem::Version
|
|
45
|
-
version: 0.6.
|
|
45
|
+
version: 0.6.3
|
|
46
46
|
- !ruby/object:Gem::Dependency
|
|
47
47
|
name: rexec
|
|
48
48
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -137,7 +137,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
137
137
|
version: '0'
|
|
138
138
|
segments:
|
|
139
139
|
- 0
|
|
140
|
-
hash:
|
|
140
|
+
hash: 1433778156204366420
|
|
141
141
|
requirements: []
|
|
142
142
|
rubyforge_project: devdnsd
|
|
143
143
|
rubygems_version: 1.8.25
|