rails_pwnerer 0.6.27 → 0.6.29
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +4 -0
- data/Manifest +42 -40
- data/README +4 -0
- data/ext/rpwn_setup_notice/extconf.rb +23 -2
- data/lib/pwnage/app/config.rb +1 -1
- data/lib/pwnage/app/main.rb +8 -6
- data/lib/pwnage/app/perforce.rb +169 -0
- data/lib/pwnage/base/input.rb +19 -0
- data/lib/pwnage/dev_executor.rb +33 -0
- data/lib/pwnage/scaffolds/config.rb +1 -1
- data/lib/pwnage/scaffolds/gems.rb +4 -1
- data/lib/rails_pwnerer.rb +2 -0
- data/rails_pwnerer.gemspec +5 -5
- metadata +82 -78
data/CHANGELOG
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
v0.6.29. Support for checking out from Perforce.
|
2
|
+
|
3
|
+
v0.6.28. rpwndev can help add a Rails application tree to a version control repository.
|
4
|
+
|
1
5
|
v0.6.27. Fixed cpu detection so it doesn't crash if neither sys-cpu nor procfs are available.
|
2
6
|
|
3
7
|
v0.6.26. Fixed local git configuration so updates work and don't wipe logs.
|
data/Manifest
CHANGED
@@ -1,52 +1,54 @@
|
|
1
|
+
README
|
2
|
+
ext/rpwn_setup_notice/extconf.rb
|
3
|
+
LICENSE
|
4
|
+
RUBYFORGE
|
5
|
+
Rakefile
|
6
|
+
Manifest
|
1
7
|
bin/rpwn
|
2
|
-
bin/rpwnctl
|
3
8
|
bin/rpwndev
|
9
|
+
bin/rpwnctl
|
4
10
|
CHANGELOG
|
5
|
-
|
6
|
-
lib/pwnage/
|
7
|
-
lib/pwnage/
|
8
|
-
lib/pwnage/
|
9
|
-
lib/pwnage/
|
11
|
+
lib/rails_pwnerer.rb
|
12
|
+
lib/pwnage/util/kill_process_set.rb
|
13
|
+
lib/pwnage/util/main.rb
|
14
|
+
lib/pwnage/executor.rb
|
15
|
+
lib/pwnage/scaffolds/hook_dyndns.rb
|
16
|
+
lib/pwnage/scaffolds/gems.rb
|
17
|
+
lib/pwnage/scaffolds/dir_permissions.rb
|
18
|
+
lib/pwnage/scaffolds/dirs.rb
|
19
|
+
lib/pwnage/scaffolds/config.rb
|
20
|
+
lib/pwnage/scaffolds/mysql_config.rb
|
21
|
+
lib/pwnage/scaffolds/packages.rb
|
22
|
+
lib/pwnage/scaffolds/sshd.rb
|
23
|
+
lib/pwnage/scaffolds/rubygems.rb
|
24
|
+
lib/pwnage/scaffolds/hook_daemon.rb
|
25
|
+
lib/pwnage/config/main.rb
|
26
|
+
lib/pwnage/config/repository.rb
|
27
|
+
lib/pwnage/config/frontends.rb
|
28
|
+
lib/pwnage/config/ports.rb
|
29
|
+
lib/pwnage/config/app.rb
|
30
|
+
lib/pwnage/config/paths.rb
|
31
|
+
lib/pwnage/ctl_executor.rb
|
32
|
+
lib/pwnage/base.rb
|
33
|
+
lib/pwnage/dev_executor.rb
|
10
34
|
lib/pwnage/app/gems.rb
|
11
|
-
lib/pwnage/app/git.rb
|
12
|
-
lib/pwnage/app/main.rb
|
13
35
|
lib/pwnage/app/nginx_config.rb
|
36
|
+
lib/pwnage/app/main.rb
|
14
37
|
lib/pwnage/app/scripts.rb
|
15
38
|
lib/pwnage/app/svn.rb
|
16
|
-
lib/pwnage/
|
39
|
+
lib/pwnage/app/perforce.rb
|
40
|
+
lib/pwnage/app/database.rb
|
41
|
+
lib/pwnage/app/config.rb
|
42
|
+
lib/pwnage/app/git.rb
|
43
|
+
lib/pwnage/app/cluster_config.rb
|
44
|
+
lib/pwnage/app/files.rb
|
45
|
+
lib/pwnage/base/hostname.rb
|
46
|
+
lib/pwnage/base/gems.rb
|
47
|
+
lib/pwnage/base/input.rb
|
17
48
|
lib/pwnage/base/cpus.rb
|
49
|
+
lib/pwnage/base/atomics.rb
|
18
50
|
lib/pwnage/base/dirs.rb
|
19
|
-
lib/pwnage/base/
|
20
|
-
lib/pwnage/base/hostname.rb
|
51
|
+
lib/pwnage/base/rails.rb
|
21
52
|
lib/pwnage/base/packages.rb
|
22
53
|
lib/pwnage/base/process.rb
|
23
|
-
lib/pwnage/base/rails.rb
|
24
54
|
lib/pwnage/base/startup.rb
|
25
|
-
lib/pwnage/base.rb
|
26
|
-
lib/pwnage/config/app.rb
|
27
|
-
lib/pwnage/config/frontends.rb
|
28
|
-
lib/pwnage/config/main.rb
|
29
|
-
lib/pwnage/config/paths.rb
|
30
|
-
lib/pwnage/config/ports.rb
|
31
|
-
lib/pwnage/config/repository.rb
|
32
|
-
lib/pwnage/ctl_executor.rb
|
33
|
-
lib/pwnage/dev_executor.rb
|
34
|
-
lib/pwnage/executor.rb
|
35
|
-
lib/pwnage/scaffolds/config.rb
|
36
|
-
lib/pwnage/scaffolds/dir_permissions.rb
|
37
|
-
lib/pwnage/scaffolds/dirs.rb
|
38
|
-
lib/pwnage/scaffolds/gems.rb
|
39
|
-
lib/pwnage/scaffolds/hook_daemon.rb
|
40
|
-
lib/pwnage/scaffolds/hook_dyndns.rb
|
41
|
-
lib/pwnage/scaffolds/mysql_config.rb
|
42
|
-
lib/pwnage/scaffolds/packages.rb
|
43
|
-
lib/pwnage/scaffolds/rubygems.rb
|
44
|
-
lib/pwnage/scaffolds/sshd.rb
|
45
|
-
lib/pwnage/util/kill_process_set.rb
|
46
|
-
lib/pwnage/util/main.rb
|
47
|
-
lib/rails_pwnerer.rb
|
48
|
-
LICENSE
|
49
|
-
Manifest
|
50
|
-
Rakefile
|
51
|
-
README
|
52
|
-
RUBYFORGE
|
data/README
CHANGED
@@ -1,9 +1,30 @@
|
|
1
1
|
# invoked when the gem is installed
|
2
2
|
|
3
3
|
# cheat to get the gem installed in the right place even on Debians
|
4
|
-
|
5
|
-
|
4
|
+
['rpwn', 'rpwnctl', 'rpwndev'].each do |file|
|
5
|
+
binpath = "/usr/bin/#{file}"
|
6
|
+
unless File.exists? binpath
|
7
|
+
Kernel.system "ln -s #{File.expand_path(__FILE__ + "/../../../bin/#{file}")} #{binpath}"
|
8
|
+
end
|
9
|
+
|
10
|
+
File.chmod((File.stat(binpath).mode | 0755), binpath)
|
11
|
+
end
|
12
|
+
|
13
|
+
# make the gem readable by anyone (workaround systems with messed up permission masks)
|
14
|
+
def openup(path)
|
15
|
+
if File.file?(path)
|
16
|
+
File.chmod((File.stat(path).mode | 0755), path)
|
17
|
+
return
|
18
|
+
end
|
19
|
+
|
20
|
+
Dir.foreach(path) do |entry|
|
21
|
+
next if ['.', '..'].include? entry
|
22
|
+
openup File.join(path, entry)
|
23
|
+
end
|
6
24
|
end
|
25
|
+
base_path = File.expand_path(__FILE__ + "/../../../")
|
26
|
+
openup(base_path)
|
27
|
+
|
7
28
|
# we really shouldn't be abusing rubygems' root; then again, the Debian maintaines shouldn't be
|
8
29
|
# abusing the patience of Ruby developers
|
9
30
|
|
data/lib/pwnage/app/config.rb
CHANGED
@@ -47,7 +47,7 @@ class RailsPwnage::App::Config
|
|
47
47
|
app_db[:enable_db_reset] ||= false
|
48
48
|
|
49
49
|
# the number of cores on the platform
|
50
|
-
app_db[:detected_cores] ||= cpu_cores.
|
50
|
+
app_db[:detected_cores] ||= cpu_cores.length
|
51
51
|
end
|
52
52
|
|
53
53
|
# allocates room for the application and creates the application configuration database
|
data/lib/pwnage/app/main.rb
CHANGED
@@ -18,9 +18,11 @@ module RailsPwnage::App
|
|
18
18
|
app_name = app_name[0, app_name.rindex('.')] if app_name.rindex '.'
|
19
19
|
instance_magic(app_name, instance_name) do |app, instance|
|
20
20
|
Config.new.alloc app, instance
|
21
|
-
|
22
|
-
|
23
|
-
|
21
|
+
|
22
|
+
success = nil
|
23
|
+
[Git, Perforce, Svn].each do |vcs|
|
24
|
+
success = vcs.new.checkout remote_path, app, instance
|
25
|
+
break unless success == :next
|
24
26
|
end
|
25
27
|
if success == :ok
|
26
28
|
[Config, Files, Gems, Database, ClusterConfig, NginxConfig, Scripts].each do |mod|
|
@@ -28,7 +30,7 @@ module RailsPwnage::App
|
|
28
30
|
end
|
29
31
|
else
|
30
32
|
if success == :next
|
31
|
-
print "rails_pwange only supports git and
|
33
|
+
print "rails_pwange only supports git, subversion, and perforce at this time. \n"
|
32
34
|
else
|
33
35
|
print "You didn't checkout a Rails application. Check your remote path.\n"
|
34
36
|
end
|
@@ -44,7 +46,7 @@ module RailsPwnage::App
|
|
44
46
|
def self.update(app_name, instance_name)
|
45
47
|
instance_magic(app_name, instance_name) do |app, instance|
|
46
48
|
update_app app, instance do
|
47
|
-
[Git, Svn, Config, Gems, Database, Scripts].each do |mod|
|
49
|
+
[Git, Perforce, Svn, Config, Gems, Database, Scripts].each do |mod|
|
48
50
|
mod.new.update app, instance
|
49
51
|
end
|
50
52
|
end
|
@@ -59,7 +61,7 @@ module RailsPwnage::App
|
|
59
61
|
ClusterConfig.new.stop app, instance
|
60
62
|
Scripts.new.post_stop app, instance
|
61
63
|
|
62
|
-
[NginxConfig, ClusterConfig, Database, Files, Config].each do |mod|
|
64
|
+
[NginxConfig, ClusterConfig, Database, Perforce, Files, Config].each do |mod|
|
63
65
|
mod.new.remove app, instance
|
64
66
|
end
|
65
67
|
end
|
@@ -0,0 +1,169 @@
|
|
1
|
+
# checks out and updates the application from a Perforce repository
|
2
|
+
|
3
|
+
require 'English'
|
4
|
+
require 'fileutils'
|
5
|
+
require 'pathname'
|
6
|
+
require 'set'
|
7
|
+
|
8
|
+
class RailsPwnage::App::Perforce
|
9
|
+
include RailsPwnage::Base
|
10
|
+
|
11
|
+
# TODO(costan): figure out how to remove unused files in perforce and do it
|
12
|
+
|
13
|
+
# remove any files not in client workspace
|
14
|
+
def cleanup_app_dir(app_name, instance_name, target_dir, app_name_is_dir = false)
|
15
|
+
path_base = app_name_is_dir ? app_name : RailsPwnage::Config[app_name, instance_name][:app_path]
|
16
|
+
path_base = File.join path_base, target_dir
|
17
|
+
path_base = path_base[0...-1] if path_base[-1] == '/'
|
18
|
+
Dir.chdir path_base do
|
19
|
+
# get a listing of the files in that directory under version control
|
20
|
+
p4_output = `p4 have ...`
|
21
|
+
|
22
|
+
# if p4 have failed, we don't have a reliable list, so we must give up
|
23
|
+
break if $CHILD_STATUS.exitstatus != 0
|
24
|
+
|
25
|
+
client_files = Set.new
|
26
|
+
p4_output.each_line do |output_line|
|
27
|
+
next unless i = output_line.index(path_base)
|
28
|
+
client_files << output_line[(i + path_base.length + 1)..-1].strip
|
29
|
+
end
|
30
|
+
|
31
|
+
local_files = Dir.glob('**/*')
|
32
|
+
local_files.each do |file|
|
33
|
+
next if client_files.include? file
|
34
|
+
next unless File.file? file
|
35
|
+
|
36
|
+
FileUtils.rm_r file
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
# clean up the application directory by removing caches
|
42
|
+
def cleanup_app_caches(app_name, instance_name, app_name_is_dir = false)
|
43
|
+
# TODO: this is almost-duplicated in git.rb -- pull up somewhere
|
44
|
+
app_path = app_name_is_dir ? app_name : RailsPwnage::Config[app_name, instance_name][:app_path]
|
45
|
+
return unless File.exists?(File.join(app_path, '.p4clientspec'))
|
46
|
+
|
47
|
+
# TODO: learn how Rails caches work and kill those too
|
48
|
+
['app', 'lib', 'public/images',
|
49
|
+
'public/javascripts', 'public/stylesheets', 'script',
|
50
|
+
'test', 'tmp', 'vendor'
|
51
|
+
].each { |dir| cleanup_app_dir app_name, instance_name, dir, app_name_is_dir }
|
52
|
+
end
|
53
|
+
|
54
|
+
def perforce_config_file
|
55
|
+
ENV['P4CONFIG'] = '.p4config' unless ENV['P4CONFIG']
|
56
|
+
return ENV['P4CONFIG']
|
57
|
+
end
|
58
|
+
|
59
|
+
# Asks the user for their passwords and sets it, if that's worth it.
|
60
|
+
# Assumes the current directory is the application's directory.
|
61
|
+
def try_prompting_for_perforce_password
|
62
|
+
return false if ENV["P4PASSWD"]
|
63
|
+
|
64
|
+
p4_config = File.read perforce_config_file
|
65
|
+
return false if p4_config.index "P4PASSWD="
|
66
|
+
|
67
|
+
p4_password = prompt_user_for_password('Please enter your Perforce password:', 'Cannot securely obtain your Perforce password')
|
68
|
+
return false unless p4_password
|
69
|
+
ENV['P4PASSWD'] = p4_password
|
70
|
+
return true
|
71
|
+
end
|
72
|
+
|
73
|
+
def perforce_update(app_name, instance_name)
|
74
|
+
Dir.chdir RailsPwnage::Config[app_name, instance_name][:app_path] do
|
75
|
+
perforce_config_file
|
76
|
+
|
77
|
+
print "Doing Perforce sync...\n"
|
78
|
+
success = Kernel.system 'p4 sync'
|
79
|
+
if !success
|
80
|
+
Kernel.system 'p4 sync' if try_prompting_for_perforce_password
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
def checkout(remote_path, app_name, instance_name)
|
86
|
+
app_path = RailsPwnage::Config[app_name, instance_name][:app_path]
|
87
|
+
|
88
|
+
# paths look like p4://user@depot:port/path/to/application
|
89
|
+
path_regexp = /^p4\:\/\/([^\@\/]*\@)?([^\:\/]*)(:[1-9]+)?\/(.*)$/
|
90
|
+
path_match = path_regexp.match remote_path
|
91
|
+
return :next unless path_match
|
92
|
+
|
93
|
+
# extract path components
|
94
|
+
p4_user = path_match[1] ? path_match[1][0...-1] : current_user
|
95
|
+
p4_user, p4_password = *p4_user.split(':', 2)
|
96
|
+
p4_server = path_match[2]
|
97
|
+
p4_port = path_match[3] ? path_match[3][1..-1].to_i : 1666
|
98
|
+
p4_path = path_match[4]
|
99
|
+
p4_client = "rpwn-#{p4_user}-#{app_name}-#{instance_name}"
|
100
|
+
|
101
|
+
# create settings file
|
102
|
+
p4_config_file =
|
103
|
+
File.open(File.join(app_path, perforce_config_file), 'w') do |f|
|
104
|
+
f.write <<END_SETTINGS
|
105
|
+
P4PORT=#{p4_server}:#{p4_port}
|
106
|
+
P4USER=#{p4_user}
|
107
|
+
P4CLIENT=#{p4_client}
|
108
|
+
END_SETTINGS
|
109
|
+
f.write "P4PASSWD=#{p4_password}\n" if p4_password
|
110
|
+
end
|
111
|
+
|
112
|
+
# create client spec
|
113
|
+
File.open(File.join(app_path, '.p4clientspec'), 'w') do |f|
|
114
|
+
f.write <<END_SETTINGS
|
115
|
+
Client: #{p4_client}
|
116
|
+
Owner: #{p4_user}
|
117
|
+
Description: Deployment client for #{app_name} instance #{instance_name} created by rails_pwnerer
|
118
|
+
Root: #{app_path}
|
119
|
+
Options: noallwrite clobber unlocked nomodtime rmdir
|
120
|
+
SubmitOptions: revertunchanged
|
121
|
+
LineEnd: share
|
122
|
+
View:
|
123
|
+
//depot/#{p4_path}/... //#{p4_client}/...
|
124
|
+
END_SETTINGS
|
125
|
+
end
|
126
|
+
|
127
|
+
print "Creaing Perforce client...\n"
|
128
|
+
Dir.chdir RailsPwnage::Config[app_name, instance_name][:app_path] do
|
129
|
+
success = Kernel.system "p4 client -i < .p4clientspec"
|
130
|
+
if !success
|
131
|
+
Kernel.system "p4 client -i < .p4clientspec" if try_prompting_for_perforce_password
|
132
|
+
end
|
133
|
+
|
134
|
+
print "Doing Perforce sync...\n"
|
135
|
+
Kernel.system 'p4 sync -f'
|
136
|
+
end
|
137
|
+
|
138
|
+
# check that we really checked out a Rails app
|
139
|
+
return check_rails_root(app_path) ? :ok : false
|
140
|
+
end
|
141
|
+
|
142
|
+
def update(app_name, instance_name)
|
143
|
+
app_path = RailsPwnage::Config[app_name, instance_name][:app_path]
|
144
|
+
return unless File.exists?(File.join(app_path, '.p4clientspec'))
|
145
|
+
|
146
|
+
# TODO: maybe backup old version before issuing the p4 sync?
|
147
|
+
|
148
|
+
perforce_update app_name, instance_name
|
149
|
+
cleanup_app_caches app_name, instance_name
|
150
|
+
end
|
151
|
+
|
152
|
+
def remove(app_name, instance_name)
|
153
|
+
app_path = RailsPwnage::Config[app_name, instance_name][:app_path]
|
154
|
+
return unless File.exists?(File.join(app_path, '.p4clientspec'))
|
155
|
+
|
156
|
+
|
157
|
+
print "Deleting Perforce client...\n"
|
158
|
+
Dir.chdir RailsPwnage::Config[app_name, instance_name][:app_path] do
|
159
|
+
p4_config = File.read perforce_config_file
|
160
|
+
client_match = /^P4CLIENT=(.*)$/.match p4_config
|
161
|
+
p4_client = client_match[1]
|
162
|
+
|
163
|
+
success = Kernel.system "p4 client -d #{p4_client}"
|
164
|
+
if !success
|
165
|
+
Kernel.system "p4 client -d #{p4_client}" if try_prompting_for_perforce_password
|
166
|
+
end
|
167
|
+
end
|
168
|
+
end
|
169
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# extends Base with the ability to get input from the user
|
2
|
+
|
3
|
+
begin
|
4
|
+
require 'rubygems'
|
5
|
+
require 'highline'
|
6
|
+
rescue
|
7
|
+
# no highline... tough luck
|
8
|
+
end
|
9
|
+
|
10
|
+
module RailsPwnage::Base
|
11
|
+
def prompt_user_for_password(prompt, fail_prompt)
|
12
|
+
unless defined?(HighLine)
|
13
|
+
print "#{fail_prompt}\n"
|
14
|
+
return nil
|
15
|
+
end
|
16
|
+
|
17
|
+
HighLine.new.ask(prompt) { |question| question.echo = '' }
|
18
|
+
end
|
19
|
+
end
|
data/lib/pwnage/dev_executor.rb
CHANGED
@@ -26,6 +26,32 @@ class RailsPwnage::DevExecutor
|
|
26
26
|
|
27
27
|
File.open(file, 'w') { |f| YAML.dump config, f }
|
28
28
|
end
|
29
|
+
|
30
|
+
def checkin_rails_app(checkin_command, path_base)
|
31
|
+
is_empty = true
|
32
|
+
|
33
|
+
Dir.foreach(path_base) do |entry|
|
34
|
+
# skip uninteresting entries
|
35
|
+
next if ['.', '..'].include? entry
|
36
|
+
|
37
|
+
# check in files and subdirectories
|
38
|
+
is_empty = false
|
39
|
+
path = File.join path_base, entry
|
40
|
+
if File.file? path
|
41
|
+
Kernel.system "#{checkin_command} add #{path}"
|
42
|
+
has_files = true
|
43
|
+
else
|
44
|
+
checkin_rails_app checkin_command, path
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
if is_empty
|
49
|
+
# workaround to check in blank directory
|
50
|
+
path = File.join path_base, '.not_blank'
|
51
|
+
File.open(path, 'w') { |f| f.write '' }
|
52
|
+
Kernel.system "#{checkin_command} add #{path}"
|
53
|
+
end
|
54
|
+
end
|
29
55
|
|
30
56
|
|
31
57
|
# standalone runner
|
@@ -66,6 +92,13 @@ class RailsPwnage::DevExecutor
|
|
66
92
|
config.delete property
|
67
93
|
write_config config, instance
|
68
94
|
|
95
|
+
when 'checkin'
|
96
|
+
unless args[1]
|
97
|
+
print "Please provide the checkin command (e.g. git).\n"
|
98
|
+
exit
|
99
|
+
end
|
100
|
+
checkin_rails_app args[1], '.'
|
101
|
+
|
69
102
|
else
|
70
103
|
print "Unrecognized command #{args[0]}\n"
|
71
104
|
end
|
@@ -18,7 +18,7 @@ class RailsPwnage::Scaffolds::Config
|
|
18
18
|
# the default instance name
|
19
19
|
host_info[:instance] = Socket.gethostname()
|
20
20
|
# the computer's name (if we ever do status reports)
|
21
|
-
host_info[:name] = Socket.gethostname()
|
21
|
+
host_info[:name] = Socket.gethostname().split('.').first
|
22
22
|
# username for creating / dropping databases
|
23
23
|
host_info[:dbroot_name] = 'root'
|
24
24
|
# password for creating / dropping databases
|
@@ -23,8 +23,11 @@ class RailsPwnage::Scaffolds::Gems
|
|
23
23
|
# used to determine the number of available CPUs and cores
|
24
24
|
install_gems %w(sys-cpu)
|
25
25
|
|
26
|
+
# used to get version control passwords
|
27
|
+
install_gems %w(highline termios)
|
28
|
+
|
26
29
|
# useful for building gems and debugging
|
27
|
-
install_gems %w(
|
30
|
+
install_gems %w(echoe)
|
28
31
|
end
|
29
32
|
|
30
33
|
# runner
|
data/lib/rails_pwnerer.rb
CHANGED
@@ -17,6 +17,7 @@ require 'pwnage/base/cpus.rb'
|
|
17
17
|
require 'pwnage/base/dirs.rb'
|
18
18
|
require 'pwnage/base/gems.rb'
|
19
19
|
require 'pwnage/base/hostname.rb'
|
20
|
+
require 'pwnage/base/input.rb'
|
20
21
|
require 'pwnage/base/packages.rb'
|
21
22
|
require 'pwnage/base/process.rb'
|
22
23
|
require 'pwnage/base/rails.rb'
|
@@ -51,6 +52,7 @@ require 'pwnage/app/files.rb'
|
|
51
52
|
require 'pwnage/app/gems.rb'
|
52
53
|
require 'pwnage/app/git.rb'
|
53
54
|
require 'pwnage/app/nginx_config.rb'
|
55
|
+
require 'pwnage/app/perforce.rb'
|
54
56
|
require 'pwnage/app/scripts.rb'
|
55
57
|
require 'pwnage/app/svn.rb'
|
56
58
|
|
data/rails_pwnerer.gemspec
CHANGED
@@ -2,18 +2,18 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{rails_pwnerer}
|
5
|
-
s.version = "0.6.
|
5
|
+
s.version = "0.6.29"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Victor Costan"]
|
9
|
-
s.date = %q{2009-01-
|
9
|
+
s.date = %q{2009-01-27}
|
10
10
|
s.default_executable = %q{bin/rpwn}
|
11
11
|
s.description = %q{Rails deployment tool/hack.}
|
12
12
|
s.email = %q{victor@costan.us}
|
13
|
-
s.executables = ["rpwn", "
|
13
|
+
s.executables = ["rpwn", "rpwndev", "rpwnctl"]
|
14
14
|
s.extensions = ["ext/rpwn_setup_notice/extconf.rb"]
|
15
|
-
s.extra_rdoc_files = ["bin/rpwn", "bin/
|
16
|
-
s.files = ["bin/rpwn", "bin/
|
15
|
+
s.extra_rdoc_files = ["README", "ext/rpwn_setup_notice/extconf.rb", "LICENSE", "bin/rpwn", "bin/rpwndev", "bin/rpwnctl", "CHANGELOG", "lib/rails_pwnerer.rb", "lib/pwnage/util/kill_process_set.rb", "lib/pwnage/util/main.rb", "lib/pwnage/executor.rb", "lib/pwnage/scaffolds/hook_dyndns.rb", "lib/pwnage/scaffolds/gems.rb", "lib/pwnage/scaffolds/dir_permissions.rb", "lib/pwnage/scaffolds/dirs.rb", "lib/pwnage/scaffolds/config.rb", "lib/pwnage/scaffolds/mysql_config.rb", "lib/pwnage/scaffolds/packages.rb", "lib/pwnage/scaffolds/sshd.rb", "lib/pwnage/scaffolds/rubygems.rb", "lib/pwnage/scaffolds/hook_daemon.rb", "lib/pwnage/config/main.rb", "lib/pwnage/config/repository.rb", "lib/pwnage/config/frontends.rb", "lib/pwnage/config/ports.rb", "lib/pwnage/config/app.rb", "lib/pwnage/config/paths.rb", "lib/pwnage/ctl_executor.rb", "lib/pwnage/base.rb", "lib/pwnage/dev_executor.rb", "lib/pwnage/app/gems.rb", "lib/pwnage/app/nginx_config.rb", "lib/pwnage/app/main.rb", "lib/pwnage/app/scripts.rb", "lib/pwnage/app/svn.rb", "lib/pwnage/app/perforce.rb", "lib/pwnage/app/database.rb", "lib/pwnage/app/config.rb", "lib/pwnage/app/git.rb", "lib/pwnage/app/cluster_config.rb", "lib/pwnage/app/files.rb", "lib/pwnage/base/hostname.rb", "lib/pwnage/base/gems.rb", "lib/pwnage/base/input.rb", "lib/pwnage/base/cpus.rb", "lib/pwnage/base/atomics.rb", "lib/pwnage/base/dirs.rb", "lib/pwnage/base/rails.rb", "lib/pwnage/base/packages.rb", "lib/pwnage/base/process.rb", "lib/pwnage/base/startup.rb"]
|
16
|
+
s.files = ["README", "ext/rpwn_setup_notice/extconf.rb", "LICENSE", "RUBYFORGE", "Rakefile", "Manifest", "bin/rpwn", "bin/rpwndev", "bin/rpwnctl", "CHANGELOG", "lib/rails_pwnerer.rb", "lib/pwnage/util/kill_process_set.rb", "lib/pwnage/util/main.rb", "lib/pwnage/executor.rb", "lib/pwnage/scaffolds/hook_dyndns.rb", "lib/pwnage/scaffolds/gems.rb", "lib/pwnage/scaffolds/dir_permissions.rb", "lib/pwnage/scaffolds/dirs.rb", "lib/pwnage/scaffolds/config.rb", "lib/pwnage/scaffolds/mysql_config.rb", "lib/pwnage/scaffolds/packages.rb", "lib/pwnage/scaffolds/sshd.rb", "lib/pwnage/scaffolds/rubygems.rb", "lib/pwnage/scaffolds/hook_daemon.rb", "lib/pwnage/config/main.rb", "lib/pwnage/config/repository.rb", "lib/pwnage/config/frontends.rb", "lib/pwnage/config/ports.rb", "lib/pwnage/config/app.rb", "lib/pwnage/config/paths.rb", "lib/pwnage/ctl_executor.rb", "lib/pwnage/base.rb", "lib/pwnage/dev_executor.rb", "lib/pwnage/app/gems.rb", "lib/pwnage/app/nginx_config.rb", "lib/pwnage/app/main.rb", "lib/pwnage/app/scripts.rb", "lib/pwnage/app/svn.rb", "lib/pwnage/app/perforce.rb", "lib/pwnage/app/database.rb", "lib/pwnage/app/config.rb", "lib/pwnage/app/git.rb", "lib/pwnage/app/cluster_config.rb", "lib/pwnage/app/files.rb", "lib/pwnage/base/hostname.rb", "lib/pwnage/base/gems.rb", "lib/pwnage/base/input.rb", "lib/pwnage/base/cpus.rb", "lib/pwnage/base/atomics.rb", "lib/pwnage/base/dirs.rb", "lib/pwnage/base/rails.rb", "lib/pwnage/base/packages.rb", "lib/pwnage/base/process.rb", "lib/pwnage/base/startup.rb", "rails_pwnerer.gemspec"]
|
17
17
|
s.has_rdoc = true
|
18
18
|
s.homepage = %q{http://www.costan.us/rails_pwnage}
|
19
19
|
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Rails_pwnerer", "--main", "README"]
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails_pwnerer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.29
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Victor Costan
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-01-
|
12
|
+
date: 2009-01-27 00:00:00 -05:00
|
13
13
|
default_executable: bin/rpwn
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -26,113 +26,117 @@ description: Rails deployment tool/hack.
|
|
26
26
|
email: victor@costan.us
|
27
27
|
executables:
|
28
28
|
- rpwn
|
29
|
-
- rpwnctl
|
30
29
|
- rpwndev
|
30
|
+
- rpwnctl
|
31
31
|
extensions:
|
32
32
|
- ext/rpwn_setup_notice/extconf.rb
|
33
33
|
extra_rdoc_files:
|
34
|
+
- README
|
35
|
+
- ext/rpwn_setup_notice/extconf.rb
|
36
|
+
- LICENSE
|
34
37
|
- bin/rpwn
|
35
|
-
- bin/rpwnctl
|
36
38
|
- bin/rpwndev
|
39
|
+
- bin/rpwnctl
|
37
40
|
- CHANGELOG
|
38
|
-
-
|
39
|
-
- lib/pwnage/
|
40
|
-
- lib/pwnage/
|
41
|
-
- lib/pwnage/
|
42
|
-
- lib/pwnage/
|
41
|
+
- lib/rails_pwnerer.rb
|
42
|
+
- lib/pwnage/util/kill_process_set.rb
|
43
|
+
- lib/pwnage/util/main.rb
|
44
|
+
- lib/pwnage/executor.rb
|
45
|
+
- lib/pwnage/scaffolds/hook_dyndns.rb
|
46
|
+
- lib/pwnage/scaffolds/gems.rb
|
47
|
+
- lib/pwnage/scaffolds/dir_permissions.rb
|
48
|
+
- lib/pwnage/scaffolds/dirs.rb
|
49
|
+
- lib/pwnage/scaffolds/config.rb
|
50
|
+
- lib/pwnage/scaffolds/mysql_config.rb
|
51
|
+
- lib/pwnage/scaffolds/packages.rb
|
52
|
+
- lib/pwnage/scaffolds/sshd.rb
|
53
|
+
- lib/pwnage/scaffolds/rubygems.rb
|
54
|
+
- lib/pwnage/scaffolds/hook_daemon.rb
|
55
|
+
- lib/pwnage/config/main.rb
|
56
|
+
- lib/pwnage/config/repository.rb
|
57
|
+
- lib/pwnage/config/frontends.rb
|
58
|
+
- lib/pwnage/config/ports.rb
|
59
|
+
- lib/pwnage/config/app.rb
|
60
|
+
- lib/pwnage/config/paths.rb
|
61
|
+
- lib/pwnage/ctl_executor.rb
|
62
|
+
- lib/pwnage/base.rb
|
63
|
+
- lib/pwnage/dev_executor.rb
|
43
64
|
- lib/pwnage/app/gems.rb
|
44
|
-
- lib/pwnage/app/git.rb
|
45
|
-
- lib/pwnage/app/main.rb
|
46
65
|
- lib/pwnage/app/nginx_config.rb
|
66
|
+
- lib/pwnage/app/main.rb
|
47
67
|
- lib/pwnage/app/scripts.rb
|
48
68
|
- lib/pwnage/app/svn.rb
|
49
|
-
- lib/pwnage/
|
69
|
+
- lib/pwnage/app/perforce.rb
|
70
|
+
- lib/pwnage/app/database.rb
|
71
|
+
- lib/pwnage/app/config.rb
|
72
|
+
- lib/pwnage/app/git.rb
|
73
|
+
- lib/pwnage/app/cluster_config.rb
|
74
|
+
- lib/pwnage/app/files.rb
|
75
|
+
- lib/pwnage/base/hostname.rb
|
76
|
+
- lib/pwnage/base/gems.rb
|
77
|
+
- lib/pwnage/base/input.rb
|
50
78
|
- lib/pwnage/base/cpus.rb
|
79
|
+
- lib/pwnage/base/atomics.rb
|
51
80
|
- lib/pwnage/base/dirs.rb
|
52
|
-
- lib/pwnage/base/
|
53
|
-
- lib/pwnage/base/hostname.rb
|
81
|
+
- lib/pwnage/base/rails.rb
|
54
82
|
- lib/pwnage/base/packages.rb
|
55
83
|
- lib/pwnage/base/process.rb
|
56
|
-
- lib/pwnage/base/rails.rb
|
57
84
|
- lib/pwnage/base/startup.rb
|
58
|
-
|
59
|
-
-
|
60
|
-
-
|
61
|
-
-
|
62
|
-
-
|
63
|
-
-
|
64
|
-
-
|
65
|
-
-
|
66
|
-
-
|
85
|
+
files:
|
86
|
+
- README
|
87
|
+
- ext/rpwn_setup_notice/extconf.rb
|
88
|
+
- LICENSE
|
89
|
+
- RUBYFORGE
|
90
|
+
- Rakefile
|
91
|
+
- Manifest
|
92
|
+
- bin/rpwn
|
93
|
+
- bin/rpwndev
|
94
|
+
- bin/rpwnctl
|
95
|
+
- CHANGELOG
|
96
|
+
- lib/rails_pwnerer.rb
|
97
|
+
- lib/pwnage/util/kill_process_set.rb
|
98
|
+
- lib/pwnage/util/main.rb
|
67
99
|
- lib/pwnage/executor.rb
|
68
|
-
- lib/pwnage/scaffolds/
|
100
|
+
- lib/pwnage/scaffolds/hook_dyndns.rb
|
101
|
+
- lib/pwnage/scaffolds/gems.rb
|
69
102
|
- lib/pwnage/scaffolds/dir_permissions.rb
|
70
103
|
- lib/pwnage/scaffolds/dirs.rb
|
71
|
-
- lib/pwnage/scaffolds/
|
72
|
-
- lib/pwnage/scaffolds/hook_daemon.rb
|
73
|
-
- lib/pwnage/scaffolds/hook_dyndns.rb
|
104
|
+
- lib/pwnage/scaffolds/config.rb
|
74
105
|
- lib/pwnage/scaffolds/mysql_config.rb
|
75
106
|
- lib/pwnage/scaffolds/packages.rb
|
76
|
-
- lib/pwnage/scaffolds/rubygems.rb
|
77
107
|
- lib/pwnage/scaffolds/sshd.rb
|
78
|
-
- lib/pwnage/
|
79
|
-
- lib/pwnage/
|
80
|
-
- lib/
|
81
|
-
-
|
82
|
-
-
|
83
|
-
|
84
|
-
-
|
85
|
-
-
|
86
|
-
-
|
87
|
-
-
|
88
|
-
-
|
89
|
-
- lib/pwnage/app/cluster_config.rb
|
90
|
-
- lib/pwnage/app/config.rb
|
91
|
-
- lib/pwnage/app/database.rb
|
92
|
-
- lib/pwnage/app/files.rb
|
108
|
+
- lib/pwnage/scaffolds/rubygems.rb
|
109
|
+
- lib/pwnage/scaffolds/hook_daemon.rb
|
110
|
+
- lib/pwnage/config/main.rb
|
111
|
+
- lib/pwnage/config/repository.rb
|
112
|
+
- lib/pwnage/config/frontends.rb
|
113
|
+
- lib/pwnage/config/ports.rb
|
114
|
+
- lib/pwnage/config/app.rb
|
115
|
+
- lib/pwnage/config/paths.rb
|
116
|
+
- lib/pwnage/ctl_executor.rb
|
117
|
+
- lib/pwnage/base.rb
|
118
|
+
- lib/pwnage/dev_executor.rb
|
93
119
|
- lib/pwnage/app/gems.rb
|
94
|
-
- lib/pwnage/app/git.rb
|
95
|
-
- lib/pwnage/app/main.rb
|
96
120
|
- lib/pwnage/app/nginx_config.rb
|
121
|
+
- lib/pwnage/app/main.rb
|
97
122
|
- lib/pwnage/app/scripts.rb
|
98
123
|
- lib/pwnage/app/svn.rb
|
99
|
-
- lib/pwnage/
|
124
|
+
- lib/pwnage/app/perforce.rb
|
125
|
+
- lib/pwnage/app/database.rb
|
126
|
+
- lib/pwnage/app/config.rb
|
127
|
+
- lib/pwnage/app/git.rb
|
128
|
+
- lib/pwnage/app/cluster_config.rb
|
129
|
+
- lib/pwnage/app/files.rb
|
130
|
+
- lib/pwnage/base/hostname.rb
|
131
|
+
- lib/pwnage/base/gems.rb
|
132
|
+
- lib/pwnage/base/input.rb
|
100
133
|
- lib/pwnage/base/cpus.rb
|
134
|
+
- lib/pwnage/base/atomics.rb
|
101
135
|
- lib/pwnage/base/dirs.rb
|
102
|
-
- lib/pwnage/base/
|
103
|
-
- lib/pwnage/base/hostname.rb
|
136
|
+
- lib/pwnage/base/rails.rb
|
104
137
|
- lib/pwnage/base/packages.rb
|
105
138
|
- lib/pwnage/base/process.rb
|
106
|
-
- lib/pwnage/base/rails.rb
|
107
139
|
- lib/pwnage/base/startup.rb
|
108
|
-
- lib/pwnage/base.rb
|
109
|
-
- lib/pwnage/config/app.rb
|
110
|
-
- lib/pwnage/config/frontends.rb
|
111
|
-
- lib/pwnage/config/main.rb
|
112
|
-
- lib/pwnage/config/paths.rb
|
113
|
-
- lib/pwnage/config/ports.rb
|
114
|
-
- lib/pwnage/config/repository.rb
|
115
|
-
- lib/pwnage/ctl_executor.rb
|
116
|
-
- lib/pwnage/dev_executor.rb
|
117
|
-
- lib/pwnage/executor.rb
|
118
|
-
- lib/pwnage/scaffolds/config.rb
|
119
|
-
- lib/pwnage/scaffolds/dir_permissions.rb
|
120
|
-
- lib/pwnage/scaffolds/dirs.rb
|
121
|
-
- lib/pwnage/scaffolds/gems.rb
|
122
|
-
- lib/pwnage/scaffolds/hook_daemon.rb
|
123
|
-
- lib/pwnage/scaffolds/hook_dyndns.rb
|
124
|
-
- lib/pwnage/scaffolds/mysql_config.rb
|
125
|
-
- lib/pwnage/scaffolds/packages.rb
|
126
|
-
- lib/pwnage/scaffolds/rubygems.rb
|
127
|
-
- lib/pwnage/scaffolds/sshd.rb
|
128
|
-
- lib/pwnage/util/kill_process_set.rb
|
129
|
-
- lib/pwnage/util/main.rb
|
130
|
-
- lib/rails_pwnerer.rb
|
131
|
-
- LICENSE
|
132
|
-
- Manifest
|
133
|
-
- Rakefile
|
134
|
-
- README
|
135
|
-
- RUBYFORGE
|
136
140
|
- rails_pwnerer.gemspec
|
137
141
|
has_rdoc: true
|
138
142
|
homepage: http://www.costan.us/rails_pwnage
|