ruby-dbus 0.12.0 → 0.13.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.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/NEWS.md +344 -0
  3. data/Rakefile +21 -15
  4. data/VERSION +1 -1
  5. data/doc/Reference.md +26 -37
  6. data/examples/doc/_extract_examples +4 -4
  7. data/examples/gdbus/gdbus +40 -39
  8. data/examples/no-introspect/nm-test.rb +1 -3
  9. data/examples/no-introspect/tracker-test.rb +2 -4
  10. data/examples/rhythmbox/playpause.rb +1 -2
  11. data/examples/service/call_service.rb +0 -3
  12. data/examples/service/service_newapi.rb +3 -4
  13. data/examples/simple/call_introspect.rb +0 -3
  14. data/examples/simple/get_id.rb +1 -3
  15. data/examples/simple/properties.rb +3 -4
  16. data/examples/utils/listnames.rb +6 -7
  17. data/examples/utils/notify.rb +3 -5
  18. data/lib/dbus.rb +8 -20
  19. data/lib/dbus/auth.rb +59 -61
  20. data/lib/dbus/bus.rb +86 -97
  21. data/lib/dbus/error.rb +1 -1
  22. data/lib/dbus/export.rb +20 -18
  23. data/lib/dbus/introspect.rb +26 -28
  24. data/lib/dbus/logger.rb +1 -1
  25. data/lib/dbus/marshall.rb +72 -74
  26. data/lib/dbus/matchrule.rb +22 -26
  27. data/lib/dbus/message.rb +24 -33
  28. data/lib/dbus/message_queue.rb +30 -30
  29. data/lib/dbus/proxy_object.rb +34 -30
  30. data/lib/dbus/proxy_object_factory.rb +5 -2
  31. data/lib/dbus/proxy_object_interface.rb +10 -8
  32. data/lib/dbus/type.rb +154 -156
  33. data/lib/dbus/xml.rb +22 -16
  34. data/ruby-dbus.gemspec +15 -3
  35. data/spec/async_spec.rb +2 -4
  36. data/spec/binding_spec.rb +1 -5
  37. data/spec/bus_and_xml_backend_spec.rb +6 -9
  38. data/spec/bus_spec.rb +1 -1
  39. data/spec/byte_array_spec.rb +0 -2
  40. data/spec/err_msg_spec.rb +13 -10
  41. data/spec/introspect_xml_parser_spec.rb +2 -2
  42. data/spec/introspection_spec.rb +1 -1
  43. data/spec/main_loop_spec.rb +4 -5
  44. data/spec/property_spec.rb +0 -3
  45. data/spec/proxy_object_spec.rb +42 -0
  46. data/spec/server_robustness_spec.rb +0 -2
  47. data/spec/service_newapi.rb +51 -41
  48. data/spec/session_bus_spec.rb +6 -7
  49. data/spec/signal_spec.rb +2 -3
  50. data/spec/spec_helper.rb +28 -24
  51. data/spec/thread_safety_spec.rb +1 -2
  52. data/spec/type_spec.rb +2 -2
  53. data/spec/value_spec.rb +7 -10
  54. data/spec/variant_spec.rb +15 -16
  55. metadata +60 -3
  56. data/NEWS +0 -279
@@ -19,14 +19,14 @@ describe DBus::ASessionBus do
19
19
  end
20
20
 
21
21
  describe "#address_from_file" do
22
- let(:session_bus_file_path) { /\.dbus\/session-bus\/baz-\d/ }
22
+ let(:session_bus_file_path) { %r{\.dbus/session-bus/baz-\d} }
23
23
 
24
24
  before do
25
25
  # mocks of files for address_from_file method
26
26
  machine_id_path = File.expand_path("/etc/machine-id", __FILE__)
27
- expect(Dir).to receive(:[]).with(any_args) {[machine_id_path] }
27
+ expect(Dir).to receive(:[]).with(any_args) { [machine_id_path] }
28
28
  expect(File).to receive(:read).with(machine_id_path) { "baz" }
29
- expect(File).to receive(:exists?).with(session_bus_file_path) { true }
29
+ expect(File).to receive(:exist?).with(session_bus_file_path) { true }
30
30
  end
31
31
 
32
32
  around(:each) do |example|
@@ -36,9 +36,8 @@ describe DBus::ASessionBus do
36
36
  end
37
37
 
38
38
  context "when DBUS_SESSION_BUS_ADDRESS from file is surrounded by quotation marks" do
39
-
40
39
  it "returns session bus address without single quotation marks" do
41
- expect(File).to receive(:open).with(session_bus_file_path) { <<-EOS.gsub(/^\s*/, '') }
40
+ expect(File).to receive(:open).with(session_bus_file_path) { <<-EOS.gsub(/^\s*/, "") }
42
41
  DBUS_SESSION_BUS_ADDRESS='#{dbus_session_bus_address}'
43
42
  DBUS_SESSION_BUS_PID=12345
44
43
  DBUS_SESSION_BUS_WINDOWID=12345678
@@ -47,7 +46,7 @@ describe DBus::ASessionBus do
47
46
  end
48
47
 
49
48
  it "returns session bus address without double quotation marks" do
50
- expect(File).to receive(:open).with(session_bus_file_path) { <<-EOS.gsub(/^\s*/, '') }
49
+ expect(File).to receive(:open).with(session_bus_file_path) { <<-EOS.gsub(/^\s*/, "") }
51
50
  DBUS_SESSION_BUS_ADDRESS="#{dbus_session_bus_address}"
52
51
  DBUS_SESSION_BUS_PID=12345
53
52
  DBUS_SESSION_BUS_WINDOWID=12345678
@@ -58,7 +57,7 @@ describe DBus::ASessionBus do
58
57
 
59
58
  context "when DBUS_SESSION_BUS_ADDRESS from file is not surrounded by any quotation marks" do
60
59
  it "returns session bus address as it is" do
61
- expect(File).to receive(:open).with(session_bus_file_path) { <<-EOS.gsub(/^\s*/, '') }
60
+ expect(File).to receive(:open).with(session_bus_file_path) { <<-EOS.gsub(/^\s*/, "") }
62
61
  DBUS_SESSION_BUS_ADDRESS=#{dbus_session_bus_address}
63
62
  DBUS_SESSION_BUS_PID=12345
64
63
  DBUS_SESSION_BUS_WINDOWID=12345678
@@ -8,7 +8,6 @@ describe "SignalHandlerTest" do
8
8
  @session_bus = DBus::ASessionBus.new
9
9
  svc = @session_bus.service("org.ruby.service")
10
10
  @obj = svc.object("/org/ruby/MyInstance")
11
- @obj.introspect # necessary
12
11
  @obj.default_iface = "org.ruby.Loop"
13
12
  @intf = @obj["org.ruby.Loop"]
14
13
 
@@ -35,7 +34,7 @@ describe "SignalHandlerTest" do
35
34
 
36
35
  quitter = Thread.new do
37
36
  DBus.logger.debug "sleep before quit"
38
- # FIXME if we sleep for too long
37
+ # FIXME: if we sleep for too long
39
38
  # the socket will be drained and we deadlock in a select.
40
39
  # It could be worked around by sending ourselves a Unix signal
41
40
  # (with a dummy handler) to interrupt the select
@@ -73,7 +72,7 @@ describe "SignalHandlerTest" do
73
72
  expect(started).to eq(true)
74
73
  expect(counter).to eq(1)
75
74
  expect { @intf.on_signal }.to raise_error(ArgumentError) # not enough
76
- expect { @intf.on_signal 'to', 'many', 'yarrrrr!' }.to raise_error(ArgumentError)
75
+ expect { @intf.on_signal "to", "many", "yarrrrr!" }.to raise_error(ArgumentError)
77
76
  end
78
77
 
79
78
  it "tests too many rules" do
@@ -1,9 +1,10 @@
1
- if ENV["COVERAGE"]
2
- coverage = ENV["COVERAGE"] == "true"
3
- else
4
- # heuristics: enable for interactive builds (but not in OBS) or in Travis
5
- coverage = !!ENV["DISPLAY"] || ENV["TRAVIS"]
6
- end
1
+ coverage = if ENV["COVERAGE"]
2
+ ENV["COVERAGE"] == "true"
3
+ else
4
+ # heuristics: enable for interactive builds (but not in OBS)
5
+ # or in Travis
6
+ ENV["DISPLAY"] || ENV["TRAVIS"]
7
+ end
7
8
 
8
9
  if coverage
9
10
  require "simplecov"
@@ -21,7 +22,7 @@ if coverage
21
22
  SimpleCov.start
22
23
  end
23
24
 
24
- $:.unshift File.expand_path("../../lib", __FILE__)
25
+ $LOAD_PATH.unshift File.expand_path("../../lib", __FILE__)
25
26
 
26
27
  if Object.const_defined? "RSpec"
27
28
  # http://betterspecs.org/#expect
@@ -56,35 +57,38 @@ def with_private_bus(&block)
56
57
  pid_file = Tempfile.new("dbus-pid")
57
58
  output_file = Tempfile.new("dbus-output") # just in case
58
59
 
59
- $temp_dir = Dir.mktmpdir
60
- with_env("XDG_DATA_DIRS", $temp_dir) do
61
- cmd = "dbus-daemon --nofork --config-file=#{config_file_path} --print-address=3 3>#{address_file.path} --print-pid=4 4>#{pid_file.path} >#{output_file.path} 2>&1 &"
60
+ temp_dir = Dir.mktmpdir
61
+ with_env("XDG_DATA_DIRS", temp_dir) do
62
+ cmd = "dbus-daemon --nofork --config-file=#{config_file_path} " \
63
+ "--print-address=3 3>#{address_file.path} " \
64
+ "--print-pid=4 4>#{pid_file.path} " \
65
+ ">#{output_file.path} 2>&1 &"
62
66
  system cmd
63
- end
64
67
 
65
- # wait until dbus-daemon writes the info
66
- Timeout.timeout(10) do
67
- until File.size?(address_file) and File.size?(pid_file) do
68
- sleep 0.1
68
+ # wait until dbus-daemon writes the info
69
+ Timeout.timeout(10) do
70
+ until File.size?(address_file) && File.size?(pid_file)
71
+ sleep 0.1
72
+ end
69
73
  end
70
- end
71
74
 
72
- address = address_file.read.chomp
73
- pid = pid_file.read.chomp.to_i
75
+ address = address_file.read.chomp
76
+ pid = pid_file.read.chomp.to_i
74
77
 
75
- with_env("DBUS_SESSION_BUS_ADDRESS", address) do
76
- block.call
77
- end
78
+ with_env("DBUS_SESSION_BUS_ADDRESS", address) do
79
+ block.call
80
+ end
78
81
 
79
- Process.kill("TERM", pid)
80
- FileUtils.rm_rf $temp_dir
82
+ Process.kill("TERM", pid)
83
+ end
84
+ FileUtils.rm_rf temp_dir
81
85
  end
82
86
 
83
87
  def with_service_by_activation(&block)
84
88
  name = "org.ruby.service"
85
89
  exec = "#{TOPDIR}/spec/service_newapi.rb"
86
90
 
87
- service_dir = "#{$temp_dir}/dbus-1/services"
91
+ service_dir = "#{ENV["XDG_DATA_DIRS"]}/dbus-1/services"
88
92
  FileUtils.mkdir_p service_dir
89
93
  # file name actually does not need to match the service name
90
94
  File.open("#{service_dir}/#{name}.service", "w") do |f|
@@ -15,7 +15,6 @@ describe "ThreadSafetyTest" do
15
15
  bus = DBus::ASessionBus.new
16
16
  svc = bus.service("org.ruby.service")
17
17
  obj = svc.object("/org/ruby/MyInstance")
18
- obj.introspect
19
18
  obj.default_iface = "org.ruby.SampleInterface"
20
19
 
21
20
  10.times do |i|
@@ -26,6 +25,6 @@ describe "ThreadSafetyTest" do
26
25
  end
27
26
  end
28
27
  end
29
- jobs.each do |thread| thread.join end
28
+ jobs.each(&:join)
30
29
  end
31
30
  end
@@ -6,13 +6,13 @@ describe DBus do
6
6
  describe ".type" do
7
7
  %w{i ai a(ii) aai}.each do |s|
8
8
  it "parses some type #{s}" do
9
- expect(DBus::type(s).to_s).to be_eql s
9
+ expect(DBus.type(s).to_s).to be_eql s
10
10
  end
11
11
  end
12
12
 
13
13
  %w{aa (ii ii) hrmp}.each do |s|
14
14
  it "raises exception for invalid type #{s}" do
15
- expect {DBus::type(s).to_s}.to raise_error DBus::Type::SignatureException
15
+ expect { DBus.type(s).to_s }.to raise_error DBus::Type::SignatureException
16
16
  end
17
17
  end
18
18
  end
@@ -8,14 +8,13 @@ describe "ValueTest" do
8
8
  session_bus = DBus::ASessionBus.new
9
9
  @svc = session_bus.service("org.ruby.service")
10
10
  @obj = @svc.object("/org/ruby/MyInstance")
11
- @obj.introspect # necessary
12
11
  @obj.default_iface = "org.ruby.SampleInterface"
13
12
  end
14
13
 
15
14
  it "tests passing an array of structs through a variant" do
16
- triple = ['a(uuu)', []]
15
+ triple = ["a(uuu)", []]
17
16
  @obj.test_variant(triple)
18
- quadruple = ['a(uuuu)', []] # a(uuu) works fine
17
+ quadruple = ["a(uuuu)", []] # a(uuu) works fine
19
18
  # The bus disconnects us because of malformed message,
20
19
  # code 12: DBUS_INVALID_TOO_MUCH_DATA
21
20
  @obj.test_variant(quadruple)
@@ -39,7 +38,6 @@ describe "ValueTest" do
39
38
 
40
39
  it "retrieves a single return value with API V1" do
41
40
  obj = @svc["/org/ruby/MyInstance"]
42
- obj.introspect
43
41
  obj.default_iface = "org.ruby.SampleInterface"
44
42
 
45
43
  expect(obj.bounce_variant("cuckoo")).to eq("cuckoo")
@@ -51,16 +49,15 @@ describe "ValueTest" do
51
49
 
52
50
  # these are ambiguous
53
51
  it "tests pairs with a string" do
54
-
55
52
  # deprecated
56
53
  expect(@obj.bounce_variant(["s", "foo"])[0]).to eq("foo")
57
-
54
+
58
55
  expect(@obj.bounce_variant(DBus.variant("s", "foo"))[0]).to eq("foo")
59
56
  expect(@obj.bounce_variant([DBus.type("s"), "foo"])[0]).to eq("foo")
60
57
 
61
58
  # does not work, because the server side forgets the explicit typing
62
- # assert_equal ["s", "foo"], @obj.bounce_variant(["av", ["s", "foo"]])[0]
63
- # assert_equal ["s", "foo"], @obj.bounce_variant(["as", ["s", "foo"]])[0]
59
+ # assert_equal ["s", "foo"], @obj.bounce_variant(["av", ["s", "foo"]])[0]
60
+ # assert_equal ["s", "foo"], @obj.bounce_variant(["as", ["s", "foo"]])[0]
64
61
 
65
62
  # instead, use this to demonstrate that the variant is passed as expected
66
63
  expect(@obj.variant_size(["s", "four"])[0]).to eq(4)
@@ -73,8 +70,8 @@ describe "ValueTest" do
73
70
  # https://trac.luon.net/ruby-dbus/ticket/30
74
71
  @obj.default_iface = "org.ruby.Ticket30"
75
72
  choices = []
76
- choices << ['s', 'Plan A']
77
- choices << ['s', 'Plan B']
73
+ choices << ["s", "Plan A"]
74
+ choices << ["s", "Plan B"]
78
75
  # old explicit typing
79
76
  expect(@obj.Sybilla(choices)[0]).to eq("Do Plan A")
80
77
  # automatic typing
@@ -25,7 +25,7 @@ describe "VariantTest" do
25
25
  # less specific test: just run it thru a loopback
26
26
  expect(make_variant(3_000_000_000)).to eq(["x", 3_000_000_000])
27
27
  expect(make_variant(5_000_000_000)).to eq(["x", 5_000_000_000])
28
-
28
+
29
29
  expect(make_variant(3.14)).to eq(["d", 3.14])
30
30
 
31
31
  expect(make_variant("foo")).to eq(["s", "foo"])
@@ -34,32 +34,31 @@ describe "VariantTest" do
34
34
  # left: strruct, array, dict
35
35
  # object path: detect exported objects?, signature
36
36
 
37
- # # by Ruby types
38
- # class Foo
39
- # end
40
- # make_variant(Foo.new)
41
- # if we don;t understand a class, the error should be informative -> new exception
37
+ # # by Ruby types
38
+ # class Foo
39
+ # end
40
+ # make_variant(Foo.new)
41
+ # if we don;t understand a class, the error should be informative -> new exception
42
42
  end
43
43
 
44
44
  it "tests make variant array" do
45
45
  ai = [1, 2, 3]
46
- # as = ["one", "two", "three"]
47
- # which?
48
- # expect(make_variant(ai)).to eq(["ai", [1, 2, 3]])
46
+ # as = ["one", "two", "three"]
47
+ # which?
48
+ # expect(make_variant(ai)).to eq(["ai", [1, 2, 3]])
49
49
  expect(make_variant(ai)).to eq(["av", [["i", 1],
50
- ["i", 2],
51
- ["i", 3]]])
50
+ ["i", 2],
51
+ ["i", 3]]])
52
52
  a0 = []
53
53
  expect(make_variant(a0)).to eq(["av", []])
54
-
55
54
  end
56
55
 
57
56
  it "tests make variant hash" do
58
- h = {"k1" => "v1", "k2" => "v2"}
57
+ h = { "k1" => "v1", "k2" => "v2" }
59
58
  expect(make_variant(h)).to eq(["a{sv}", {
60
- "k1" => ["s", "v1"],
61
- "k2" => ["s", "v2"],
62
- }])
59
+ "k1" => ["s", "v1"],
60
+ "k2" => ["s", "v2"]
61
+ }])
63
62
  h0 = {}
64
63
  expect(make_variant(h0)).to eq(["a{sv}", {}])
65
64
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-dbus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.0
4
+ version: 0.13.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ruby DBus Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-09-12 00:00:00.000000000 Z
11
+ date: 2016-09-21 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: coveralls
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: packaging_rake_tasks
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -24,8 +38,50 @@ dependencies:
24
38
  - - ">="
25
39
  - !ruby/object:Gem::Version
26
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
27
55
  - !ruby/object:Gem::Dependency
28
56
  name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '3'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '3'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rubocop
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '='
74
+ - !ruby/object:Gem::Version
75
+ version: 0.41.2
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '='
81
+ - !ruby/object:Gem::Version
82
+ version: 0.41.2
83
+ - !ruby/object:Gem::Dependency
84
+ name: simplecov
29
85
  requirement: !ruby/object:Gem::Requirement
30
86
  requirements:
31
87
  - - ">="
@@ -46,7 +102,7 @@ extra_rdoc_files: []
46
102
  files:
47
103
  - ".rspec"
48
104
  - COPYING
49
- - NEWS
105
+ - NEWS.md
50
106
  - README.md
51
107
  - Rakefile
52
108
  - VERSION
@@ -100,6 +156,7 @@ files:
100
156
  - spec/introspection_spec.rb
101
157
  - spec/main_loop_spec.rb
102
158
  - spec/property_spec.rb
159
+ - spec/proxy_object_spec.rb
103
160
  - spec/server_robustness_spec.rb
104
161
  - spec/server_spec.rb
105
162
  - spec/service_newapi.rb
data/NEWS DELETED
@@ -1,279 +0,0 @@
1
- = Ruby D-Bus NEWS
2
-
3
- Note about bug numbers:
4
- Ticket#1 - https://trac.luon.net/ruby-dbus/ticket/1
5
- Issue#1 - http://github.com/mvidner/ruby-dbus/issues#issue/1
6
- bnc#1 - https://bugzilla.novell.com/show_bug.cgi?id=1
7
-
8
- == Unreleased
9
-
10
- == Ruby D-Bus 0.12.0 - 2016-09-12
11
-
12
- API:
13
- * Added proxy objects whose methods return single values instead of arrays
14
- (use Service#[] instead of Service#object; Issue#30).
15
-
16
- Requirements:
17
- * Require ruby 2.0.0, stopped supporting 1.9.3.
18
-
19
- == Ruby D-Bus 0.11.2 - 2016-09-11
20
-
21
- Bug fixes:
22
- * Fixed reading a quoted session bus address, as written by dbus-1.10.10
23
- (Yasuhiro Asaka)
24
-
25
- == Ruby D-Bus 0.11.1 - 2016-05-12
26
-
27
- Bug fixes:
28
- * Fix default path finding on FreeBSD (Greg)
29
- * Service#unexport fixed to really return the unexported object
30
-
31
- Requirements:
32
- * made tests compatible with RSpec 3
33
-
34
- == Ruby D-Bus 0.11.0 - 2014-02-17
35
-
36
- API:
37
- * Connection: split off MessageQueue, marked other methods as private.
38
-
39
- Requirements:
40
- * converted tests to RSpec, rather mechanically for now
41
-
42
- == Ruby D-Bus 0.10.0 - 2014-01-10
43
-
44
- Bug fixes:
45
- * fixed "Interfaces added with singleton_class.instance_eval aren't
46
- exported" (Issue#22, by miaoufkirsh)
47
-
48
- Requirements:
49
- * Require ruby 1.9.3, stopped supporting 1.8.7.
50
-
51
- == Ruby D-Bus 0.9.3 - 2014-01-02
52
-
53
- Bug fixes:
54
- * re-added COPYING, NEWS, README.md to the gem (Issue#47,
55
- by Cédric Boutillier)
56
-
57
- Packaging:
58
- * use packaging_rake_tasks
59
-
60
- == Ruby D-Bus 0.9.2 - 2013-05-08
61
-
62
- Features:
63
- * Ruby strings can be passed where byte arrays ("ay") are expected
64
- (Issue#40, by Jesper B. Rosenkilde)
65
-
66
- Bug fixes:
67
- * Fixed accessing ModemManager properties (Issue#41, reported
68
- by Ernest Bursa). MM introspection produces two elements
69
- for a single interface; merge them.
70
-
71
- == Ruby D-Bus 0.9.1 - 2013-04-23
72
-
73
- Bug fixes:
74
- * Prefer /etc/machine-id to /var/lib/dbus/machine-id
75
- when DBUS_SESSION_BUS_ADDRESS is unset (Issue#39, by WU Jun).
76
-
77
- == Ruby D-Bus 0.9.0 - 2012-11-06
78
-
79
- Features:
80
- * When calling methods, the interface can be left unspecified if unambiguous
81
- (Damiano Stoffie)
82
- * YARD documentation, Reference.md
83
-
84
- Bug fixes:
85
- * Introspection attribute "direction" can be omitted
86
- as allowed by the specification (Noah Meyerhans).
87
- * ProxyObjectInterface#on_signal no longer needs the "bus" parameter
88
- (Issue#31, by Damiano Stoffie)
89
-
90
- == Ruby D-Bus 0.8.0 - 2012-09-20
91
-
92
- Features:
93
- * Add Anonymous authentication (Issue#27, by Walter Brebels).
94
- * Use Nokogiri for XML parsing when available (Issue#24, by Geoff Youngs).
95
-
96
- Bug fixes:
97
- * Use SCM_CREDS authentication only on FreeBSD, not on OpenBSD (Issue#21,
98
- reported by Adde Nilsson).
99
- * Recognize signature "h" (UNIX_FD) used eg. by Upstart (Issue#23,
100
- by Bernd Ahlers).
101
- * Find the session bus also via launchd, on OS X (Issue#20, reported
102
- by Paul Sturgess).
103
-
104
- Other:
105
- * Now doing continuous integration with Travis:
106
- http://travis-ci.org/#!/mvidner/ruby-dbus
107
-
108
-
109
- == Ruby D-Bus 0.7.2 - 2012-04-05
110
-
111
- A brown-paper-bag release.
112
-
113
- Bug fixes:
114
- * Fixed "undefined local variable or method `continue'" in
115
- DBus::Main#run when a service becomes idle (by Ravil Bayramgalin)
116
-
117
- == Ruby D-Bus 0.7.1 - 2012-04-04
118
-
119
- Bug fixes:
120
- * Fixed calling asynchronous methods on the default interface (Issue#13,
121
- by Eugene Korbut).
122
- * Fixed Main#quit to really quit the loop (by Josef Reidinger)
123
- * Unbundled files from Active Support (by Bohuslav Kabrda)
124
-
125
- == Ruby D-Bus 0.7.0 - 2011-07-26
126
-
127
- Features:
128
- * Added ASystemBus and ASessionBus, non-singletons useful in tests
129
- and threads.
130
-
131
- Bug fixes:
132
- * Fixed handling of multibyte strings (Issue#8, by Takayuki YAMAGUCHI).
133
- * Allow reopening of a dbus_interface declaration (Issue#9, by T. YAMAGUCHI).
134
- * Fixed ruby-1.9.2 compatibility again (Issue#12).
135
- * Fixed authentication on BSD (Issue#11, by Jonathan Walker)
136
- * Fixed exiting a nested event loop for synchronous calls
137
- (reported by Timo Warns).
138
- * Fixed introspection calls leaking reply handlers.
139
- * "rake test" now works, doing what was called "rake env:test"
140
-
141
- == Ruby D-Bus 0.6.0 - 2010-12-11
142
-
143
- Features:
144
- * Clients can access properties conveniently (Ticket#28).
145
-
146
- Bug fixes:
147
- * Service won't crash whan handling an unknown method or interface (Ticket#31).
148
- * Don't send an invalid error name when it originates from a NameError.
149
-
150
- == Ruby D-Bus 0.5.0 - 2010-11-07
151
-
152
- Features:
153
- * Better binding of Ruby Exceptions to D-Bus Errors.
154
- * Converted the package to a Gem (Issue#6).
155
- * Converted the tutorial from Webgen to Markdown.
156
-
157
- Bug fixes:
158
- * Don't pass file descriptors to subprocesses.
159
- * Fixed InterfaceElement::validate_name (Ticket#38, by Herwin Weststrate).
160
- * Fixed a typo in InvalidDestinationName description (Ticket#40).
161
-
162
- == Ruby D-Bus 0.4.0 - 2010-08-20
163
-
164
- Features:
165
- * TCP transport (by pangdudu)
166
- * Enabled test code coverage report (rcov)
167
-
168
- Bug fixes:
169
- * Classes should not share all interfaces (Ticket#36/Issue#5)
170
- * Ruby 1.9 compatibility (Ticket#37, by Myra Nelson)
171
-
172
- == Ruby D-Bus 0.3.1 - 2010-07-22
173
-
174
- Bug fixes:
175
- * Many on_signal could cause DBus.Error.LimitsExceeded bnc#617350).
176
- Don't add a match rule that already exists, enable removing match
177
- rules. Now only one handler for a rule is called (but it is possible
178
- for one signal to match more rules). This reverts the half-fix done
179
- to fix Issue#3
180
- * Re-added InterfaceElement#add_param for compatibility.
181
- * Handle more ways which tell us that a bus connection has died.
182
-
183
- == Ruby D-Bus 0.3.0 - 2010-03-28
184
-
185
- Bug fixes:
186
-
187
- * Fixed "undefined method `get_node' for nil:NilClass"
188
- on Ubuntu Karmic (Ticket#34).
189
- * Get the session bus address even if unset in ENV (Issue#4).
190
- * Improved exceptions a bit:
191
- UndefinedInterface, InvalidMethodName, NoMethodError, no RuntimeException
192
-
193
- These are by Klaus Kaempf:
194
- * Make the signal dispatcher call all handlers (Issue#3).
195
- * Run on Ruby < 1.8.7 (Issue#2).
196
- * Avoid needless DBus::IncompleteBufferException (Ticket#33).
197
- * Don't ignore DBus Errors in request_service, raise them (Ticket#32).
198
-
199
- Features:
200
-
201
- * Automatic signature inference for variants.
202
- * Introduced FormalParameter where a plain pair had been used.
203
-
204
- == Ruby D-Bus 0.2.12 - 2010-01-24
205
-
206
- Bug fixes:
207
-
208
- * Fixed a long-standing bug where a service activated by the bus
209
- would fail with "undefined method `get_node' for nil:NilClass"
210
- (Tickets#25 and #29).
211
-
212
- == Ruby D-Bus 0.2.11 - 2009-11-12
213
-
214
- Features:
215
-
216
- * Added DBus::Service#unexport (da1l6).
217
-
218
- Bug fixes:
219
-
220
- * Return org.freedesktop.DBus.Error.UnknownObject instead of crashing
221
- (Ticket#31).
222
- * Rescue exceptions in dbus_methods and reply with DBus errors instead of
223
- crashing (da1l6).
224
- * Better exception messages when sending nil, or mismatched structs.
225
- * Call mktemp without --tmpdir, to build on older distros.
226
-
227
- == Ruby D-Bus 0.2.10 - 2009-09-10
228
-
229
- Bug fixes:
230
-
231
- * DBus::Service.exists? fixed (Murat Demirten).
232
- * Ruby 1.9 fixes (Jedediah Smith).
233
- * Fixed an endless sleep in DBus::Main.run (bnc#537401).
234
- * Added details to PacketMarshaller exceptions (bnc#538050).
235
-
236
- (bnc#FOO refers to https://bugzilla.novell.com/show_bug.cgi?id=FOO )
237
-
238
- == Ruby D-Bus "I'm not dead" 0.2.9 - 2009-08-26
239
-
240
- Thank you to Paul and Arnaud for starting the project. I, Martin
241
- Vidner, am continuing with it on GitHub.
242
-
243
- * Fixed passing an array through a variant (no ticket).
244
- * Fixed marshalling "av" (Ticket #30).
245
- * Fixed variant alignment (Ticket #27).
246
- * Added DBus::Main.quit.
247
- * Mention the DBus interface in a NameError for an unknown method.
248
- * Fixed ruby-1.9 "warning: default `to_a' will be obsolete".
249
- * Added Rakefile and gemspec.
250
-
251
- == Ruby D-Bus "Thanks for all the fish" 0.2.1 - 2007-12-29
252
-
253
- More bugfixes, mostly supplied by users supplying us with patches. Thanks!
254
-
255
- * Support for new types added:
256
- - dict (courtesy of Drake Wilson);
257
- - double (courtesy of Patrick Sissons);
258
- - variant.
259
- * Improved exception raise support (courtesy of Sjoerd Simons,
260
- Patrick Sissons).
261
- * Some polish (removed debug output, solved unnecessary warnings).
262
- * Documentation updates, example fixes and updates.
263
-
264
- == Ruby D-Bus "Almost live from DebConf 7" 0.2.0 - 2007-06-02
265
-
266
- Again a bugfix release, also meant to be the public release
267
- for exploratory purposes. New in 0.2.0:
268
-
269
- * Complete tutorial revamp.
270
- * Relicensed to the LGPL.
271
-
272
- == Ruby D-Bus "Release Often" 0.1.1 - 2007-04-23
273
-
274
- Bugfix release. Fixes hardcoded string for requesting bus names,
275
- found by Rudi Cilibrasi.
276
-
277
- == Ruby D-Bus "Happy Birthday Paul" 0.1.0 - 2007-04-17
278
-
279
- First release. Supports most of D-Bus' features.