standup 0.4.0 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +6 -0
- data/.rvmrc +1 -1
- data/Gemfile +4 -0
- data/README.md +1 -0
- data/Rakefile +2 -29
- data/lib/standup/remoting.rb +42 -14
- data/lib/standup/scripts/node.rb +2 -1
- data/lib/standup/version.rb +7 -0
- data/lib/standup.rb +2 -5
- data/scripts/delayed_job/delayed_job +5 -0
- data/scripts/delayed_job.rb +7 -0
- data/scripts/init/standup.yml +2 -0
- data/scripts/passenger.rb +1 -1
- data/scripts/redis.rb +20 -25
- data/scripts/ruby.rb +45 -6
- data/scripts/update.rb +17 -23
- data/scripts/webapp.rb +54 -34
- data/standup.gemspec +24 -120
- metadata +14 -55
- data/VERSION +0 -1
data/.gitignore
ADDED
data/.rvmrc
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
rvm
|
1
|
+
rvm 1.9.2
|
2
2
|
|
data/Gemfile
ADDED
data/README.md
CHANGED
data/Rakefile
CHANGED
@@ -1,29 +1,2 @@
|
|
1
|
-
require '
|
2
|
-
|
3
|
-
|
4
|
-
begin
|
5
|
-
require 'jeweler'
|
6
|
-
Jeweler::Tasks.new do |gem|
|
7
|
-
gem.name = 'standup'
|
8
|
-
gem.summary = %Q{Standup is an application deployment and infrastructure management tool for Rails and Amazon EC2}
|
9
|
-
gem.email = 'ilia@flamefork.ru'
|
10
|
-
gem.homepage = 'https://github.com/cloudcastle/standup'
|
11
|
-
gem.authors = ['Ilia Ablamonov', 'Artem Orlov', 'Cloud Castle Inc.']
|
12
|
-
|
13
|
-
gem.add_dependency 'trollop', '>= 1.16'
|
14
|
-
gem.add_dependency 'i18n', '>= 0.5.0'
|
15
|
-
gem.add_dependency 'activesupport', '>= 3.0'
|
16
|
-
gem.add_dependency 'settingslogic', '>= 2.0'
|
17
|
-
gem.add_dependency 'amazon-ec2', '>= 0.9'
|
18
|
-
gem.add_dependency 'aws-s3', '>= 0.5'
|
19
|
-
gem.add_dependency 'net-ssh', '>= 2.0'
|
20
|
-
gem.add_dependency 'highline', '>= 1.5.2'
|
21
|
-
|
22
|
-
gem.executables = ['standup']
|
23
|
-
|
24
|
-
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
25
|
-
end
|
26
|
-
Jeweler::GemcutterTasks.new
|
27
|
-
rescue LoadError
|
28
|
-
puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
|
29
|
-
end
|
1
|
+
require 'bundler'
|
2
|
+
Bundler::GemHelper.install_tasks
|
data/lib/standup/remoting.rb
CHANGED
@@ -8,7 +8,8 @@ module Standup
|
|
8
8
|
@keypair_file = Settings.aws.keypair_file
|
9
9
|
@user = @node.scripts.ec2.params.ssh_user
|
10
10
|
@ssh = nil
|
11
|
-
@
|
11
|
+
@rvm_installed = nil
|
12
|
+
@context = {}
|
12
13
|
end
|
13
14
|
|
14
15
|
def download *files
|
@@ -51,18 +52,38 @@ module Standup
|
|
51
52
|
:to => file,
|
52
53
|
:sudo => opts[:sudo]
|
53
54
|
end
|
54
|
-
|
55
|
-
def
|
55
|
+
|
56
|
+
def with_context new_context = {}
|
57
|
+
old_context = @context.dup
|
58
|
+
yield(@context = @context.merge(new_context).merge(:prefix => "#{old_context[:prefix]} #{new_context[:prefix]}")).tap do
|
59
|
+
@context = old_context
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def in_dir path, &block
|
56
64
|
raise ArgumentError, 'Only absolute paths allowed' unless path[0,1] == '/'
|
57
|
-
|
58
|
-
@path = path
|
59
|
-
result = yield path
|
60
|
-
@path = old_path
|
61
|
-
result
|
65
|
+
with_context(:path => path, &block)
|
62
66
|
end
|
63
|
-
|
64
|
-
def
|
65
|
-
|
67
|
+
|
68
|
+
def as_user user, &block
|
69
|
+
with_context(:user => user, &block)
|
70
|
+
end
|
71
|
+
|
72
|
+
def with_prefix prefix, &block
|
73
|
+
with_context(:prefix => prefix, &block)
|
74
|
+
end
|
75
|
+
|
76
|
+
def exec command, context = @context
|
77
|
+
command = "#{context[:prefix].strip} #{command}" if context[:prefix].present?
|
78
|
+
command = "cd #{context[:path]} && #{command}" if context[:path].present?
|
79
|
+
command = "/usr/local/rvm/bin/rvm-shell -c \"#{command}\"" if rvm_installed?
|
80
|
+
|
81
|
+
if context[:user].present?
|
82
|
+
command = "sudo -u #{context[:user]} #{command}"
|
83
|
+
elsif context[:sudo]
|
84
|
+
command = "sudo #{command}"
|
85
|
+
end
|
86
|
+
|
66
87
|
bright_p command
|
67
88
|
ssh.exec! command do |ch, _, data|
|
68
89
|
ch[:result] ||= ""
|
@@ -72,12 +93,15 @@ module Standup
|
|
72
93
|
end
|
73
94
|
end
|
74
95
|
|
75
|
-
def sudo command
|
76
|
-
|
96
|
+
def sudo command = nil, &block
|
97
|
+
block = Proc.new { exec command } unless block_given?
|
98
|
+
with_context(:sudo => true, &block)
|
77
99
|
end
|
78
100
|
|
79
101
|
def su_exec user, command
|
80
|
-
|
102
|
+
as_user user do
|
103
|
+
exec command
|
104
|
+
end
|
81
105
|
end
|
82
106
|
|
83
107
|
def in_temp_dir &block
|
@@ -132,6 +156,10 @@ module Standup
|
|
132
156
|
@ssh = nil
|
133
157
|
end
|
134
158
|
|
159
|
+
def rvm_installed?
|
160
|
+
@rvm_installed ||= ssh.exec!("if [ -e /usr/local/rvm/bin/rvm ]; then echo 'true'; fi") == "true\n"
|
161
|
+
end
|
162
|
+
|
135
163
|
protected
|
136
164
|
|
137
165
|
def ssh
|
data/lib/standup/scripts/node.rb
CHANGED
@@ -11,7 +11,8 @@ module Standup
|
|
11
11
|
delegate :instance, :open_port, :open_ports, :remoting, :scripts,
|
12
12
|
:to => :@node
|
13
13
|
|
14
|
-
delegate :download, :upload, :remote_update, :
|
14
|
+
delegate :download, :upload, :remote_update, :file_exists?, :install_package, :install_packages, :install_gem, :update_cron,
|
15
|
+
:with_context, :exec, :sudo, :su_exec, :in_dir, :in_temp_dir, :as_user, :with_prefix,
|
15
16
|
:to => :remoting
|
16
17
|
|
17
18
|
attr_accessor :node
|
data/lib/standup.rb
CHANGED
@@ -13,6 +13,7 @@ require 'standup/remoting'
|
|
13
13
|
require 'standup/scripts/base'
|
14
14
|
require 'standup/scripts/node'
|
15
15
|
require 'standup/node'
|
16
|
+
require 'standup/version'
|
16
17
|
|
17
18
|
module Standup
|
18
19
|
module Scripts; end
|
@@ -60,10 +61,6 @@ module Standup
|
|
60
61
|
scripts[name] = script_class
|
61
62
|
end
|
62
63
|
|
63
|
-
def self.version
|
64
|
-
File.read(File.expand_path('../../VERSION', __FILE__)).strip
|
65
|
-
end
|
66
|
-
|
67
64
|
def self.run_from_command_line
|
68
65
|
if File.exists?('Gemfile') && !ENV['BUNDLE_GEMFILE']
|
69
66
|
Kernel.exec "bundle exec standup #{ARGV.join(' ')}"
|
@@ -106,4 +103,4 @@ module Standup
|
|
106
103
|
opt_parser.die "unknown script #{script_name}", nil
|
107
104
|
end
|
108
105
|
end
|
109
|
-
end
|
106
|
+
end
|
data/scripts/delayed_job.rb
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
Standup.script :node do
|
2
2
|
def run
|
3
|
+
path_to_resque_exec = "#{scripts.webapp.app_path}/script/delayed_job"
|
4
|
+
with_processed_file script_file('delayed_job') do |file|
|
5
|
+
upload file,
|
6
|
+
:to => path_to_resque_exec,
|
7
|
+
:sudo => true
|
8
|
+
end
|
9
|
+
|
3
10
|
with_processed_file script_file('delayed_job_monit.conf') do |file|
|
4
11
|
scripts.monit.add_watch file
|
5
12
|
end
|
data/scripts/init/standup.yml
CHANGED
data/scripts/passenger.rb
CHANGED
@@ -2,7 +2,7 @@ Standup.script :node do
|
|
2
2
|
def run
|
3
3
|
scripts.ec2.open_port 80, 443
|
4
4
|
|
5
|
-
if install_gem('passenger', '3.0.
|
5
|
+
if install_gem('passenger', '3.0.7') || !file_exists?('/opt/nginx/sbin/nginx')
|
6
6
|
install_package 'libcurl4-openssl-dev'
|
7
7
|
sudo 'passenger-install-nginx-module --auto --auto-download --prefix=/opt/nginx'
|
8
8
|
end
|
data/scripts/redis.rb
CHANGED
@@ -1,35 +1,30 @@
|
|
1
1
|
Standup.script :node do
|
2
|
-
|
3
|
-
raise "Please call resque install instead"
|
4
|
-
end
|
5
|
-
|
6
|
-
def install_from_resque
|
7
|
-
in_dir "#{scripts.webapp.app_path}" do
|
8
|
-
sudo "git clone git://github.com/defunkt/resque.git"
|
9
|
-
end
|
2
|
+
REDIS_VERSION = "2.2.8"
|
10
3
|
|
11
|
-
|
12
|
-
|
4
|
+
def run
|
5
|
+
file_name = "redis-#{REDIS_VERSION}"
|
6
|
+
|
7
|
+
#TODO check version, specify it in standup config file
|
8
|
+
unless installed?
|
9
|
+
in_temp_dir do
|
10
|
+
exec "wget http://redis.googlecode.com/files/#{file_name}.tar.gz"
|
11
|
+
exec "tar xvfz #{file_name}.tar.gz"
|
12
|
+
exec "cd #{file_name} && sudo mkdir /opt/redis"
|
13
|
+
exec "cd #{file_name} && sudo make PREFIX=/opt/redis install"
|
14
|
+
end
|
15
|
+
|
16
|
+
sudo "ln -s /opt/redis/bin/redis-server /usr/local/bin/redis-server"
|
17
|
+
sudo "ln -s /opt/redis/bin/redis-cli /usr/local/bin/redis-cli"
|
13
18
|
end
|
14
19
|
|
15
|
-
sudo "rm -fr #{scripts.webapp.app_path}/resque"
|
16
|
-
|
17
|
-
|
18
|
-
upload script_file('redis.conf'),
|
19
|
-
:to => '/etc/redis.conf',
|
20
|
-
:sudo => true
|
21
20
|
with_processed_file script_file('redis.conf') do |file|
|
22
|
-
upload file, :to => '/etc/redis.conf',
|
23
|
-
:sudo => true
|
21
|
+
upload file, :to => '/etc/redis.conf', :sudo => true
|
24
22
|
end
|
25
|
-
|
26
|
-
|
27
|
-
:sudo => true
|
23
|
+
|
24
|
+
upload script_file('redis-server'), :to => '/etc/init.d/redis-server', :sudo => true
|
28
25
|
|
29
26
|
sudo 'chmod +x /etc/init.d/redis-server'
|
30
27
|
sudo '/usr/sbin/update-rc.d -f redis-server defaults'
|
31
|
-
sudo 'service redis-server stop'
|
32
|
-
sudo 'service redis-server start'
|
33
28
|
|
34
29
|
with_processed_file script_file('redis_monit.conf') do |file|
|
35
30
|
scripts.monit.add_watch file
|
@@ -38,7 +33,7 @@ Standup.script :node do
|
|
38
33
|
restart
|
39
34
|
end
|
40
35
|
|
41
|
-
def
|
42
|
-
|
36
|
+
def installed?
|
37
|
+
sudo('find /usr/local/bin/redis-server').match(/No such file or directory/).blank?
|
43
38
|
end
|
44
39
|
end
|
data/scripts/ruby.rb
CHANGED
@@ -1,12 +1,51 @@
|
|
1
1
|
Standup.script :node do
|
2
2
|
def run
|
3
|
-
return if
|
3
|
+
return if remoting.rvm_installed?
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
5
|
+
install_package 'git-core'
|
6
|
+
|
7
|
+
sudo 'bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)'
|
8
|
+
|
9
|
+
exec "rvm install #{version}"
|
10
|
+
exec "rvm use #{version} --default"
|
11
|
+
|
12
|
+
sudo 'usermod -a -G rvm www-data'
|
13
|
+
|
14
|
+
remoting.instance_variable_set :@rvm_installed, true
|
15
|
+
end
|
16
|
+
|
17
|
+
def version
|
18
|
+
@version ||= begin
|
19
|
+
files = Dir['**/.rvmrc']
|
20
|
+
|
21
|
+
if files.empty?
|
22
|
+
if params.version.present?
|
23
|
+
params.version
|
24
|
+
else
|
25
|
+
puts "Cannot fine ruby version declaration neither in .rvmrc file or ruby script param"
|
26
|
+
raise Exception.new('Cannot find ruby version declaration')
|
27
|
+
end
|
28
|
+
else
|
29
|
+
declarations = files.map do |file|
|
30
|
+
if (rvm_declaration = IO.read(file)).index('rvm') == 0
|
31
|
+
rvm_declaration.split(' ').second.split('@').first
|
32
|
+
else
|
33
|
+
puts "Cannot parse .rvmrc declaration:\n#{rvm_declaration}"
|
34
|
+
raise Exception.new("Cannot parse #{file}")
|
35
|
+
end
|
36
|
+
end.uniq
|
37
|
+
|
38
|
+
if declarations.size > 1
|
39
|
+
puts "Found different ruby version declarations #{declarations}"
|
40
|
+
if params.version.present?
|
41
|
+
params.version
|
42
|
+
else
|
43
|
+
raise Exception.new('Several ruby version declarations found')
|
44
|
+
end
|
45
|
+
else
|
46
|
+
declarations.first
|
47
|
+
end
|
48
|
+
end
|
10
49
|
end
|
11
50
|
end
|
12
51
|
end
|
data/scripts/update.rb
CHANGED
@@ -1,36 +1,30 @@
|
|
1
1
|
Standup.script :node do
|
2
|
-
self.description = 'Update
|
2
|
+
self.description = 'Update web application'
|
3
3
|
|
4
4
|
def run
|
5
|
-
in_dir scripts.webapp.
|
5
|
+
in_dir scripts.webapp.project_path do
|
6
6
|
sudo 'chown -R ubuntu:ubuntu .'
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
restart_webapp
|
7
|
+
|
8
|
+
exec 'git checkout HEAD .'
|
9
|
+
exec 'git pull'
|
10
|
+
|
11
|
+
scripts.webapp.checkout_branch
|
12
|
+
|
13
|
+
sudo "chown -R www-data:www-data ."
|
15
14
|
end
|
15
|
+
|
16
|
+
update_webapp
|
17
|
+
|
18
|
+
scripts.webapp.restart
|
16
19
|
end
|
17
20
|
|
18
21
|
protected
|
19
22
|
|
20
|
-
def pull_changes
|
21
|
-
exec 'git checkout HEAD .'
|
22
|
-
exec 'git pull'
|
23
|
-
exec "git checkout #{scripts.webapp.params.git_branch}"
|
24
|
-
end
|
25
|
-
|
26
23
|
def update_webapp
|
27
24
|
scripts.webapp.install_gems
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
sudo 'mkdir -p tmp'
|
33
|
-
sudo 'touch tmp/restart.txt'
|
34
|
-
scripts.delayed_job.restart if scripts.setup.has_script? 'delayed_job'
|
25
|
+
|
26
|
+
scripts.webapp.with_environment do
|
27
|
+
exec 'rake db:migrate'
|
28
|
+
end
|
35
29
|
end
|
36
30
|
end
|
data/scripts/webapp.rb
CHANGED
@@ -5,46 +5,59 @@ Standup.script :node do
|
|
5
5
|
:server_name => '_',
|
6
6
|
:git_branch => 'master',
|
7
7
|
:gem_manager => :bundler,
|
8
|
-
:bootstrap_db =>
|
8
|
+
:bootstrap_db => false,
|
9
|
+
:app_subdir => ''
|
9
10
|
}
|
10
11
|
|
11
12
|
def run
|
12
13
|
install_package 'git-core'
|
13
14
|
install_package params.additional_packages if params.additional_packages.present?
|
14
15
|
|
15
|
-
unless file_exists?
|
16
|
-
sudo "mkdir -p #{
|
16
|
+
unless file_exists? project_path
|
17
|
+
sudo "mkdir -p #{project_path}"
|
17
18
|
end
|
18
19
|
|
19
|
-
sudo "chown -R ubuntu:ubuntu #{
|
20
|
+
sudo "chown -R ubuntu:ubuntu #{project_path}"
|
20
21
|
|
21
22
|
ensure_github_access
|
22
23
|
|
23
|
-
unless file_exists? "#{
|
24
|
-
exec "rm -rf #{
|
25
|
-
exec "git clone git@github.com:#{github_repo}.git #{
|
26
|
-
end
|
27
|
-
|
28
|
-
in_dir app_path do
|
29
|
-
exec "git checkout #{params.git_branch}"
|
24
|
+
unless file_exists? "#{project_path}/.git"
|
25
|
+
exec "rm -rf #{project_path}/*"
|
26
|
+
exec "git clone git@github.com:#{github_repo}.git #{project_path}"
|
30
27
|
end
|
31
28
|
|
32
|
-
|
33
|
-
|
34
|
-
#TODO move boolean check to global stuff
|
35
|
-
bootstrap_db if params.bootstrap_db.match(/(true|t|yes|y|1)$/i) != nil
|
29
|
+
checkout_branch
|
36
30
|
|
37
31
|
sudo "chown -R www-data:www-data #{app_path}"
|
38
32
|
|
33
|
+
remote_update '/etc/environment',
|
34
|
+
"RAILS_ENV=#{params.rails_env}\n",
|
35
|
+
:delimiter => '# standup script rails_env',
|
36
|
+
:sudo => true
|
37
|
+
|
38
|
+
install_gems
|
39
|
+
|
40
|
+
bootstrap_db if params.bootstrap_db
|
41
|
+
|
39
42
|
with_processed_file script_file('webapp.conf') do |file|
|
40
43
|
scripts.passenger.add_server_conf file, "#{params.name}.conf"
|
41
44
|
end
|
42
45
|
end
|
43
46
|
|
44
|
-
def
|
47
|
+
def with_environment
|
48
|
+
with_context(:user => 'www-data', :path => app_path, :prefix => "RAILS_ENV=#{params.rails_env} bundle exec") do
|
49
|
+
yield
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def project_path
|
45
54
|
"/opt/#{params.name}"
|
46
55
|
end
|
47
56
|
|
57
|
+
def app_path
|
58
|
+
File.join(project_path, params.app_subdir)
|
59
|
+
end
|
60
|
+
|
48
61
|
def db_name
|
49
62
|
"#{params.name}_#{params.rails_env}"
|
50
63
|
end
|
@@ -64,7 +77,7 @@ Standup.script :node do
|
|
64
77
|
end
|
65
78
|
|
66
79
|
def install_gems
|
67
|
-
|
80
|
+
with_context(:user => 'www-data', :path => app_path) do
|
68
81
|
case params.gem_manager.to_sym
|
69
82
|
when :bundler
|
70
83
|
install_gem 'bundler'
|
@@ -80,37 +93,44 @@ Standup.script :node do
|
|
80
93
|
end
|
81
94
|
end
|
82
95
|
|
83
|
-
def
|
84
|
-
|
96
|
+
def checkout_branch
|
97
|
+
in_dir project_path do
|
98
|
+
exec "git checkout #{params.git_branch}"
|
99
|
+
end
|
85
100
|
end
|
86
101
|
|
87
|
-
def
|
88
|
-
|
102
|
+
def restart
|
103
|
+
in_dir app_path do
|
104
|
+
sudo 'mkdir -p tmp'
|
105
|
+
sudo 'touch tmp/restart.txt'
|
106
|
+
scripts.delayed_job.restart if scripts.setup.has_script? 'delayed_job'
|
107
|
+
scripts.resque.restart if scripts.setup.has_script? 'resque'
|
108
|
+
end
|
89
109
|
end
|
90
110
|
|
91
111
|
protected
|
92
112
|
|
93
113
|
def ensure_github_access
|
94
|
-
return unless exec('ssh -o StrictHostKeyChecking=no git@github.com') =~ /Permission denied \(publickey\)/
|
95
|
-
|
96
114
|
unless file_exists? '~/.ssh/id_rsa'
|
97
115
|
exec "ssh-keygen -t rsa -f ~/.ssh/id_rsa -P '' -C `hostname`"
|
98
116
|
end
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
117
|
+
|
118
|
+
while exec('ssh -o StrictHostKeyChecking=no git@github.com') =~ /Permission denied \(publickey\)/
|
119
|
+
password = bright_ask("Enter GitGub password for user #{params.github_user}:", false)
|
120
|
+
|
121
|
+
github_add_deploy_key params.github_user,
|
122
|
+
password,
|
123
|
+
github_repo,
|
124
|
+
exec('hostname').strip,
|
125
|
+
exec('cat ~/.ssh/id_rsa.pub').strip
|
126
|
+
end
|
107
127
|
end
|
108
128
|
|
109
129
|
def bootstrap_db
|
110
130
|
if db.create_database db_name
|
111
|
-
|
112
|
-
exec "
|
113
|
-
exec "
|
131
|
+
with_environment do
|
132
|
+
exec "rake db:schema:load"
|
133
|
+
exec "rake db:seed"
|
114
134
|
end
|
115
135
|
end
|
116
136
|
end
|
data/standup.gemspec
CHANGED
@@ -1,126 +1,30 @@
|
|
1
|
-
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "standup/version"
|
5
4
|
|
6
5
|
Gem::Specification.new do |s|
|
7
|
-
s.name
|
8
|
-
s.version
|
6
|
+
s.name = "standup"
|
7
|
+
s.version = Standup::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ["Ilia Ablamonov", "Artem Orlov", "Cloud Castle Inc."]
|
10
|
+
s.email = ["ilia@flamefork.ru", "art.orlov@gmail.com"]
|
11
|
+
s.homepage = "https://github.com/cloudcastle/standup"
|
12
|
+
s.summary = %q{Standup is an application deployment and infrastructure management tool for Rails and Amazon EC2}
|
13
|
+
s.description = %q{}
|
9
14
|
|
10
|
-
s.
|
11
|
-
s.authors = ["Ilia Ablamonov", "Artem Orlov", "Cloud Castle Inc."]
|
12
|
-
s.date = %q{2011-06-02}
|
13
|
-
s.default_executable = %q{standup}
|
14
|
-
s.email = %q{ilia@flamefork.ru}
|
15
|
-
s.executables = ["standup"]
|
16
|
-
s.extra_rdoc_files = [
|
17
|
-
"LICENSE",
|
18
|
-
"README.md"
|
19
|
-
]
|
20
|
-
s.files = [
|
21
|
-
".rvmrc",
|
22
|
-
"LICENSE",
|
23
|
-
"README.md",
|
24
|
-
"Rakefile",
|
25
|
-
"VERSION",
|
26
|
-
"bin/standup",
|
27
|
-
"lib/standup.rb",
|
28
|
-
"lib/standup/core_ext.rb",
|
29
|
-
"lib/standup/ec2.rb",
|
30
|
-
"lib/standup/ec2/base.rb",
|
31
|
-
"lib/standup/ec2/elastic_ip.rb",
|
32
|
-
"lib/standup/ec2/instance.rb",
|
33
|
-
"lib/standup/ec2/security_group.rb",
|
34
|
-
"lib/standup/ec2/volume.rb",
|
35
|
-
"lib/standup/node.rb",
|
36
|
-
"lib/standup/remoting.rb",
|
37
|
-
"lib/standup/scripts/base.rb",
|
38
|
-
"lib/standup/scripts/node.rb",
|
39
|
-
"lib/standup/settings.rb",
|
40
|
-
"scripts/allocate_ip.rb",
|
41
|
-
"scripts/appconsole.rb",
|
42
|
-
"scripts/basics.rb",
|
43
|
-
"scripts/basics/s3cfg",
|
44
|
-
"scripts/browse.rb",
|
45
|
-
"scripts/db_backup.rb",
|
46
|
-
"scripts/delayed_job.rb",
|
47
|
-
"scripts/delayed_job/delayed_job_monit.conf",
|
48
|
-
"scripts/download_db.rb",
|
49
|
-
"scripts/ec2.rb",
|
50
|
-
"scripts/generate.rb",
|
51
|
-
"scripts/generate/script.rb",
|
52
|
-
"scripts/init.rb",
|
53
|
-
"scripts/init/standup.yml",
|
54
|
-
"scripts/localize.rb",
|
55
|
-
"scripts/monit.rb",
|
56
|
-
"scripts/monit/monit",
|
57
|
-
"scripts/monit/monitrc",
|
58
|
-
"scripts/monit/sshd.conf",
|
59
|
-
"scripts/mysql.rb",
|
60
|
-
"scripts/passenger.rb",
|
61
|
-
"scripts/passenger/nginx",
|
62
|
-
"scripts/passenger/nginx.conf",
|
63
|
-
"scripts/passenger/nginx_monit.conf",
|
64
|
-
"scripts/postgresql.rb",
|
65
|
-
"scripts/postgresql/pg_hba.conf",
|
66
|
-
"scripts/postgresql/postgresql.conf",
|
67
|
-
"scripts/postgresql/postgresql_monit.conf",
|
68
|
-
"scripts/rake.rb",
|
69
|
-
"scripts/redis.rb",
|
70
|
-
"scripts/redis/redis-server",
|
71
|
-
"scripts/redis/redis.conf",
|
72
|
-
"scripts/redis/redis_monit.conf",
|
73
|
-
"scripts/resque.rb",
|
74
|
-
"scripts/resque/resque",
|
75
|
-
"scripts/resque/resque_monit.conf",
|
76
|
-
"scripts/ruby.rb",
|
77
|
-
"scripts/setup.rb",
|
78
|
-
"scripts/shell.rb",
|
79
|
-
"scripts/status.rb",
|
80
|
-
"scripts/terminate.rb",
|
81
|
-
"scripts/update.rb",
|
82
|
-
"scripts/upload_db.rb",
|
83
|
-
"scripts/watchlog.rb",
|
84
|
-
"scripts/webapp.rb",
|
85
|
-
"scripts/webapp/webapp.conf",
|
86
|
-
"standup.gemspec"
|
87
|
-
]
|
88
|
-
s.homepage = %q{https://github.com/cloudcastle/standup}
|
89
|
-
s.require_paths = ["lib"]
|
90
|
-
s.rubygems_version = %q{1.6.2}
|
91
|
-
s.summary = %q{Standup is an application deployment and infrastructure management tool for Rails and Amazon EC2}
|
92
|
-
|
93
|
-
if s.respond_to? :specification_version then
|
94
|
-
s.specification_version = 3
|
15
|
+
s.rubyforge_project = "standup"
|
95
16
|
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
s.add_runtime_dependency(%q<settingslogic>, [">= 2.0"])
|
101
|
-
s.add_runtime_dependency(%q<amazon-ec2>, [">= 0.9"])
|
102
|
-
s.add_runtime_dependency(%q<aws-s3>, [">= 0.5"])
|
103
|
-
s.add_runtime_dependency(%q<net-ssh>, [">= 2.0"])
|
104
|
-
s.add_runtime_dependency(%q<highline>, [">= 1.5.2"])
|
105
|
-
else
|
106
|
-
s.add_dependency(%q<trollop>, [">= 1.16"])
|
107
|
-
s.add_dependency(%q<i18n>, [">= 0.5.0"])
|
108
|
-
s.add_dependency(%q<activesupport>, [">= 3.0"])
|
109
|
-
s.add_dependency(%q<settingslogic>, [">= 2.0"])
|
110
|
-
s.add_dependency(%q<amazon-ec2>, [">= 0.9"])
|
111
|
-
s.add_dependency(%q<aws-s3>, [">= 0.5"])
|
112
|
-
s.add_dependency(%q<net-ssh>, [">= 2.0"])
|
113
|
-
s.add_dependency(%q<highline>, [">= 1.5.2"])
|
114
|
-
end
|
115
|
-
else
|
116
|
-
s.add_dependency(%q<trollop>, [">= 1.16"])
|
117
|
-
s.add_dependency(%q<i18n>, [">= 0.5.0"])
|
118
|
-
s.add_dependency(%q<activesupport>, [">= 3.0"])
|
119
|
-
s.add_dependency(%q<settingslogic>, [">= 2.0"])
|
120
|
-
s.add_dependency(%q<amazon-ec2>, [">= 0.9"])
|
121
|
-
s.add_dependency(%q<aws-s3>, [">= 0.5"])
|
122
|
-
s.add_dependency(%q<net-ssh>, [">= 2.0"])
|
123
|
-
s.add_dependency(%q<highline>, [">= 1.5.2"])
|
124
|
-
end
|
125
|
-
end
|
17
|
+
s.files = `git ls-files`.split("\n")
|
18
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
19
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
|
+
s.require_paths = ["lib"]
|
126
21
|
|
22
|
+
s.add_dependency 'trollop', '>= 1.16'
|
23
|
+
s.add_dependency 'i18n', '>= 0.5.0'
|
24
|
+
s.add_dependency 'activesupport', '>= 3.0'
|
25
|
+
s.add_dependency 'settingslogic', '>= 2.0'
|
26
|
+
s.add_dependency 'amazon-ec2', '>= 0.9'
|
27
|
+
s.add_dependency 'aws-s3', '>= 0.5'
|
28
|
+
s.add_dependency 'net-ssh', '>= 2.0'
|
29
|
+
s.add_dependency 'highline', '>= 1.5.2'
|
30
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: standup
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: 15
|
5
4
|
prerelease:
|
6
|
-
|
7
|
-
- 0
|
8
|
-
- 4
|
9
|
-
- 0
|
10
|
-
version: 0.4.0
|
5
|
+
version: 0.5.0
|
11
6
|
platform: ruby
|
12
7
|
authors:
|
13
8
|
- Ilia Ablamonov
|
@@ -17,8 +12,8 @@ autorequire:
|
|
17
12
|
bindir: bin
|
18
13
|
cert_chain: []
|
19
14
|
|
20
|
-
date: 2011-
|
21
|
-
default_executable:
|
15
|
+
date: 2011-07-02 00:00:00 +04:00
|
16
|
+
default_executable:
|
22
17
|
dependencies:
|
23
18
|
- !ruby/object:Gem::Dependency
|
24
19
|
name: trollop
|
@@ -28,10 +23,6 @@ dependencies:
|
|
28
23
|
requirements:
|
29
24
|
- - ">="
|
30
25
|
- !ruby/object:Gem::Version
|
31
|
-
hash: 47
|
32
|
-
segments:
|
33
|
-
- 1
|
34
|
-
- 16
|
35
26
|
version: "1.16"
|
36
27
|
type: :runtime
|
37
28
|
version_requirements: *id001
|
@@ -43,11 +34,6 @@ dependencies:
|
|
43
34
|
requirements:
|
44
35
|
- - ">="
|
45
36
|
- !ruby/object:Gem::Version
|
46
|
-
hash: 11
|
47
|
-
segments:
|
48
|
-
- 0
|
49
|
-
- 5
|
50
|
-
- 0
|
51
37
|
version: 0.5.0
|
52
38
|
type: :runtime
|
53
39
|
version_requirements: *id002
|
@@ -59,10 +45,6 @@ dependencies:
|
|
59
45
|
requirements:
|
60
46
|
- - ">="
|
61
47
|
- !ruby/object:Gem::Version
|
62
|
-
hash: 7
|
63
|
-
segments:
|
64
|
-
- 3
|
65
|
-
- 0
|
66
48
|
version: "3.0"
|
67
49
|
type: :runtime
|
68
50
|
version_requirements: *id003
|
@@ -74,10 +56,6 @@ dependencies:
|
|
74
56
|
requirements:
|
75
57
|
- - ">="
|
76
58
|
- !ruby/object:Gem::Version
|
77
|
-
hash: 3
|
78
|
-
segments:
|
79
|
-
- 2
|
80
|
-
- 0
|
81
59
|
version: "2.0"
|
82
60
|
type: :runtime
|
83
61
|
version_requirements: *id004
|
@@ -89,10 +67,6 @@ dependencies:
|
|
89
67
|
requirements:
|
90
68
|
- - ">="
|
91
69
|
- !ruby/object:Gem::Version
|
92
|
-
hash: 25
|
93
|
-
segments:
|
94
|
-
- 0
|
95
|
-
- 9
|
96
70
|
version: "0.9"
|
97
71
|
type: :runtime
|
98
72
|
version_requirements: *id005
|
@@ -104,10 +78,6 @@ dependencies:
|
|
104
78
|
requirements:
|
105
79
|
- - ">="
|
106
80
|
- !ruby/object:Gem::Version
|
107
|
-
hash: 1
|
108
|
-
segments:
|
109
|
-
- 0
|
110
|
-
- 5
|
111
81
|
version: "0.5"
|
112
82
|
type: :runtime
|
113
83
|
version_requirements: *id006
|
@@ -119,10 +89,6 @@ dependencies:
|
|
119
89
|
requirements:
|
120
90
|
- - ">="
|
121
91
|
- !ruby/object:Gem::Version
|
122
|
-
hash: 3
|
123
|
-
segments:
|
124
|
-
- 2
|
125
|
-
- 0
|
126
92
|
version: "2.0"
|
127
93
|
type: :runtime
|
128
94
|
version_requirements: *id007
|
@@ -134,29 +100,26 @@ dependencies:
|
|
134
100
|
requirements:
|
135
101
|
- - ">="
|
136
102
|
- !ruby/object:Gem::Version
|
137
|
-
hash: 7
|
138
|
-
segments:
|
139
|
-
- 1
|
140
|
-
- 5
|
141
|
-
- 2
|
142
103
|
version: 1.5.2
|
143
104
|
type: :runtime
|
144
105
|
version_requirements: *id008
|
145
|
-
description:
|
146
|
-
email:
|
106
|
+
description: ""
|
107
|
+
email:
|
108
|
+
- ilia@flamefork.ru
|
109
|
+
- art.orlov@gmail.com
|
147
110
|
executables:
|
148
111
|
- standup
|
149
112
|
extensions: []
|
150
113
|
|
151
|
-
extra_rdoc_files:
|
152
|
-
|
153
|
-
- README.md
|
114
|
+
extra_rdoc_files: []
|
115
|
+
|
154
116
|
files:
|
117
|
+
- .gitignore
|
155
118
|
- .rvmrc
|
119
|
+
- Gemfile
|
156
120
|
- LICENSE
|
157
121
|
- README.md
|
158
122
|
- Rakefile
|
159
|
-
- VERSION
|
160
123
|
- bin/standup
|
161
124
|
- lib/standup.rb
|
162
125
|
- lib/standup/core_ext.rb
|
@@ -171,6 +134,7 @@ files:
|
|
171
134
|
- lib/standup/scripts/base.rb
|
172
135
|
- lib/standup/scripts/node.rb
|
173
136
|
- lib/standup/settings.rb
|
137
|
+
- lib/standup/version.rb
|
174
138
|
- scripts/allocate_ip.rb
|
175
139
|
- scripts/appconsole.rb
|
176
140
|
- scripts/basics.rb
|
@@ -178,6 +142,7 @@ files:
|
|
178
142
|
- scripts/browse.rb
|
179
143
|
- scripts/db_backup.rb
|
180
144
|
- scripts/delayed_job.rb
|
145
|
+
- scripts/delayed_job/delayed_job
|
181
146
|
- scripts/delayed_job/delayed_job_monit.conf
|
182
147
|
- scripts/download_db.rb
|
183
148
|
- scripts/ec2.rb
|
@@ -232,22 +197,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
232
197
|
requirements:
|
233
198
|
- - ">="
|
234
199
|
- !ruby/object:Gem::Version
|
235
|
-
hash: 3
|
236
|
-
segments:
|
237
|
-
- 0
|
238
200
|
version: "0"
|
239
201
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
240
202
|
none: false
|
241
203
|
requirements:
|
242
204
|
- - ">="
|
243
205
|
- !ruby/object:Gem::Version
|
244
|
-
hash: 3
|
245
|
-
segments:
|
246
|
-
- 0
|
247
206
|
version: "0"
|
248
207
|
requirements: []
|
249
208
|
|
250
|
-
rubyforge_project:
|
209
|
+
rubyforge_project: standup
|
251
210
|
rubygems_version: 1.6.2
|
252
211
|
signing_key:
|
253
212
|
specification_version: 3
|
data/VERSION
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
0.4.0
|