ruby-dbus 0.12.0 → 0.13.0

Sign up to get free protection for your applications and to get access to all the features.
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.