circus-deployment 0.0.1 → 0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -10,7 +10,10 @@ module Circus
10
10
 
11
11
  def prepare_for_deploy(logger, overlay_dir)
12
12
  # Build the application
13
- run_external(logger, 'Compile application', "cd #{@dir}; make")
13
+ if File.exists?(File.join(@dir, 'Makefile'))
14
+ logger.info("Compiling #{@name}")
15
+ run_external(logger, 'Compile application', "cd #{@dir}; make")
16
+ end
14
17
  end
15
18
  end
16
19
  end
@@ -0,0 +1,117 @@
1
+ require 'rexml/document'
2
+ require 'erb'
3
+
4
+ module Circus
5
+ module Profiles
6
+ class MavenWebApp < Base
7
+ MAVEN_WEBAPP_PROPERTY='maven-webapp'
8
+
9
+ # Checks if this is a shell applcation. Will accept the application if it
10
+ # has a file named <name>.sh, or has a 'shell-app' property describing the entry point.
11
+ def self.accepts?(name, dir, props)
12
+ pom_path = File.join(dir, "pom.xml")
13
+
14
+ return true if props.include? MAVEN_WEBAPP_PROPERTY
15
+ return false unless File.exists?(pom_path)
16
+
17
+ pom_content = REXML::Document.new(File.new(pom_path))
18
+ packaging_el = pom_content.root.elements['packaging']
19
+ return false unless packaging_el
20
+
21
+ packaging_el.text.strip == 'war'
22
+ end
23
+
24
+ attr_reader :app_final_name
25
+
26
+ def initialize(name, dir, props)
27
+ super(name, dir, props)
28
+
29
+ @app_final_name = props[MAVEN_WEBAPP_PROPERTY] || detect_app_name
30
+ end
31
+
32
+ # The name of this profile
33
+ def name
34
+ "maven-war"
35
+ end
36
+
37
+ def dev_run_script_content
38
+ shell_run_script do
39
+ <<-EOT
40
+ cd #{@dir}
41
+ exec mvn jetty:run
42
+ EOT
43
+ end
44
+ end
45
+
46
+ def prepare_for_deploy(logger, overlay_dir)
47
+ # Build the maven package, then copy the output into the overlay directory
48
+ logger.info("Building maven application #{@name}")
49
+ return false unless run_external(logger, 'Perform maven packaging', "cd #{@dir}; mvn package -Dmaven.test.skip=true")
50
+
51
+ logger.info("Expanding artifact #{app_final_name}.war")
52
+ final_full_path = File.expand_path("target/#{app_final_name}.war")
53
+ return false unless run_external(logger,
54
+ 'Expand application artifact',
55
+ "mkdir #{overlay_dir}/#{@name} && unzip #{@dir}/target/#{app_final_name}.war -d #{overlay_dir}/#{@name}/")
56
+
57
+ logger.info("Generating configuration files for #{@name}")
58
+ write_template('maven_webapp_jetty.xml.erb', "#{overlay_dir}/jetty.xml")
59
+ write_template('maven_webapp_jetty_app.xml.erb', "#{overlay_dir}/jetty-app.xml")
60
+ File.open("#{overlay_dir}/jetty.properties", 'w') do |f|
61
+ f << "jetty.home=/opt/jetty-7.1"
62
+ end
63
+
64
+ true
65
+ end
66
+
67
+ def deploy_run_script_content
68
+ shell_run_script do
69
+ <<-EOT
70
+ exec java -jar /opt/jetty-7.1/start.jar -Djetty.home=/opt/jetty-7.1 OPTIONS=Server,plus,jndi `pwd`/jetty.properties `pwd`/jetty.xml `pwd`/jetty-app.xml
71
+ EOT
72
+ end
73
+ end
74
+
75
+ def package_base_dir?
76
+ false
77
+ end
78
+
79
+ private
80
+ def listen_port
81
+ @props['web-app-port'] || 8130
82
+ end
83
+
84
+ def amqp_connection_factories
85
+ @props['amqp-connections'] || []
86
+ end
87
+ def datasources
88
+ @props['datasources'] || []
89
+ end
90
+ def env_entries
91
+ @props['env-entries'] || []
92
+ end
93
+
94
+ def detect_app_name
95
+ effective_pom_path = "/tmp/#{name}-effective.pom"
96
+ `cd #{@dir}; mvn help:effective-pom -Doutput=#{effective_pom_path}`
97
+ unless $? == 0
98
+ raise "Failed to determine effective pom for maven webapp act #{name}"
99
+ end
100
+
101
+ pom_content = REXML::Document.new(File.new(effective_pom_path))
102
+ pom_content.root.elements['build/finalName'].text.strip
103
+ end
104
+
105
+ def write_template(template_name, out_name)
106
+ template_path = File.expand_path("../#{template_name}", __FILE__)
107
+ template_erb = ERB.new(File.read template_path)
108
+ template_erb.filename = template_path
109
+ File.open(out_name, 'w') do |f|
110
+ f.write(template_erb.result(binding))
111
+ end
112
+ end
113
+ end
114
+
115
+ PROFILES << MavenWebApp
116
+ end
117
+ end
@@ -0,0 +1,74 @@
1
+ <?xml version="1.0"?>
2
+ <!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
3
+
4
+ <!-- =============================================================== -->
5
+ <!-- Configure the Jetty Server -->
6
+ <!-- -->
7
+ <!-- Documentation of this file format can be found at: -->
8
+ <!-- http://wiki.eclipse.org/Jetty/Reference/jetty.xml_syntax -->
9
+ <!-- -->
10
+ <!-- Additional configuration files are available in $JETTY_HOME/etc -->
11
+ <!-- and can be mixed in. For example: -->
12
+ <!-- java -jar start.jar etc/jetty.xml etc/jetty-ssl.xml -->
13
+ <!-- -->
14
+ <!-- See start.ini file for the default configuraton files -->
15
+ <!-- =============================================================== -->
16
+
17
+
18
+ <Configure id="Server" class="org.eclipse.jetty.server.Server">
19
+ <!-- =========================================================== -->
20
+ <!-- Server Thread Pool -->
21
+ <!-- =========================================================== -->
22
+ <Set name="ThreadPool">
23
+ <!-- Default queued blocking threadpool -->
24
+ <New class="org.eclipse.jetty.util.thread.QueuedThreadPool">
25
+ <Set name="minThreads">10</Set>
26
+ <Set name="maxThreads">200</Set>
27
+ </New>
28
+ </Set>
29
+
30
+ <!-- =========================================================== -->
31
+ <!-- Set connectors -->
32
+ <!-- =========================================================== -->
33
+
34
+ <Call name="addConnector">
35
+ <Arg>
36
+ <New class="org.eclipse.jetty.server.nio.SelectChannelConnector">
37
+ <Set name="host"><Property name="jetty.host" /></Set>
38
+ <Set name="port"><%= listen_port %></Set>
39
+ <Set name="maxIdleTime">300000</Set>
40
+ <Set name="Acceptors">2</Set>
41
+ <Set name="statsOn">false</Set>
42
+ <!-- <Set name="confidentialPort">8443</Set> -->
43
+ <Set name="lowResourcesConnections">20000</Set>
44
+ <Set name="lowResourcesMaxIdleTime">5000</Set>
45
+ </New>
46
+ </Arg>
47
+ </Call>
48
+
49
+ <!-- =========================================================== -->
50
+ <!-- Set handler Collection Structure -->
51
+ <!-- =========================================================== -->
52
+ <Set name="handler">
53
+ <New id="Handlers" class="org.eclipse.jetty.server.handler.HandlerCollection">
54
+ <Set name="handlers">
55
+ <Array type="org.eclipse.jetty.server.Handler">
56
+ <Item>
57
+ <New id="Contexts" class="org.eclipse.jetty.server.handler.ContextHandlerCollection"/>
58
+ </Item>
59
+ <Item>
60
+ <New id="DefaultHandler" class="org.eclipse.jetty.server.handler.DefaultHandler"/>
61
+ </Item>
62
+ </Array>
63
+ </Set>
64
+ </New>
65
+ </Set>
66
+
67
+ <!-- =========================================================== -->
68
+ <!-- extra options -->
69
+ <!-- =========================================================== -->
70
+ <Set name="stopAtShutdown">true</Set>
71
+ <Set name="sendServerVersion">true</Set>
72
+ <Set name="sendDateHeader">true</Set>
73
+ <Set name="gracefulShutdown">1000</Set>
74
+ </Configure>
@@ -0,0 +1,56 @@
1
+ <?xml version="1.0"?>
2
+ <!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
3
+ <Configure id="Server" class="org.eclipse.jetty.server.Server">
4
+ <New class="org.eclipse.jetty.webapp.WebAppContext">
5
+ <Arg><Ref id="Contexts"/></Arg>
6
+ <Arg><%= @name %></Arg>
7
+ <Arg>/</Arg>
8
+
9
+ <Set name="ConfigurationClasses">
10
+ <Array type="java.lang.String">
11
+ <Item>org.eclipse.jetty.webapp.WebInfConfiguration</Item>
12
+ <Item>org.eclipse.jetty.webapp.WebXmlConfiguration</Item>
13
+ <Item>org.eclipse.jetty.webapp.MetaInfConfiguration</Item>
14
+ <Item>org.eclipse.jetty.webapp.FragmentConfiguration</Item>
15
+ <Item>org.eclipse.jetty.plus.webapp.EnvConfiguration</Item>
16
+ <Item>org.eclipse.jetty.plus.webapp.Configuration</Item>
17
+ <Item>org.eclipse.jetty.webapp.JettyWebXmlConfiguration</Item>
18
+ <Item>org.eclipse.jetty.webapp.TagLibConfiguration</Item>
19
+ </Array>
20
+ </Set>
21
+
22
+ <% amqp_connection_factories.each do |cf| %>
23
+ <New class="org.eclipse.jetty.plus.jndi.Resource">
24
+ <Arg></Arg>
25
+ <Arg><%= cf['name'] %></Arg>
26
+ <Arg>
27
+ <New class="com.rabbitmq.client.ConnectionFactory">
28
+ <Set name="host"><%= cf['host'] %></Set>
29
+ </New>
30
+ </Arg>
31
+ </New>
32
+ <% end %>
33
+
34
+ <% datasources.each do |ds| %>
35
+ <New class="org.eclipse.jetty.plus.jndi.Resource">
36
+ <Arg></Arg>
37
+ <Arg><%= ds['name'] %></Arg>
38
+ <Arg>
39
+ <New class="org.apache.commons.dbcp.BasicDataSource">
40
+ <Set name="driverClassName">org.postgresql.Driver</Set>
41
+ <Set name="url">jdbc:postgresql://localhost/<%= ds['db_name'] %>?user=<%= ds['db_user'] %>&amp;password=<%= ds['db_password'] %></Set>
42
+ </New>
43
+ </Arg>
44
+ </New>
45
+ <% end %>
46
+
47
+ <% env_entries.each do |ee| %>
48
+ <New class="org.eclipse.jetty.plus.jndi.EnvEntry">
49
+ <Arg></Arg>
50
+ <Arg><%= ee['name'] %></Arg>
51
+ <Arg type="<%= ee['type'] %>"><%= ee['value']%></Arg>
52
+ <Arg type="boolean">true</Arg>
53
+ </New>
54
+ <% end %>
55
+ </New>
56
+ </Configure>
@@ -10,11 +10,11 @@ module Circus
10
10
 
11
11
  def prepare_for_deploy(logger, overlay_dir)
12
12
  # Build the virtualenv
13
- if has_depsfile?
14
- unless File.exists? "#{@dir}/vendor"
15
- return false unless run_external(logger, "Create virtualenv", "cd #{@dir}; virtualenv --no-site-packages vendor")
16
- end
13
+ unless File.exists? "#{@dir}/vendor"
14
+ return false unless run_external(logger, "Create virtualenv", "cd #{@dir}; virtualenv --no-site-packages vendor")
15
+ end
17
16
 
17
+ if has_depsfile?
18
18
  File.read(depsfile_fn).lines.each do |dep|
19
19
  return false unless run_external(logger, "Install dep #{dep}",
20
20
  "cd #{@dir}; vendor/bin/easy_install -q \"#{dep.strip}\"")
@@ -36,4 +36,4 @@ module Circus
36
36
  end
37
37
  end
38
38
  end
39
- end
39
+ end
@@ -35,17 +35,21 @@ module Circus
35
35
  def deploy_run_script_content
36
36
  shell_run_script do
37
37
  <<-EOT
38
- exec bundle exec vendor/bin/thin -R #{@rackup_name} -p #{listen_port} start
38
+ exec bundle exec thin -R #{@rackup_name} -p #{listen_port} start
39
39
  EOT
40
40
  end
41
41
  end
42
42
 
43
- def extra_dirs
44
- if has_gemfile?
45
- ["#{@dir}/.bundle"]
46
- else
47
- []
48
- end
43
+ # Describes the requirements of the deployed application. Rack applications automatically
44
+ # have an environment system property applied for RACK_ENV and RAILS_ENV
45
+ def requirements
46
+ res = super
47
+
48
+ res['system-properties'] ||= {}
49
+ res['system-properties']['RACK_ENV'] = 'production'
50
+ res['system-properties']['RAILS_ENV'] = 'production'
51
+
52
+ res
49
53
  end
50
54
 
51
55
  private
@@ -5,21 +5,30 @@ require 'bundler/circus_util'
5
5
  module Circus
6
6
  module Profiles
7
7
  class RubyBase < Base
8
- BUNDLER_TOOL=File.expand_path('../../../bundler/circus_bundler.rb', __FILE__)
8
+ BUNDLER_TOOL=File.expand_path('../../../bundler/gem_cacher.rb', __FILE__)
9
9
 
10
10
  def initialize(name, dir, props)
11
11
  super(name, dir, props)
12
12
  end
13
13
 
14
- # No dev preparation required. Don't override dev_run_script_content, since it is the
14
+ # Do basic gemfile preparation for dev. Don't override dev_run_script_content, since it is the
15
15
  # same as the deployment variant.
16
- def prepare_for_dev(logger, run_dir); true; end
16
+ def prepare_for_dev(logger, run_dir)
17
+ if has_gemfile?
18
+ # TODO: Correct behaviour if working in the presence of an existing bundler environment
19
+ run_external(logger, 'gem installation', "cd #{@dir}; bundle check || bundle install")
20
+ end
21
+
22
+ true
23
+ end
17
24
 
18
25
  def prepare_for_deploy(logger, overlay_dir)
19
26
  # Run the gem bundler if necessary
20
27
  if has_gemfile?
21
28
  logger.info("Bundling gems")
22
- run_external(logger, 'gem bundling', "cd #{@dir}; ruby #{BUNDLER_TOOL}")
29
+ return false unless run_external(logger, 'gem installation', "cd #{@dir}; bundle install")
30
+ return false unless run_external(logger, 'gem caching',
31
+ "cd #{@dir}; ruby #{BUNDLER_TOOL} && rm Gemfile.lock && bundle install vendor/bundle")
23
32
  end
24
33
 
25
34
  true
@@ -29,7 +29,8 @@ module Circus
29
29
  end
30
30
 
31
31
  def current_revision
32
- `(cd #{@dir}; git rev-parse HEAD)`.strip
32
+ result = `(cd #{@dir}; git rev-parse HEAD)`
33
+ return result.strip unless $?.exitstatus != 0
33
34
  end
34
35
 
35
36
  def write_patch(patch_fn)
@@ -1,3 +1,3 @@
1
1
  module Circus
2
- VERSION = "0.0.1"
2
+ VERSION = "0.2"
3
3
  end
metadata CHANGED
@@ -1,12 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: circus-deployment
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 15
4
5
  prerelease: false
5
6
  segments:
6
7
  - 0
7
- - 0
8
- - 1
9
- version: 0.0.1
8
+ - 2
9
+ version: "0.2"
10
10
  platform: ruby
11
11
  authors:
12
12
  - Paul Jones
@@ -14,16 +14,18 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-08-20 00:00:00 +01:00
17
+ date: 2010-11-06 00:00:00 -07:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: rspec
22
22
  prerelease: false
23
23
  requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
24
25
  requirements:
25
26
  - - ">="
26
27
  - !ruby/object:Gem::Version
28
+ hash: 3
27
29
  segments:
28
30
  - 0
29
31
  version: "0"
@@ -33,9 +35,11 @@ dependencies:
33
35
  name: thor
34
36
  prerelease: false
35
37
  requirement: &id002 !ruby/object:Gem::Requirement
38
+ none: false
36
39
  requirements:
37
40
  - - ">="
38
41
  - !ruby/object:Gem::Version
42
+ hash: 35
39
43
  segments:
40
44
  - 0
41
45
  - 13
@@ -47,9 +51,11 @@ dependencies:
47
51
  name: uuid
48
52
  prerelease: false
49
53
  requirement: &id003 !ruby/object:Gem::Requirement
54
+ none: false
50
55
  requirements:
51
56
  - - "="
52
57
  - !ruby/object:Gem::Version
58
+ hash: 13
53
59
  segments:
54
60
  - 2
55
61
  - 0
@@ -61,9 +67,11 @@ dependencies:
61
67
  name: net-ssh
62
68
  prerelease: false
63
69
  requirement: &id004 !ruby/object:Gem::Requirement
70
+ none: false
64
71
  requirements:
65
72
  - - "="
66
73
  - !ruby/object:Gem::Version
74
+ hash: 35
67
75
  segments:
68
76
  - 2
69
77
  - 0
@@ -75,9 +83,11 @@ dependencies:
75
83
  name: net-scp
76
84
  prerelease: false
77
85
  requirement: &id005 !ruby/object:Gem::Requirement
86
+ none: false
78
87
  requirements:
79
88
  - - "="
80
89
  - !ruby/object:Gem::Version
90
+ hash: 19
81
91
  segments:
82
92
  - 1
83
93
  - 0
@@ -85,6 +95,22 @@ dependencies:
85
95
  version: 1.0.2
86
96
  type: :runtime
87
97
  version_requirements: *id005
98
+ - !ruby/object:Gem::Dependency
99
+ name: json_pure
100
+ prerelease: false
101
+ requirement: &id006 !ruby/object:Gem::Requirement
102
+ none: false
103
+ requirements:
104
+ - - "="
105
+ - !ruby/object:Gem::Version
106
+ hash: 11
107
+ segments:
108
+ - 1
109
+ - 4
110
+ - 6
111
+ version: 1.4.6
112
+ type: :runtime
113
+ version_requirements: *id006
88
114
  description: Circus provides the ability to deploy multi-component applications easily
89
115
  email:
90
116
  - pauljones23@gmail.com
@@ -96,96 +122,100 @@ extra_rdoc_files: []
96
122
 
97
123
  files:
98
124
  - bin/circus
99
- - lib/circus/act.rb
100
- - lib/circus/clown_client.rb
101
- - lib/circus/actstore_client.rb
102
- - lib/circus/external_util.rb
103
- - lib/circus/profiles/shell.rb
104
- - lib/circus/profiles/django.rb
105
- - lib/circus/profiles/jekyll.rb
106
- - lib/circus/profiles/make_base.rb
107
- - lib/circus/profiles/rack.rb
108
- - lib/circus/profiles/ruby_base.rb
109
- - lib/circus/profiles/pure_py.rb
110
- - lib/circus/profiles/python_base.rb
111
- - lib/circus/profiles/pure_rb.rb
112
- - lib/circus/profiles/base.rb
113
- - lib/circus/local_config.rb
114
- - lib/circus/connection_builder.rb
125
+ - lib/bundler/patches.rb
126
+ - lib/bundler/circus_util.rb
127
+ - lib/bundler/circus_bundler.rb
128
+ - lib/bundler/gem_cacher.rb
129
+ - lib/circus/application.rb
115
130
  - lib/circus/stdout_logger.rb
116
- - lib/circus/resource_allocator_client.rb
117
- - lib/circus/repos/mercurial.rb
118
- - lib/circus/repos/git.rb
119
- - lib/circus/agents/dbus_connection.rb
131
+ - lib/circus/actstore_client.rb
132
+ - lib/circus/clown_client.rb
133
+ - lib/circus/processes/daemontools.rb
134
+ - lib/circus/act.rb
120
135
  - lib/circus/agents/dbus_logger.rb
121
- - lib/circus/agents/client.rb
122
- - lib/circus/agents/agent.rb
136
+ - lib/circus/agents/conversation.rb
137
+ - lib/circus/agents/dbus_connection.rb
123
138
  - lib/circus/agents/encoding.rb
124
139
  - lib/circus/agents/params.rb
125
140
  - lib/circus/agents/connection.rb
141
+ - lib/circus/agents/client.rb
126
142
  - lib/circus/agents/ssh_connection.rb
127
- - lib/circus/agents/logger.rb
128
- - lib/circus/agents/conversation.rb
129
- - lib/circus/cli.rb
130
- - lib/circus/application.rb
143
+ - lib/circus/connection_builder.rb
144
+ - lib/circus/booth_client.rb
131
145
  - lib/circus/profiles.rb
132
- - lib/circus/repos.rb
133
146
  - lib/circus/version.rb
134
- - lib/circus/booth_client.rb
147
+ - lib/circus/local_config.rb
135
148
  - lib/circus/booth_tool.rb
149
+ - lib/circus/cli.rb
150
+ - lib/circus/resource_allocator_client.rb
151
+ - lib/circus/external_util.rb
152
+ - lib/circus/repos/git.rb
153
+ - lib/circus/repos/mercurial.rb
154
+ - lib/circus/repos.rb
155
+ - lib/circus/profiles/rack.rb
156
+ - lib/circus/profiles/ruby_base.rb
157
+ - lib/circus/profiles/maven_webapp.rb
158
+ - lib/circus/profiles/pure_py.rb
159
+ - lib/circus/profiles/chef_stack.rb
160
+ - lib/circus/profiles/maven_webapp_jetty.xml.erb
161
+ - lib/circus/profiles/jekyll.rb
162
+ - lib/circus/profiles/make_base.rb
163
+ - lib/circus/profiles/shell.rb
164
+ - lib/circus/profiles/pure_rb.rb
165
+ - lib/circus/profiles/maven_webapp_jetty_app.xml.erb
166
+ - lib/circus/profiles/python_base.rb
167
+ - lib/circus/profiles/django.rb
168
+ - lib/circus/profiles/base.rb
136
169
  - lib/circus.rb
137
- - lib/bundler/patches.rb
138
- - lib/bundler/circus_bundler.rb
139
- - lib/bundler/circus_util.rb
140
- - vendor/ruby-dbus/doc/tutorial/src/default.template
141
- - vendor/ruby-dbus/doc/tutorial/src/10.intro.page
142
- - vendor/ruby-dbus/doc/tutorial/src/00.index.page
143
- - vendor/ruby-dbus/doc/tutorial/src/30.service.page
144
- - vendor/ruby-dbus/doc/tutorial/src/default.css
145
- - vendor/ruby-dbus/doc/tutorial/src/20.basic_client.page
146
- - vendor/ruby-dbus/setup.rb
147
- - vendor/ruby-dbus/ChangeLog
148
- - vendor/ruby-dbus/lib/dbus.rb
149
- - vendor/ruby-dbus/lib/dbus/export.rb
150
- - vendor/ruby-dbus/lib/dbus/type.rb
151
- - vendor/ruby-dbus/lib/dbus/auth.rb
152
- - vendor/ruby-dbus/lib/dbus/message.rb
153
- - vendor/ruby-dbus/lib/dbus/bus.rb
154
- - vendor/ruby-dbus/lib/dbus/marshall.rb
155
- - vendor/ruby-dbus/lib/dbus/matchrule.rb
156
- - vendor/ruby-dbus/lib/dbus/introspect.rb
157
- - vendor/ruby-dbus/README
158
- - vendor/ruby-dbus/HOWTO-RELEASE
159
- - vendor/ruby-dbus/NEWS
160
170
  - vendor/ruby-dbus/Rakefile
161
- - vendor/ruby-dbus/examples/service/service_newapi.rb
162
- - vendor/ruby-dbus/examples/service/call_service.rb
171
+ - vendor/ruby-dbus/HOWTO-RELEASE
172
+ - vendor/ruby-dbus/ChangeLog
173
+ - vendor/ruby-dbus/COPYING
174
+ - vendor/ruby-dbus/examples/utils/listnames.rb
175
+ - vendor/ruby-dbus/examples/utils/notify.rb
163
176
  - vendor/ruby-dbus/examples/simple/call_introspect.rb
164
177
  - vendor/ruby-dbus/examples/rhythmbox/playpause.rb
165
- - vendor/ruby-dbus/examples/no-introspect/nm-test.rb
166
- - vendor/ruby-dbus/examples/no-introspect/tracker-test.rb
167
178
  - vendor/ruby-dbus/examples/gdbus/gdbus
168
- - vendor/ruby-dbus/examples/gdbus/gdbus.glade
169
179
  - vendor/ruby-dbus/examples/gdbus/launch.sh
170
- - vendor/ruby-dbus/examples/utils/notify.rb
171
- - vendor/ruby-dbus/examples/utils/listnames.rb
172
- - vendor/ruby-dbus/ruby-dbus.gemspec
180
+ - vendor/ruby-dbus/examples/gdbus/gdbus.glade
181
+ - vendor/ruby-dbus/examples/service/service_newapi.rb
182
+ - vendor/ruby-dbus/examples/service/call_service.rb
183
+ - vendor/ruby-dbus/examples/no-introspect/tracker-test.rb
184
+ - vendor/ruby-dbus/examples/no-introspect/nm-test.rb
185
+ - vendor/ruby-dbus/lib/dbus.rb
186
+ - vendor/ruby-dbus/lib/dbus/bus.rb
187
+ - vendor/ruby-dbus/lib/dbus/message.rb
188
+ - vendor/ruby-dbus/lib/dbus/introspect.rb
189
+ - vendor/ruby-dbus/lib/dbus/matchrule.rb
190
+ - vendor/ruby-dbus/lib/dbus/auth.rb
191
+ - vendor/ruby-dbus/lib/dbus/marshall.rb
192
+ - vendor/ruby-dbus/lib/dbus/export.rb
193
+ - vendor/ruby-dbus/lib/dbus/type.rb
194
+ - vendor/ruby-dbus/setup.rb
195
+ - vendor/ruby-dbus/NEWS
196
+ - vendor/ruby-dbus/README
197
+ - vendor/ruby-dbus/test/variant_test.rb
198
+ - vendor/ruby-dbus/test/t6-loop.rb
173
199
  - vendor/ruby-dbus/test/server_test.rb
174
- - vendor/ruby-dbus/test/test_server
175
- - vendor/ruby-dbus/test/t1
176
200
  - vendor/ruby-dbus/test/service_newapi.rb
177
- - vendor/ruby-dbus/test/bus_driver_test.rb
178
- - vendor/ruby-dbus/test/t6-loop.rb
179
201
  - vendor/ruby-dbus/test/server_robustness_test.rb
180
202
  - vendor/ruby-dbus/test/t3-ticket27.rb
181
203
  - vendor/ruby-dbus/test/test_all
182
- - vendor/ruby-dbus/test/t5-report-dbus-interface.rb
183
- - vendor/ruby-dbus/test/variant_test.rb
204
+ - vendor/ruby-dbus/test/test_server
205
+ - vendor/ruby-dbus/test/t1
206
+ - vendor/ruby-dbus/test/signal_test.rb
184
207
  - vendor/ruby-dbus/test/t2.rb
208
+ - vendor/ruby-dbus/test/bus_driver_test.rb
185
209
  - vendor/ruby-dbus/test/session_bus_test_manual.rb
186
- - vendor/ruby-dbus/test/signal_test.rb
187
210
  - vendor/ruby-dbus/test/Makefile
188
- - vendor/ruby-dbus/COPYING
211
+ - vendor/ruby-dbus/test/t5-report-dbus-interface.rb
212
+ - vendor/ruby-dbus/doc/tutorial/src/30.service.page
213
+ - vendor/ruby-dbus/doc/tutorial/src/default.css
214
+ - vendor/ruby-dbus/doc/tutorial/src/00.index.page
215
+ - vendor/ruby-dbus/doc/tutorial/src/10.intro.page
216
+ - vendor/ruby-dbus/doc/tutorial/src/20.basic_client.page
217
+ - vendor/ruby-dbus/doc/tutorial/src/default.template
218
+ - vendor/ruby-dbus/ruby-dbus.gemspec
189
219
  - LICENSE
190
220
  - README.md
191
221
  has_rdoc: true
@@ -199,16 +229,20 @@ require_paths:
199
229
  - lib
200
230
  - vendor/ruby-dbus/lib
201
231
  required_ruby_version: !ruby/object:Gem::Requirement
232
+ none: false
202
233
  requirements:
203
234
  - - ">="
204
235
  - !ruby/object:Gem::Version
236
+ hash: 3
205
237
  segments:
206
238
  - 0
207
239
  version: "0"
208
240
  required_rubygems_version: !ruby/object:Gem::Requirement
241
+ none: false
209
242
  requirements:
210
243
  - - ">="
211
244
  - !ruby/object:Gem::Version
245
+ hash: 31
212
246
  segments:
213
247
  - 1
214
248
  - 3
@@ -217,7 +251,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
217
251
  requirements: []
218
252
 
219
253
  rubyforge_project:
220
- rubygems_version: 1.3.6
254
+ rubygems_version: 1.3.7
221
255
  signing_key:
222
256
  specification_version: 3
223
257
  summary: Deploying the circus that is your application