torquebox-rake-support 2.0.0.beta3 → 2.0.0.cr1
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/torquebox/deploy_utils.rb +35 -2
- data/lib/torquebox/rails.rb +46 -7
- data/lib/torquebox/server.rb +0 -1
- data/spec/deploy_utils_spec.rb +83 -1
- data/spec/rails_spec.rb +82 -0
- metadata +14 -12
@@ -116,16 +116,25 @@ module TorqueBox
|
|
116
116
|
puts "TorqueBox install OK: #{opt_torquebox}"
|
117
117
|
end
|
118
118
|
|
119
|
+
def set_java_opts(options)
|
120
|
+
ENV['APPEND_JAVA_OPTS'] = options
|
121
|
+
end
|
122
|
+
|
119
123
|
def run_command_line(opts={})
|
120
124
|
options = ENV['JBOSS_OPTS'] || ''
|
121
125
|
options = "#{options} --server-config=#{cluster_config_file}" if opts[:clustered]
|
122
126
|
options = "#{options} -Dorg.torquebox.web.http.maxThreads=#{opts[:max_threads]}" if opts[:max_threads]
|
123
127
|
options = "#{options} -b #{opts[:bind_address]}" if opts[:bind_address]
|
128
|
+
options = "#{options} -Djboss.socket.binding.port-offset=#{opts[:port_offset]}" if opts[:port_offset]
|
129
|
+
options = "#{options} -Djboss.node.name=#{opts[:node_name]}" if opts[:node_name]
|
130
|
+
options = "#{options} -Djboss.server.data.dir=#{opts[:data_directory]}" if opts[:data_directory]
|
131
|
+
options = "#{options} #{opts[:pass_through]}" if opts[:pass_through]
|
124
132
|
if windows?
|
125
133
|
cmd = "#{jboss_home.gsub('/', '\\')}\\bin\\standalone.bat"
|
126
134
|
else
|
127
135
|
cmd = "/bin/sh bin/standalone.sh"
|
128
136
|
end
|
137
|
+
puts "#{cmd} #{options}" # Make it clear to the user what is being passed through to JBoss AS
|
129
138
|
[cmd, options]
|
130
139
|
end
|
131
140
|
|
@@ -134,7 +143,6 @@ module TorqueBox
|
|
134
143
|
end
|
135
144
|
|
136
145
|
def run_server(options={})
|
137
|
-
|
138
146
|
puts "[WARNING] #{deployment_name} has not been deployed. Starting TorqueBox anyway." unless ( is_deployed? )
|
139
147
|
|
140
148
|
Dir.chdir(jboss_home) do
|
@@ -144,6 +152,7 @@ module TorqueBox
|
|
144
152
|
# is probably not what we want.
|
145
153
|
ENV.delete('BUNDLE_GEMFILE')
|
146
154
|
|
155
|
+
set_java_opts(options[:jvm_options])
|
147
156
|
exec_command(run_command_line(options).join(' '))
|
148
157
|
end
|
149
158
|
end
|
@@ -321,9 +330,33 @@ module TorqueBox
|
|
321
330
|
def normalize_archive_name(name)
|
322
331
|
name[-5..-1] == '.knob' ? name : name + '.knob'
|
323
332
|
end
|
333
|
+
|
334
|
+
def deployment_descriptors
|
335
|
+
Dir.glob( "#{deploy_dir}/*-knob.yml" ).collect { |d| File.basename( d ) }
|
336
|
+
end
|
337
|
+
|
338
|
+
def deployment_status
|
339
|
+
applications = {}
|
340
|
+
deployment_descriptors.each do | descriptor |
|
341
|
+
descriptor_path = File.join( deploy_dir, descriptor )
|
342
|
+
appname = descriptor.sub( /\-knob.yml/, '' )
|
343
|
+
applications[appname] = {}
|
344
|
+
applications[appname][:descriptor] = descriptor_path
|
345
|
+
applications[appname][:status] = case
|
346
|
+
when File.exists?("#{descriptor_path}.dodeploy")
|
347
|
+
"awaiting deployment"
|
348
|
+
when File.exists?("#{descriptor_path}.deployed")
|
349
|
+
"deployed"
|
350
|
+
when File.exists?("#{descriptor_path}.failed")
|
351
|
+
"deployment failed"
|
352
|
+
else "unknown: try running `torquebox deploy #{appname}`"
|
353
|
+
end
|
354
|
+
end
|
355
|
+
applications
|
356
|
+
end
|
324
357
|
|
325
358
|
private
|
326
|
-
|
359
|
+
|
327
360
|
def undeploy(name, opts = {})
|
328
361
|
puts "Attempting to undeploy #{name}"
|
329
362
|
from_dir = find_option( opts, 'deploy_dir' ) || deploy_dir
|
data/lib/torquebox/rails.rb
CHANGED
@@ -15,30 +15,69 @@
|
|
15
15
|
# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
16
16
|
# 02110-1301 USA, or see the FSF site: http://www.fsf.org.
|
17
17
|
|
18
|
+
|
18
19
|
begin
|
19
|
-
require 'rails/
|
20
|
-
require 'rails/generators/rails/app/app_generator'
|
20
|
+
require 'rails/version'
|
21
21
|
rescue LoadError
|
22
|
-
# Rails isn't installed, bail out
|
23
|
-
return
|
24
22
|
end
|
25
23
|
|
26
24
|
module TorqueBox
|
27
25
|
class Rails
|
26
|
+
|
28
27
|
def self.new_app
|
28
|
+
print_rails_not_installed_and_exit unless rails_installed?
|
29
|
+
require_generators
|
29
30
|
# Assumes ARGV[0] already has the application name
|
30
31
|
ARGV << [ "-m", TorqueBox::Rails.template ]
|
31
32
|
ARGV.flatten!
|
32
|
-
|
33
|
+
if using_rails3?
|
34
|
+
::Rails::Generators::AppGenerator.start
|
35
|
+
else
|
36
|
+
::Rails::Generator::Base.use_application_sources!
|
37
|
+
::Rails::Generator::Scripts::Generate.new.run(ARGV, :generator => 'app')
|
38
|
+
end
|
33
39
|
end
|
34
40
|
|
35
41
|
def self.apply_template( root )
|
36
|
-
|
37
|
-
|
42
|
+
print_rails_not_installed_and_exit unless rails_installed?
|
43
|
+
require_generators
|
44
|
+
if using_rails3?
|
45
|
+
generator = ::Rails::Generators::AppGenerator.new( [root], {}, :destination_root => root )
|
46
|
+
generator.apply TorqueBox::Rails.template
|
47
|
+
else
|
48
|
+
::Rails::TemplateRunner.new( TorqueBox::Rails.template )
|
49
|
+
end
|
38
50
|
end
|
39
51
|
|
52
|
+
|
40
53
|
def self.template
|
41
54
|
"#{ENV['TORQUEBOX_HOME']}/share/rails/template.rb"
|
42
55
|
end
|
56
|
+
|
57
|
+
def self.rails_installed?
|
58
|
+
defined? ::Rails::VERSION
|
59
|
+
end
|
60
|
+
|
61
|
+
def self.print_rails_not_installed_and_exit
|
62
|
+
$stderr.puts "Rails not installed. Unable to load generators"
|
63
|
+
exit 1
|
64
|
+
end
|
65
|
+
|
66
|
+
def self.using_rails3?
|
67
|
+
::Rails::VERSION::MAJOR == 3
|
68
|
+
end
|
69
|
+
|
70
|
+
def self.require_generators
|
71
|
+
if using_rails3?
|
72
|
+
require 'rails/generators'
|
73
|
+
require 'rails/generators/rails/app/app_generator'
|
74
|
+
else
|
75
|
+
require 'rails_generator'
|
76
|
+
require 'rails_generator/generators/applications/app/app_generator'
|
77
|
+
require 'rails_generator/generators/applications/app/template_runner'
|
78
|
+
require 'rails_generator/scripts/generate'
|
79
|
+
end
|
80
|
+
end
|
43
81
|
end
|
44
82
|
end
|
83
|
+
|
data/lib/torquebox/server.rb
CHANGED
@@ -23,7 +23,6 @@ module TorqueBox
|
|
23
23
|
|
24
24
|
def self.torquebox_home
|
25
25
|
if ((gem_version <=> Gem::Version.new('1.8.9')) < 0)
|
26
|
-
puts "[WARNING] Found rubygems version #{Gem::VERSION}. This probably means you are on JRuby 1.6.4. While JRuby 1.6.4 should work, TorqueBox is tested on and ships with JRuby 1.6.5."
|
27
26
|
home = Gem.searcher.find( 'torquebox-server' )
|
28
27
|
else
|
29
28
|
home = Gem::Specification.find_by_name( 'torquebox-server' )
|
data/spec/deploy_utils_spec.rb
CHANGED
@@ -223,7 +223,7 @@ describe TorqueBox::DeployUtils do
|
|
223
223
|
begin
|
224
224
|
@util.check_server
|
225
225
|
rescue Exception => e
|
226
|
-
e.message.should =~
|
226
|
+
e.message.should =~ /doesn't appear to be a valid TorqueBox install/
|
227
227
|
end
|
228
228
|
end
|
229
229
|
end
|
@@ -249,6 +249,11 @@ describe TorqueBox::DeployUtils do
|
|
249
249
|
@util.should_receive(:is_deployed?).and_return( true )
|
250
250
|
@util.run_server
|
251
251
|
end
|
252
|
+
|
253
|
+
it 'should set java options' do
|
254
|
+
@util.should_receive(:set_java_opts).with('java options')
|
255
|
+
@util.run_server(:jvm_options => 'java options')
|
256
|
+
end
|
252
257
|
end
|
253
258
|
|
254
259
|
describe '.is_deployed?' do
|
@@ -305,6 +310,42 @@ describe TorqueBox::DeployUtils do
|
|
305
310
|
command, options = @util.run_command_line(:bind_address => '0.0.0.0')
|
306
311
|
options.should include('-b 0.0.0.0')
|
307
312
|
end
|
313
|
+
|
314
|
+
it 'should not set port offset by default' do
|
315
|
+
command, options = @util.run_command_line
|
316
|
+
options.should_not include('-Djboss.socket.binding.port-offset')
|
317
|
+
end
|
318
|
+
|
319
|
+
it 'should set port offset when given' do
|
320
|
+
command, options = @util.run_command_line(:port_offset => '100')
|
321
|
+
options.should include('-Djboss.socket.binding.port-offset=100')
|
322
|
+
end
|
323
|
+
|
324
|
+
it 'should not set node name by default' do
|
325
|
+
command, options = @util.run_command_line
|
326
|
+
options.should_not include('-Djboss.node.name')
|
327
|
+
end
|
328
|
+
|
329
|
+
it 'should set node name when given' do
|
330
|
+
command, options = @util.run_command_line(:node_name => 'mynode')
|
331
|
+
options.should include('-Djboss.node.name=mynode')
|
332
|
+
end
|
333
|
+
|
334
|
+
it 'should not set data directory by default' do
|
335
|
+
command, options = @util.run_command_line
|
336
|
+
options.should_not include('-Djboss.server.data.dir')
|
337
|
+
end
|
338
|
+
|
339
|
+
it 'should set data directory when given' do
|
340
|
+
command, options = @util.run_command_line(:data_directory => '/tmp/mynode')
|
341
|
+
options.should include('-Djboss.server.data.dir=/tmp/mynode')
|
342
|
+
end
|
343
|
+
|
344
|
+
it 'should allow extra parameters to be passed through to JBoss AS' do
|
345
|
+
command, options = @util.run_command_line(:pass_through => '--help')
|
346
|
+
options.should include('--help')
|
347
|
+
end
|
348
|
+
|
308
349
|
end
|
309
350
|
|
310
351
|
describe '.create_archive' do
|
@@ -355,4 +396,45 @@ describe TorqueBox::DeployUtils do
|
|
355
396
|
path.should == "/tmp/simpleapp.knob"
|
356
397
|
end
|
357
398
|
end
|
399
|
+
|
400
|
+
describe '.deployment_status' do
|
401
|
+
before( :each ) do
|
402
|
+
ENV['TORQUEBOX_HOME'] = '/torquebox'
|
403
|
+
ENV['JBOSS_HOME'] = ENV['TORQUEBOX_HOME'] + '/jboss'
|
404
|
+
@myapp = @util.deployment_name( 'my-app' )
|
405
|
+
@appname = @myapp.sub /\-knob.yml/, ''
|
406
|
+
File.stub('exists?').with(File.join(@util.torquebox_home, 'apps')).and_return false
|
407
|
+
File.stub('exists?').with(File.join(@util.deploy_dir, @myapp)).and_return true
|
408
|
+
File.stub('exists?').with(File.join(@util.deploy_dir, "#{@myapp}.dodeploy")).and_return false
|
409
|
+
File.stub('exists?').with(File.join(@util.deploy_dir, "#{@myapp}.deployed")).and_return false
|
410
|
+
File.stub('exists?').with(File.join(@util.deploy_dir, "#{@myapp}.failed")).and_return false
|
411
|
+
Dir.stub('glob').with( "#{@util.deploy_dir}/*-knob.yml" ).and_return [ File.join( @util.deploy_dir, @myapp ) ]
|
412
|
+
end
|
413
|
+
|
414
|
+
it 'should return a hash of deployment info keyed by application name' do
|
415
|
+
@util.deployment_status[@appname].should_not be_nil
|
416
|
+
end
|
417
|
+
|
418
|
+
it 'should provide the deployment descriptor path' do
|
419
|
+
@util.deployment_status[@appname][:descriptor].should_not be_nil
|
420
|
+
end
|
421
|
+
|
422
|
+
it 'should provide a deployment status if awaiting deployment' do
|
423
|
+
dodeploy_file = File.join(@util.deploy_dir, "#{@myapp}.dodeploy")
|
424
|
+
File.stub('exists?').with(dodeploy_file).and_return true
|
425
|
+
@util.deployment_status[@appname][:status].should == 'awaiting deployment'
|
426
|
+
end
|
427
|
+
|
428
|
+
it 'should provide a deployment status if deployed' do
|
429
|
+
deployed_file = File.join(@util.deploy_dir, "#{@myapp}.deployed")
|
430
|
+
File.stub('exists?').with(deployed_file).and_return true
|
431
|
+
@util.deployment_status[@appname][:status].should == 'deployed'
|
432
|
+
end
|
433
|
+
|
434
|
+
it 'should provide a deployment status if failed' do
|
435
|
+
failed_file = File.join(@util.deploy_dir, "#{@myapp}.failed")
|
436
|
+
File.stub('exists?').with(failed_file).and_return true
|
437
|
+
@util.deployment_status[@appname][:status].should == 'deployment failed'
|
438
|
+
end
|
439
|
+
end
|
358
440
|
end
|
data/spec/rails_spec.rb
ADDED
@@ -0,0 +1,82 @@
|
|
1
|
+
require 'torquebox/rails'
|
2
|
+
|
3
|
+
describe TorqueBox::Rails do
|
4
|
+
|
5
|
+
context "Rails not installed" do
|
6
|
+
before(:each) do
|
7
|
+
TorqueBox::Rails.stub!(:rails_installed?).and_return(false)
|
8
|
+
end
|
9
|
+
|
10
|
+
describe "new_app" do
|
11
|
+
it "should print a warning" do
|
12
|
+
$stderr.should_receive(:puts)
|
13
|
+
lambda {
|
14
|
+
TorqueBox::Rails.new_app
|
15
|
+
}.should raise_error SystemExit
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
describe "apply_template" do
|
20
|
+
it "should print a warning" do
|
21
|
+
$stderr.should_receive(:puts)
|
22
|
+
lambda {
|
23
|
+
TorqueBox::Rails.apply_template("root")
|
24
|
+
}.should raise_error SystemExit
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
context "Rails 3" do
|
31
|
+
before(:each) do
|
32
|
+
TorqueBox::Rails.stub!(:rails_installed?).and_return(true)
|
33
|
+
TorqueBox::Rails.stub(:using_rails3?).and_return(true)
|
34
|
+
TorqueBox::Rails.stub(:require_generators)
|
35
|
+
module ::Rails; module Generators; class AppGenerator; end; end; end
|
36
|
+
end
|
37
|
+
|
38
|
+
describe "new_app" do
|
39
|
+
it "should generate" do
|
40
|
+
::Rails::Generators::AppGenerator.should_receive(:start)
|
41
|
+
TorqueBox::Rails.new_app
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
describe "apply_template" do
|
46
|
+
it "should apply" do
|
47
|
+
generator = mock('generator')
|
48
|
+
::Rails::Generators::AppGenerator.stub(:new).and_return(generator)
|
49
|
+
generator.should_receive(:apply).with(TorqueBox::Rails.template)
|
50
|
+
TorqueBox::Rails.apply_template('root')
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
|
56
|
+
context "Rails 2" do
|
57
|
+
before(:each) do
|
58
|
+
TorqueBox::Rails.stub!(:rails_installed?).and_return(true)
|
59
|
+
TorqueBox::Rails.stub(:using_rails3?).and_return(false)
|
60
|
+
TorqueBox::Rails.stub(:require_generators)
|
61
|
+
module ::Rails; module Generator; class Base; end; end; end
|
62
|
+
module ::Rails; module Generator; module Scripts; class Generate; end; end; end; end
|
63
|
+
module ::Rails; class TemplateRunner; end; end
|
64
|
+
::Rails::Generator::Base.stub(:use_application_sources!)
|
65
|
+
end
|
66
|
+
|
67
|
+
describe "new_app" do
|
68
|
+
it "should generate" do
|
69
|
+
::Rails::Generator::Scripts::Generate.any_instance.should_receive(:run)
|
70
|
+
TorqueBox::Rails.new_app
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
describe "apply_template" do
|
75
|
+
it "should apply" do
|
76
|
+
::Rails::TemplateRunner.should_receive(:new).with(TorqueBox::Rails.template)
|
77
|
+
TorqueBox::Rails.apply_template('root')
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: torquebox-rake-support
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease: 6
|
5
|
-
version: 2.0.0.
|
5
|
+
version: 2.0.0.cr1
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- The TorqueBox Team
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2012-
|
13
|
+
date: 2012-03-02 00:00:00 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rake
|
@@ -48,26 +48,27 @@ extra_rdoc_files: []
|
|
48
48
|
|
49
49
|
files:
|
50
50
|
- licenses/lgpl-2.1.txt
|
51
|
-
- lib/org.torquebox.rake-support.rb
|
52
51
|
- lib/torquebox-rake-support.rb
|
53
|
-
- lib/torquebox
|
54
|
-
- lib/torquebox/launchd.rb
|
52
|
+
- lib/org.torquebox.rake-support.rb
|
55
53
|
- lib/torquebox/rails.rb
|
56
|
-
- lib/torquebox/
|
54
|
+
- lib/torquebox/deploy_utils.rb
|
57
55
|
- lib/torquebox/upstart.rb
|
56
|
+
- lib/torquebox/server.rb
|
57
|
+
- lib/torquebox/launchd.rb
|
58
58
|
- lib/torquebox/rake/tasks.rb
|
59
59
|
- lib/torquebox/rake/tasks/archive.rb
|
60
60
|
- lib/torquebox/rake/tasks/deployment.rb
|
61
61
|
- lib/torquebox/rake/tasks/server.rb
|
62
|
-
- generators/USAGE
|
63
62
|
- generators/torquebox_queue_generator.rb
|
63
|
+
- generators/USAGE
|
64
64
|
- generators/templates/queue.rb
|
65
|
+
- spec/upstart_spec.rb
|
66
|
+
- spec/rails_spec.rb
|
65
67
|
- spec/deploy_utils_spec.rb
|
66
|
-
- spec/server_spec.rb
|
67
68
|
- spec/spec_helper.rb
|
68
|
-
- spec/
|
69
|
-
- spec/fixtures/simpleapp/config.ru
|
69
|
+
- spec/server_spec.rb
|
70
70
|
- spec/fixtures/simpleapp/simpleapp.box
|
71
|
+
- spec/fixtures/simpleapp/config.ru
|
71
72
|
homepage: http://www.torquebox.org/torquebox-gems-parent/torquebox-rake-support/
|
72
73
|
licenses:
|
73
74
|
- lgpl
|
@@ -91,11 +92,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
91
92
|
requirements: []
|
92
93
|
|
93
94
|
rubyforge_project:
|
94
|
-
rubygems_version: 1.8.
|
95
|
+
rubygems_version: 1.8.15
|
95
96
|
signing_key:
|
96
97
|
specification_version: 3
|
97
98
|
summary: TorqueBox Rake Support
|
98
99
|
test_files:
|
100
|
+
- spec/upstart_spec.rb
|
101
|
+
- spec/rails_spec.rb
|
99
102
|
- spec/deploy_utils_spec.rb
|
100
103
|
- spec/server_spec.rb
|
101
|
-
- spec/upstart_spec.rb
|