ruby-dbus 0.5.0 → 0.6.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/NEWS +9 -0
- data/README +5 -16
- data/VERSION +1 -1
- data/doc/tutorial/index.html +9 -0
- data/doc/tutorial/index.markdown +13 -0
- data/examples/gdbus/gdbus +0 -0
- data/examples/no-introspect/call-overloaded.rb +22 -0
- data/examples/no-introspect/nm-test.rb +0 -0
- data/examples/no-introspect/tracker-test.rb +0 -0
- data/examples/rhythmbox/playpause.rb +0 -0
- data/examples/service/call_service.rb +0 -0
- data/examples/service/service_newapi.rb +0 -0
- data/examples/simple/call_introspect.rb +0 -0
- data/examples/simple/properties.rb +19 -0
- data/examples/utils/listnames.rb +0 -0
- data/examples/utils/notify.rb +0 -0
- data/lib/dbus.rb +0 -8
- data/lib/dbus/bus.rb +2 -2
- data/lib/dbus/export.rb +10 -18
- data/lib/dbus/introspect.rb +17 -0
- data/lib/dbus/message.rb +1 -1
- data/ruby-dbus.gemspec +1 -1
- data/test/property_test.rb +55 -0
- data/test/server_robustness_test.rb +31 -0
- data/test/service_newapi.rb +69 -1
- metadata +8 -5
data/NEWS
CHANGED
@@ -5,6 +5,15 @@ Note about bug numbers:
|
|
5
5
|
Issue#1 - http://github.com/mvidner/ruby-dbus/issues#issue/1
|
6
6
|
bnc#1 - https://bugzilla.novell.com/show_bug.cgi?id=1
|
7
7
|
|
8
|
+
== Ruby D-Bus 0.6.0 - 2010-12-11
|
9
|
+
|
10
|
+
Features:
|
11
|
+
* Clients can access properties conveniently (Ticket#28).
|
12
|
+
|
13
|
+
Bug fixes:
|
14
|
+
* Service won't crash whan handling an unknown method or interface (Ticket#31).
|
15
|
+
* Don't send an invalid error name when it originates from a NameError.
|
16
|
+
|
8
17
|
== Ruby D-Bus 0.5.0 - 2010-11-07
|
9
18
|
|
10
19
|
Features:
|
data/README
CHANGED
@@ -5,23 +5,11 @@ D-Bus system can be used in the Ruby programming language.
|
|
5
5
|
|
6
6
|
== Requirements
|
7
7
|
|
8
|
-
* Ruby 1.8 (>= 1.8.6?)
|
9
|
-
|
10
|
-
Optionally, for generating the tutorial:
|
11
|
-
* Webgen (>= 0.4)
|
8
|
+
* Ruby 1.8 (>= 1.8.6?) or 1.9
|
12
9
|
|
13
10
|
== Installation
|
14
11
|
|
15
|
-
|
16
|
-
2. Move to top-level directory and type:
|
17
|
-
|
18
|
-
$ ruby setup.rb config
|
19
|
-
$ ruby setup.rb setup
|
20
|
-
($ su)
|
21
|
-
# ruby setup.rb install
|
22
|
-
|
23
|
-
You can also install files in your favorite directory by
|
24
|
-
supplying setup.rb some options. Try "ruby setup.rb --help".
|
12
|
+
* gem install ruby-dbus
|
25
13
|
|
26
14
|
== Feature
|
27
15
|
|
@@ -42,8 +30,9 @@ Ruby D-Bus currently supports the following features:
|
|
42
30
|
== Usage
|
43
31
|
|
44
32
|
See some of the examples in the examples/ subdirectory of the tarball.
|
45
|
-
Also, check out the included tutorial (in
|
46
|
-
or view it online on
|
33
|
+
Also, check out the included tutorial (in Markdown format) in doc/tutorial/
|
34
|
+
or view it online on
|
35
|
+
https://github.com/mvidner/ruby-dbus/blob/master/doc/tutorial/index.markdown .
|
47
36
|
|
48
37
|
== License
|
49
38
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.6.0
|
data/doc/tutorial/index.html
CHANGED
@@ -164,6 +164,15 @@ access it with <code>bus.proxy</code> method. For example, you can retrieve an a
|
|
164
164
|
exported service names of a bus like this:</p>
|
165
165
|
<pre><code>bus.proxy.ListNames[0]
|
166
166
|
</code></pre>
|
167
|
+
<h2>Properties</h2>
|
168
|
+
<p>Some D-Bus objects provide access to properties. They are accessed by
|
169
|
+
treating a proxy interface as a hash:</p>
|
170
|
+
<pre><code>nm_iface = network_manager_object["org.freedesktop.NetworkManager"]
|
171
|
+
enabled = nm_iface["WirelessEnabled"]
|
172
|
+
puts "Wireless is " + (enabled ? "enabled":"disabled")
|
173
|
+
puts "Toggling wireless"
|
174
|
+
nm_iface["WirelessEnabled"] = ! enabled
|
175
|
+
</code></pre>
|
167
176
|
<h2>Calling a method asynchronously</h2>
|
168
177
|
<p>D-Bus is <em>asynchronous</em>. This means that you do not have to wait for a
|
169
178
|
reply when you send a message. When you call a remote method that takes a
|
data/doc/tutorial/index.markdown
CHANGED
@@ -229,6 +229,19 @@ exported service names of a bus like this:
|
|
229
229
|
|
230
230
|
bus.proxy.ListNames[0]
|
231
231
|
|
232
|
+
Properties
|
233
|
+
----------
|
234
|
+
|
235
|
+
Some D-Bus objects provide access to properties. They are accessed by
|
236
|
+
treating a proxy interface as a hash:
|
237
|
+
|
238
|
+
nm_iface = network_manager_object["org.freedesktop.NetworkManager"]
|
239
|
+
enabled = nm_iface["WirelessEnabled"]
|
240
|
+
puts "Wireless is " + (enabled ? "enabled":"disabled")
|
241
|
+
puts "Toggling wireless"
|
242
|
+
nm_iface["WirelessEnabled"] = ! enabled
|
243
|
+
|
244
|
+
|
232
245
|
Calling a method asynchronously
|
233
246
|
-------------------------------
|
234
247
|
|
data/examples/gdbus/gdbus
CHANGED
File without changes
|
@@ -0,0 +1,22 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# How to call overloaded methods.
|
4
|
+
|
5
|
+
require 'dbus'
|
6
|
+
|
7
|
+
bus = DBus::SessionmBus.instance
|
8
|
+
|
9
|
+
konsole_svc = bus["org.freedesktop.konsole"]
|
10
|
+
konsole_obj = konsole_svc["/Konsole"]
|
11
|
+
poi = DBus::ProxyObjectInterface.new(konsole_obj, "org.kde.konsole.Konsole")
|
12
|
+
|
13
|
+
|
14
|
+
begin
|
15
|
+
poi.define_method("getDevices", "") # NM 0.6
|
16
|
+
p poi.getDevices
|
17
|
+
rescue Exception
|
18
|
+
poi.define_method("GetDevices", "") # NM 0.7
|
19
|
+
p poi.GetDevices
|
20
|
+
end
|
21
|
+
|
22
|
+
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,19 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
require 'dbus'
|
3
|
+
|
4
|
+
bus = DBus::SystemBus.instance
|
5
|
+
nm_service = bus["org.freedesktop.NetworkManager"]
|
6
|
+
network_manager_object = nm_service.object("/org/freedesktop/NetworkManager")
|
7
|
+
network_manager_object.introspect
|
8
|
+
nm_iface = network_manager_object["org.freedesktop.NetworkManager"]
|
9
|
+
|
10
|
+
# read a property
|
11
|
+
enabled = nm_iface["WirelessEnabled"]
|
12
|
+
if enabled
|
13
|
+
puts "Wireless is enabled"
|
14
|
+
else
|
15
|
+
puts "Wireless is disabled"
|
16
|
+
end
|
17
|
+
puts "Toggling wireless"
|
18
|
+
# write a property
|
19
|
+
nm_iface["WirelessEnabled"] = ! enabled
|
data/examples/utils/listnames.rb
CHANGED
File without changes
|
data/examples/utils/notify.rb
CHANGED
File without changes
|
data/lib/dbus.rb
CHANGED
@@ -64,14 +64,6 @@ module DBus
|
|
64
64
|
class IncompleteBufferException < Exception
|
65
65
|
end
|
66
66
|
|
67
|
-
# Exception raised when an interface is not implemented.
|
68
|
-
class InterfaceNotImplemented < Exception
|
69
|
-
end
|
70
|
-
|
71
|
-
# Exception raised when an method is not found in the interface.
|
72
|
-
class MethodNotInInterface < Exception
|
73
|
-
end
|
74
|
-
|
75
67
|
# Exception raised when a method has not been implemented (yet).
|
76
68
|
class MethodNotImplemented < Exception
|
77
69
|
end
|
data/lib/dbus/bus.rb
CHANGED
@@ -427,8 +427,8 @@ module DBus
|
|
427
427
|
pof = DBus::ProxyObjectFactory.new(data, self, dest, path)
|
428
428
|
return pof.build
|
429
429
|
else
|
430
|
-
introspect_data(dest, path) do |
|
431
|
-
yield(DBus::ProxyObjectFactory.new(
|
430
|
+
introspect_data(dest, path) do |async_data|
|
431
|
+
yield(DBus::ProxyObjectFactory.new(async_data, self, dest, path).build)
|
432
432
|
end
|
433
433
|
end
|
434
434
|
end
|
data/lib/dbus/export.rb
CHANGED
@@ -11,18 +11,6 @@
|
|
11
11
|
require 'thread'
|
12
12
|
|
13
13
|
module DBus
|
14
|
-
# Exception raised when an interface cannot be found in an object.
|
15
|
-
class InterfaceNotInObject < Exception
|
16
|
-
end
|
17
|
-
|
18
|
-
# Exception raised when a method cannot be found in an inferface.
|
19
|
-
class MethodNotInInterface < Exception
|
20
|
-
end
|
21
|
-
|
22
|
-
# Method raised when a method returns an invalid return type.
|
23
|
-
class InvalidReturnType < Exception
|
24
|
-
end
|
25
|
-
|
26
14
|
# Exported object type
|
27
15
|
# = Exportable D-Bus object class
|
28
16
|
#
|
@@ -55,14 +43,18 @@ module DBus
|
|
55
43
|
def dispatch(msg)
|
56
44
|
case msg.message_type
|
57
45
|
when Message::METHOD_CALL
|
58
|
-
if not self.intfs[msg.interface]
|
59
|
-
raise InterfaceNotInObject, msg.interface
|
60
|
-
end
|
61
|
-
meth = self.intfs[msg.interface].methods[msg.member.to_sym]
|
62
|
-
raise MethodNotInInterface if not meth
|
63
|
-
methname = Object.make_method_name(msg.interface, msg.member)
|
64
46
|
reply = nil
|
65
47
|
begin
|
48
|
+
if not self.intfs[msg.interface]
|
49
|
+
raise DBus.error("org.freedesktop.DBus.Error.UnknownMethod"),
|
50
|
+
"Interface \"#{msg.interface}\" of object \"#{msg.path}\" doesn't exist"
|
51
|
+
end
|
52
|
+
meth = self.intfs[msg.interface].methods[msg.member.to_sym]
|
53
|
+
if not meth
|
54
|
+
raise DBus.error("org.freedesktop.DBus.Error.UnknownMethod"),
|
55
|
+
"Method \"#{msg.member}\" on interface \"#{msg.interface}\" of object \"#{msg.path}\" doesn't exist"
|
56
|
+
end
|
57
|
+
methname = Object.make_method_name(msg.interface, msg.member)
|
66
58
|
retdata = method(methname).call(*msg.params)
|
67
59
|
retdata = [*retdata]
|
68
60
|
|
data/lib/dbus/introspect.rb
CHANGED
@@ -422,6 +422,23 @@ module DBus
|
|
422
422
|
bus.add_match(mr) { |msg| block.call(*msg.params) }
|
423
423
|
end
|
424
424
|
end
|
425
|
+
|
426
|
+
PROPERTY_INTERFACE = "org.freedesktop.DBus.Properties"
|
427
|
+
|
428
|
+
# Read a property.
|
429
|
+
def [](propname)
|
430
|
+
self.object[PROPERTY_INTERFACE].Get(self.name, propname)[0]
|
431
|
+
end
|
432
|
+
|
433
|
+
# Write a property.
|
434
|
+
def []=(propname, value)
|
435
|
+
self.object[PROPERTY_INTERFACE].Set(self.name, propname, value)
|
436
|
+
end
|
437
|
+
|
438
|
+
# Read all properties at once, as a hash.
|
439
|
+
def all_properties
|
440
|
+
self.object[PROPERTY_INTERFACE].GetAll(self.name)[0]
|
441
|
+
end
|
425
442
|
end # class ProxyObjectInterface
|
426
443
|
|
427
444
|
# D-Bus proxy object class
|
data/lib/dbus/message.rb
CHANGED
data/ruby-dbus.gemspec
CHANGED
@@ -10,7 +10,7 @@ GEMSPEC = Gem::Specification.new do |s|
|
|
10
10
|
s.version = File.read("VERSION").strip
|
11
11
|
s.author = "Ruby DBus Team"
|
12
12
|
s.email = "ruby-dbus-devel@lists.luon.net"
|
13
|
-
s.homepage = "
|
13
|
+
s.homepage = "https://trac.luon.net/ruby-dbus"
|
14
14
|
s.files = FileList["{doc/tutorial,examples,lib,test}/**/*", "Rakefile", "ruby-dbus.gemspec", "VERSION"].to_a.sort
|
15
15
|
s.require_path = "lib"
|
16
16
|
s.has_rdoc = true
|
@@ -0,0 +1,55 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require "test/unit"
|
3
|
+
require "dbus"
|
4
|
+
|
5
|
+
class PropertyTest < Test::Unit::TestCase
|
6
|
+
def setup
|
7
|
+
session_bus = DBus::SessionBus.instance
|
8
|
+
svc = session_bus.service("org.ruby.service")
|
9
|
+
@obj = svc.object("/org/ruby/MyInstance")
|
10
|
+
@obj.introspect
|
11
|
+
@iface = @obj["org.ruby.SampleInterface"]
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_property_reading
|
15
|
+
assert_equal "READ ME", @iface["ReadMe"]
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_property_nonreading
|
19
|
+
e = assert_raises DBus::Error do
|
20
|
+
@iface["WriteMe"]
|
21
|
+
end
|
22
|
+
assert_match(/not readable/, e.to_s)
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_property_writing
|
26
|
+
@iface["ReadOrWriteMe"] = "VALUE"
|
27
|
+
assert_equal "VALUE", @iface["ReadOrWriteMe"]
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_property_nonwriting
|
31
|
+
e = assert_raises DBus::Error do
|
32
|
+
@iface["ReadMe"] = "WROTE"
|
33
|
+
end
|
34
|
+
assert_match(/not writable/, e.to_s)
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_get_all
|
38
|
+
all = @iface.all_properties
|
39
|
+
assert_equal ["ReadMe", "ReadOrWriteMe"], all.keys.sort
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_unknown_property_reading
|
43
|
+
e = assert_raises DBus::Error do
|
44
|
+
@iface["Spoon"]
|
45
|
+
end
|
46
|
+
assert_match(/not found/, e.to_s)
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_unknown_property_writing
|
50
|
+
e = assert_raises DBus::Error do
|
51
|
+
@iface["Spoon"] = "FORK"
|
52
|
+
end
|
53
|
+
assert_match(/not found/, e.to_s)
|
54
|
+
end
|
55
|
+
end
|
@@ -38,4 +38,35 @@ class ServerRobustnessTest < Test::Unit::TestCase
|
|
38
38
|
rescue DBus::Error => e
|
39
39
|
assert_no_match(/timeout/, e.to_s)
|
40
40
|
end
|
41
|
+
|
42
|
+
def test_a_method_that_raises_name_error
|
43
|
+
obj = @svc.object "/org/ruby/MyInstance"
|
44
|
+
obj.introspect
|
45
|
+
obj.default_iface = "org.ruby.SampleInterface"
|
46
|
+
obj.will_raise_name_error
|
47
|
+
assert false, "should have raised"
|
48
|
+
rescue DBus::Error => e
|
49
|
+
assert_no_match(/timeout/, e.to_s)
|
50
|
+
end
|
51
|
+
|
52
|
+
# https://trac.luon.net/ruby-dbus/ticket/31#comment:3
|
53
|
+
def test_no_such_method_without_introspection
|
54
|
+
obj = @svc.object "/org/ruby/MyInstance"
|
55
|
+
ifc = DBus::ProxyObjectInterface.new(obj, "org.ruby.SampleInterface")
|
56
|
+
ifc.define_method("not_the_answer", "out n:i")
|
57
|
+
ifc.not_the_answer
|
58
|
+
assert false, "should have raised"
|
59
|
+
rescue DBus::Error => e
|
60
|
+
assert_no_match(/timeout/, e)
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_no_such_interface_without_introspection
|
64
|
+
obj = @svc.object "/org/ruby/MyInstance"
|
65
|
+
ifc = DBus::ProxyObjectInterface.new(obj, "org.ruby.NoSuchInterface")
|
66
|
+
ifc.define_method("the_answer", "out n:i")
|
67
|
+
ifc.the_answer
|
68
|
+
assert false, "should have raised"
|
69
|
+
rescue DBus::Error => e
|
70
|
+
assert_no_match(/timeout/, e)
|
71
|
+
end
|
41
72
|
end
|
data/test/service_newapi.rb
CHANGED
@@ -9,9 +9,18 @@ def d(msg)
|
|
9
9
|
puts "#{$$} #{msg}" if $DEBUG
|
10
10
|
end
|
11
11
|
|
12
|
+
PROPERTY_INTERFACE = "org.freedesktop.DBus.Properties"
|
13
|
+
|
12
14
|
class Test < DBus::Object
|
15
|
+
INTERFACE = "org.ruby.SampleInterface"
|
16
|
+
def initialize(path)
|
17
|
+
super path
|
18
|
+
@read_me = "READ ME"
|
19
|
+
@read_or_write_me = "READ OR WRITE ME"
|
20
|
+
end
|
21
|
+
|
13
22
|
# Create an interface aggregating all upcoming dbus_method defines.
|
14
|
-
dbus_interface
|
23
|
+
dbus_interface INTERFACE do
|
15
24
|
dbus_method :hello, "in name:s, in name2:s" do |name, name2|
|
16
25
|
puts "hello(#{name}, #{name2})"
|
17
26
|
end
|
@@ -40,6 +49,10 @@ class Test < DBus::Object
|
|
40
49
|
raise DBus.error, "failed as designed"
|
41
50
|
end
|
42
51
|
|
52
|
+
dbus_method :will_raise_name_error, "" do
|
53
|
+
"foo".frobnicate
|
54
|
+
end
|
55
|
+
|
43
56
|
dbus_method :Error, "in name:s, in description:s" do |name, description|
|
44
57
|
raise DBus.error(name), description
|
45
58
|
end
|
@@ -81,6 +94,61 @@ class Test < DBus::Object
|
|
81
94
|
|
82
95
|
dbus_signal :LongTaskEnd
|
83
96
|
end
|
97
|
+
|
98
|
+
# Properties:
|
99
|
+
# ReadMe:string, returns "READ ME" at first, then what WriteMe received
|
100
|
+
# WriteMe:string
|
101
|
+
# ReadOrWriteMe:string, returns "READ OR WRITE ME" at first
|
102
|
+
dbus_interface PROPERTY_INTERFACE do
|
103
|
+
dbus_method :Get, "in interface:s, in propname:s, out value:v" do |interface, propname|
|
104
|
+
if interface == INTERFACE
|
105
|
+
if propname == "ReadMe"
|
106
|
+
[@read_me]
|
107
|
+
elsif propname == "ReadOrWriteMe"
|
108
|
+
[@read_or_write_me]
|
109
|
+
elsif propname == "WriteMe"
|
110
|
+
raise DBus.error("org.freedesktop.DBus.Error.InvalidArgs"), "Property '#{interface}.#{propname}' (on object '#{@path}') is not readable"
|
111
|
+
else
|
112
|
+
raise DBus.error("org.freedesktop.DBus.Error.InvalidArgs"), "Property '#{interface}.#{propname}' not found on object '#{@path}'"
|
113
|
+
end
|
114
|
+
else
|
115
|
+
raise DBus.error("org.freedesktop.DBus.Error.UnknownInterface"), "Interface '#{interface}' not found on object '#{@path}'"
|
116
|
+
end
|
117
|
+
# what should happen for unknown properties
|
118
|
+
# plasma: InvalidArgs (propname), UnknownInterface (interface)
|
119
|
+
end
|
120
|
+
|
121
|
+
dbus_method :Set, "in interface:s, in propname:s, in value:v" do |interface, propname, value|
|
122
|
+
if interface == INTERFACE
|
123
|
+
if propname == "ReadMe"
|
124
|
+
raise DBus.error("org.freedesktop.DBus.Error.InvalidArgs"), "Property '#{interface}.#{propname}' (on object '#{@path}') is not writable"
|
125
|
+
elsif propname == "ReadOrWriteMe"
|
126
|
+
@read_or_write_me = value
|
127
|
+
self.PropertiesChanged(interface, {propname => value}, [])
|
128
|
+
elsif propname == "WriteMe"
|
129
|
+
@read_me = value
|
130
|
+
self.PropertiesChanged(interface, {"ReadMe" => value}, [])
|
131
|
+
else
|
132
|
+
raise DBus.error("org.freedesktop.DBus.Error.InvalidArgs"), "Property '#{interface}.#{propname}' not found on object '#{@path}'"
|
133
|
+
end
|
134
|
+
else
|
135
|
+
raise DBus.error("org.freedesktop.DBus.Error.UnknownInterface"), "Interface '#{interface}' not found on object '#{@path}'"
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
dbus_method :GetAll, "in interface:s, out value:a{sv}" do |interface|
|
140
|
+
if interface == INTERFACE
|
141
|
+
[ {
|
142
|
+
"ReadMe" => @read_me,
|
143
|
+
"ReadOrWriteMe" =>@read_or_write_me,
|
144
|
+
} ]
|
145
|
+
else
|
146
|
+
raise DBus.error("org.freedesktop.DBus.Error.UnknownInterface"), "Interface '#{interface}' not found on object '#{@path}'"
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
dbus_signal :PropertiesChanged, "interface:s, changed_properties:a{sv}, invalidated_properties:as"
|
151
|
+
end
|
84
152
|
end
|
85
153
|
|
86
154
|
class Derived < Test
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-dbus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 7
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
8
|
+
- 6
|
9
9
|
- 0
|
10
|
-
version: 0.
|
10
|
+
version: 0.6.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Ruby DBus Team
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-
|
18
|
+
date: 2010-12-10 00:00:00 +01:00
|
19
19
|
default_executable:
|
20
20
|
dependencies: []
|
21
21
|
|
@@ -37,12 +37,14 @@ files:
|
|
37
37
|
- examples/gdbus/gdbus
|
38
38
|
- examples/gdbus/gdbus.glade
|
39
39
|
- examples/gdbus/launch.sh
|
40
|
+
- examples/no-introspect/call-overloaded.rb
|
40
41
|
- examples/no-introspect/nm-test.rb
|
41
42
|
- examples/no-introspect/tracker-test.rb
|
42
43
|
- examples/rhythmbox/playpause.rb
|
43
44
|
- examples/service/call_service.rb
|
44
45
|
- examples/service/service_newapi.rb
|
45
46
|
- examples/simple/call_introspect.rb
|
47
|
+
- examples/simple/properties.rb
|
46
48
|
- examples/utils/listnames.rb
|
47
49
|
- examples/utils/notify.rb
|
48
50
|
- lib/dbus.rb
|
@@ -63,6 +65,7 @@ files:
|
|
63
65
|
- test/bus_driver_test.rb
|
64
66
|
- test/dbus-launch-simple
|
65
67
|
- test/dbus-limited-session.conf
|
68
|
+
- test/property_test.rb
|
66
69
|
- test/server_robustness_test.rb
|
67
70
|
- test/server_test.rb
|
68
71
|
- test/service_newapi.rb
|
@@ -80,7 +83,7 @@ files:
|
|
80
83
|
- README
|
81
84
|
- NEWS
|
82
85
|
has_rdoc: true
|
83
|
-
homepage:
|
86
|
+
homepage: https://trac.luon.net/ruby-dbus
|
84
87
|
licenses: []
|
85
88
|
|
86
89
|
post_install_message:
|