rails_pwnerer 0.6.23 → 0.6.24
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +2 -0
- data/Manifest +2 -0
- data/README +4 -0
- data/lib/pwnage/app/files.rb +110 -0
- data/lib/pwnage/app/git.rb +79 -0
- data/lib/pwnage/app/main.rb +23 -12
- data/lib/pwnage/app/svn.rb +15 -108
- data/lib/rails_pwnerer.rb +2 -0
- data/rails_pwnerer.gemspec +3 -3
- metadata +5 -1
data/CHANGELOG
CHANGED
data/Manifest
CHANGED
@@ -6,7 +6,9 @@ ext/rpwn_setup_notice/extconf.rb
|
|
6
6
|
lib/pwnage/app/cluster_config.rb
|
7
7
|
lib/pwnage/app/config.rb
|
8
8
|
lib/pwnage/app/database.rb
|
9
|
+
lib/pwnage/app/files.rb
|
9
10
|
lib/pwnage/app/gems.rb
|
11
|
+
lib/pwnage/app/git.rb
|
10
12
|
lib/pwnage/app/main.rb
|
11
13
|
lib/pwnage/app/nginx_config.rb
|
12
14
|
lib/pwnage/app/scripts.rb
|
data/README
CHANGED
@@ -53,6 +53,10 @@ After you scaffold, you'll get good rubygems which put rpwn in your path.
|
|
53
53
|
4) Install your application:
|
54
54
|
sudo rpwn install svn+ssh://your.repository.host/path/to/your_application
|
55
55
|
|
56
|
+
or
|
57
|
+
|
58
|
+
sudo rpwn install you@your.repository.host/path/to/your_application.git
|
59
|
+
|
56
60
|
5) Reboot, or start the services right away:
|
57
61
|
sudo rpwn go live
|
58
62
|
|
@@ -0,0 +1,110 @@
|
|
1
|
+
# manages an application's file system
|
2
|
+
|
3
|
+
class RailsPwnage::App::Files
|
4
|
+
include RailsPwnage::Base
|
5
|
+
|
6
|
+
# dump the application files to the backup area
|
7
|
+
def dump_files(app_name, instance_name)
|
8
|
+
pwnerer_user = RailsPwnage::Config[app_name, instance_name][:pwnerer_user]
|
9
|
+
pwnerer_uid = uid_for_username(pwnerer_user)
|
10
|
+
pwnerer_gid = gid_for_username(pwnerer_user)
|
11
|
+
|
12
|
+
timestamp = Time.now.strftime '%Y%m%d%H%M%S'
|
13
|
+
dump_file = "files/#{app_name}.#{instance_name}_#{timestamp}.tar.gz"
|
14
|
+
|
15
|
+
backup_path = RailsPwnage::Config[app_name, instance_name][:backup_path]
|
16
|
+
app_path = RailsPwnage::Config[app_name, instance_name][:app_path]
|
17
|
+
Dir.chdir backup_path do
|
18
|
+
# create a cold copy of the application files
|
19
|
+
cold_copy = File.join('tmp', File.basename(app_path))
|
20
|
+
FileUtils.rm_r cold_copy if File.exists? cold_copy
|
21
|
+
FileUtils.cp_r app_path, 'tmp'
|
22
|
+
|
23
|
+
# remove the garbage in the cold copy
|
24
|
+
[RailsPwnage::App::Git, RailsPwnage::App::Svn].each do |mod|
|
25
|
+
mod.new.cleanup_app_caches cold_copy, instance_name, true
|
26
|
+
end
|
27
|
+
|
28
|
+
# pack and protect the cold copy
|
29
|
+
Dir.chdir 'tmp' do
|
30
|
+
system "tar -czf ../#{dump_file} #{File.basename(app_path)}"
|
31
|
+
end
|
32
|
+
File.chmod(400, dump_file)
|
33
|
+
File.chown(pwnerer_uid, pwnerer_gid, dump_file)
|
34
|
+
|
35
|
+
# clean up
|
36
|
+
FileUtils.rm_r cold_copy
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
# creates the directory scaffold in the application's backup dir
|
41
|
+
def scaffold_backup(app_name, instance_name)
|
42
|
+
pwnerer_user = RailsPwnage::Config[app_name, instance_name][:pwnerer_user]
|
43
|
+
pwnerer_uid = uid_for_username(pwnerer_user)
|
44
|
+
pwnerer_gid = gid_for_username(pwnerer_user)
|
45
|
+
|
46
|
+
backup_path = RailsPwnage::Config[app_name, instance_name][:backup_path]
|
47
|
+
FileUtils.mkpath backup_path unless File.exists? backup_path
|
48
|
+
File.chown(pwnerer_uid, pwnerer_gid, backup_path)
|
49
|
+
|
50
|
+
Dir.chdir(backup_path) do
|
51
|
+
['db', 'files', 'tmp'].each do |subdir|
|
52
|
+
Dir.mkdir subdir unless File.exists? subdir
|
53
|
+
File.chown pwnerer_uid, pwnerer_gid, subdir
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
# loads the latest file dump from the backup area
|
59
|
+
def load_files(app_name, instance_name)
|
60
|
+
backup_path = RailsPwnage::Config[app_name, instance_name][:backup_path]
|
61
|
+
app_path = RailsPwnage::Config[app_name, instance_name][:app_path]
|
62
|
+
|
63
|
+
dump_file = Dir.glob(File.join(backup_path, "files/#{app_name}.#{instance_name}_*")).max
|
64
|
+
restore_path = Pathname.new(File.join(app_path, '..')).cleanpath.to_s
|
65
|
+
Dir.chdir restore_path do
|
66
|
+
# find the latest dump and load it in
|
67
|
+
system "tar -xzf #{dump_file}"
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
# remove the application files
|
72
|
+
def drop_files(app_name, instance_name)
|
73
|
+
app_config = RailsPwnage::Config[app_name, instance_name]
|
74
|
+
# exit and don't complain if the app is busted
|
75
|
+
return unless app_config and File.exists? app_config[:app_path]
|
76
|
+
|
77
|
+
app_path = app_config[:app_path]
|
78
|
+
FileUtils.rm_r app_path if File.exists? app_path
|
79
|
+
end
|
80
|
+
|
81
|
+
def manage(app_name, instance_name, action)
|
82
|
+
case action
|
83
|
+
when :checkpoint
|
84
|
+
dump_files app_name, instance_name
|
85
|
+
when :rollback
|
86
|
+
drop_files app_name, instance_name
|
87
|
+
load_files app_name, instance_name
|
88
|
+
when :console
|
89
|
+
Dir.chdir(RailsPwnage::Config[app_name, instance_name][:app_path]) do
|
90
|
+
Kernel.system 'ruby script/console production'
|
91
|
+
end
|
92
|
+
when :db_console
|
93
|
+
Dir.chdir(RailsPwnage::Config[app_name, instance_name][:app_path]) do
|
94
|
+
Kernel.system 'ruby script/dbconsole --include-password production'
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
def setup(app_name, instance_name)
|
100
|
+
scaffold_backup(app_name, instance_name)
|
101
|
+
end
|
102
|
+
|
103
|
+
def remove(app_name, instance_name)
|
104
|
+
drop_files(app_name, instance_name)
|
105
|
+
end
|
106
|
+
|
107
|
+
def update(app_name, instance_name)
|
108
|
+
scaffold_backup(app_name, instance_name)
|
109
|
+
end
|
110
|
+
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
# checks out and updates the application from a Git repository
|
2
|
+
|
3
|
+
class RailsPwnage::App::Git
|
4
|
+
include RailsPwnage::Base
|
5
|
+
|
6
|
+
# remove any files not in Git in the application dir
|
7
|
+
def cleanup_app_dir(app_name, instance_name, target_dir, app_name_is_dir = false)
|
8
|
+
Dir.chdir(app_name_is_dir ? app_name : RailsPwnage::Config[app_name, instance_name][:app_path]) do
|
9
|
+
Kernel.system "git clean -f -x -- ."
|
10
|
+
Kernel.system "git checkout -- ."
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
# clean up the application directory by removing caches
|
15
|
+
def cleanup_app_caches(app_name, instance_name, app_name_is_dir = false)
|
16
|
+
app_path = app_name_is_dir ? app_name : RailsPwnage::Config[app_name, instance_name][:app_path]
|
17
|
+
return unless File.exists?(File.join(app_path, '.git'))
|
18
|
+
|
19
|
+
# TODO: learn how Rails caches work and kill those too
|
20
|
+
['app', 'lib', 'public/images',
|
21
|
+
'public/javascripts', 'public/stylesheets', 'script',
|
22
|
+
'test', 'tmp', 'vendor'
|
23
|
+
].each { |dir| cleanup_app_dir app_name, instance_name, dir, app_name_is_dir }
|
24
|
+
end
|
25
|
+
|
26
|
+
# reverts the config changes made by rpwn, so git fetch doesn't get confused
|
27
|
+
def revert_config_changes(app_name, instance_name)
|
28
|
+
Dir.chdir RailsPwnage::Config[app_name, instance_name][:app_path] do
|
29
|
+
['config'].each do |dir|
|
30
|
+
Kernel.system "git clean -f -- #{dir}"
|
31
|
+
Kernel.system "git checkout -- #{dir}"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def git_update(app_name, instance_name)
|
37
|
+
Dir.chdir RailsPwnage::Config[app_name, instance_name][:app_path] do
|
38
|
+
print "Doing Git fetch, please enter your password if prompted...\n"
|
39
|
+
Kernel.system 'git fetch origin'
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def update(app_name, instance_name)
|
44
|
+
app_path = RailsPwnage::Config[app_name, instance_name][:app_path]
|
45
|
+
return unless File.exists?(File.join(app_path, '.git'))
|
46
|
+
# TODO: maybe backup old version before issuing the svn update?
|
47
|
+
|
48
|
+
cleanup_app_caches app_name, instance_name
|
49
|
+
revert_config_changes app_name, instance_name
|
50
|
+
git_update app_name, instance_name
|
51
|
+
end
|
52
|
+
|
53
|
+
def cleanup
|
54
|
+
# git checkout -- paths
|
55
|
+
end
|
56
|
+
|
57
|
+
def checkout(remote_path, app_name, instance_name)
|
58
|
+
if hash_index = remote_path.rindex('#')
|
59
|
+
git_repository = remote_path[0, hash_index]
|
60
|
+
git_branch = remote_path[(hash_index + 1)..-1]
|
61
|
+
else
|
62
|
+
git_repository = remote_path
|
63
|
+
git_branch = 'master'
|
64
|
+
end
|
65
|
+
|
66
|
+
return :next unless git_repository =~ /\.git$/
|
67
|
+
app_path = RailsPwnage::Config[app_name, instance_name][:app_path]
|
68
|
+
|
69
|
+
FileUtils.rm_rf app_path
|
70
|
+
system "git clone #{git_repository} #{app_path}"
|
71
|
+
FileUtils.mkpath app_path unless File.exists? app_path
|
72
|
+
Dir.chdir app_path do
|
73
|
+
system "git checkout -q origin/#{git_branch}"
|
74
|
+
end
|
75
|
+
|
76
|
+
# check that we really checked out a Rails app
|
77
|
+
return check_rails_root(app_path) ? :ok : false
|
78
|
+
end
|
79
|
+
end
|
data/lib/pwnage/app/main.rb
CHANGED
@@ -12,17 +12,28 @@ module RailsPwnage::App
|
|
12
12
|
end
|
13
13
|
|
14
14
|
# installs an application given its SVN path
|
15
|
-
def self.install(
|
16
|
-
app_name = File.basename
|
15
|
+
def self.install(remote_path, instance_name)
|
16
|
+
app_name = File.basename remote_path
|
17
|
+
app_name = app_name[0, app_name.rindex('#')] if app_name.rindex '#'
|
18
|
+
app_name = app_name[0, app_name.rindex('.')] if app_name.rindex '.'
|
17
19
|
instance_magic(app_name, instance_name) do |app, instance|
|
18
20
|
Config.new.alloc app, instance
|
19
|
-
|
20
|
-
if
|
21
|
-
|
21
|
+
success = Git.new.checkout remote_path, app, instance
|
22
|
+
if success == :next
|
23
|
+
success = Svn.new.checkout remote_path, app, instance
|
24
|
+
end
|
25
|
+
if success == :ok
|
26
|
+
[Config, Files, Gems, Database, ClusterConfig, NginxConfig, Scripts].each do |mod|
|
22
27
|
mod.new.setup app, instance
|
23
28
|
end
|
24
29
|
else
|
25
|
-
|
30
|
+
if success == :next
|
31
|
+
print "rails_pwange only supports git and subversion at this time. \n"
|
32
|
+
else
|
33
|
+
print "You didn't checkout a Rails application. Check your remote path.\n"
|
34
|
+
end
|
35
|
+
|
36
|
+
[Files, Config].each do |mod|
|
26
37
|
mod.new.remove app, instance
|
27
38
|
end
|
28
39
|
end
|
@@ -33,7 +44,7 @@ module RailsPwnage::App
|
|
33
44
|
def self.update(app_name, instance_name)
|
34
45
|
instance_magic(app_name, instance_name) do |app, instance|
|
35
46
|
update_app app, instance do
|
36
|
-
[Svn, Config, Gems, Database, Scripts].each do |mod|
|
47
|
+
[Git, Svn, Config, Gems, Database, Scripts].each do |mod|
|
37
48
|
mod.new.update app, instance
|
38
49
|
end
|
39
50
|
end
|
@@ -48,7 +59,7 @@ module RailsPwnage::App
|
|
48
59
|
ClusterConfig.new.stop app, instance
|
49
60
|
Scripts.new.post_stop app, instance
|
50
61
|
|
51
|
-
[NginxConfig, ClusterConfig, Database,
|
62
|
+
[NginxConfig, ClusterConfig, Database, Files, Config].each do |mod|
|
52
63
|
mod.new.remove app, instance
|
53
64
|
end
|
54
65
|
end
|
@@ -75,13 +86,13 @@ module RailsPwnage::App
|
|
75
86
|
case action
|
76
87
|
when :checkpoint
|
77
88
|
ClusterConfig.new.manage app, instance, action
|
78
|
-
|
89
|
+
Files.new.manage app, instance, action
|
79
90
|
self.update_app app, instance do
|
80
91
|
Database.new.manage app, instance, action
|
81
92
|
end
|
82
93
|
when :rollback
|
83
94
|
self.update_app app, instance do
|
84
|
-
[
|
95
|
+
[Files, Database, ClusterConfig].each do |mod|
|
85
96
|
mod.new.manage app, instance, action
|
86
97
|
end
|
87
98
|
end
|
@@ -92,9 +103,9 @@ module RailsPwnage::App
|
|
92
103
|
end
|
93
104
|
end
|
94
105
|
when :console
|
95
|
-
|
106
|
+
Files.new.manage app, instance, action
|
96
107
|
when :db_console
|
97
|
-
|
108
|
+
Files.new.manage app, instance, action
|
98
109
|
when :db_reset
|
99
110
|
app_config = RailsPwnage::Config[app, instance]
|
100
111
|
unless app_config[:enable_db_reset]
|
data/lib/pwnage/app/svn.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# checks out the application
|
1
|
+
# checks out and updates the application from a Subversion repository
|
2
2
|
|
3
3
|
require 'English'
|
4
4
|
require 'fileutils'
|
@@ -8,78 +8,6 @@ require 'rexml/document'
|
|
8
8
|
class RailsPwnage::App::Svn
|
9
9
|
include RailsPwnage::Base
|
10
10
|
|
11
|
-
def scaffold_backup(app_name, instance_name)
|
12
|
-
pwnerer_user = RailsPwnage::Config[app_name, instance_name][:pwnerer_user]
|
13
|
-
pwnerer_uid = uid_for_username(pwnerer_user)
|
14
|
-
pwnerer_gid = gid_for_username(pwnerer_user)
|
15
|
-
|
16
|
-
backup_path = RailsPwnage::Config[app_name, instance_name][:backup_path]
|
17
|
-
FileUtils.mkpath backup_path unless File.exists? backup_path
|
18
|
-
File.chown(pwnerer_uid, pwnerer_gid, backup_path)
|
19
|
-
|
20
|
-
Dir.chdir(backup_path) do
|
21
|
-
['db', 'files', 'tmp'].each do |subdir|
|
22
|
-
Dir.mkdir subdir unless File.exists? subdir
|
23
|
-
File.chown pwnerer_uid, pwnerer_gid, subdir
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
# dump the application files to the backup area
|
29
|
-
def dump_files(app_name, instance_name)
|
30
|
-
pwnerer_user = RailsPwnage::Config[app_name, instance_name][:pwnerer_user]
|
31
|
-
pwnerer_uid = uid_for_username(pwnerer_user)
|
32
|
-
pwnerer_gid = gid_for_username(pwnerer_user)
|
33
|
-
|
34
|
-
timestamp = Time.now.strftime '%Y%m%d%H%M%S'
|
35
|
-
dump_file = "files/#{app_name}.#{instance_name}_#{timestamp}.tar.gz"
|
36
|
-
|
37
|
-
backup_path = RailsPwnage::Config[app_name, instance_name][:backup_path]
|
38
|
-
app_path = RailsPwnage::Config[app_name, instance_name][:app_path]
|
39
|
-
Dir.chdir backup_path do
|
40
|
-
# create a cold copy of the application files
|
41
|
-
cold_copy = File.join('tmp', File.basename(app_path))
|
42
|
-
FileUtils.rm_r cold_copy if File.exists? cold_copy
|
43
|
-
FileUtils.cp_r app_path, 'tmp'
|
44
|
-
|
45
|
-
# remove the garbage in the cold copy
|
46
|
-
cleanup_app_caches cold_copy, instance_name, true
|
47
|
-
|
48
|
-
# pack and protect the cold copy
|
49
|
-
Dir.chdir 'tmp' do
|
50
|
-
system "tar -czf ../#{dump_file} #{File.basename(app_path)}"
|
51
|
-
end
|
52
|
-
File.chmod(400, dump_file)
|
53
|
-
File.chown(pwnerer_uid, pwnerer_gid, dump_file)
|
54
|
-
|
55
|
-
# clean up
|
56
|
-
FileUtils.rm_r cold_copy
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
# loads the latest file dump from the backup area
|
61
|
-
def load_files(app_name, instance_name)
|
62
|
-
backup_path = RailsPwnage::Config[app_name, instance_name][:backup_path]
|
63
|
-
app_path = RailsPwnage::Config[app_name, instance_name][:app_path]
|
64
|
-
|
65
|
-
dump_file = Dir.glob(File.join(backup_path, "files/#{app_name}.#{instance_name}_*")).max
|
66
|
-
restore_path = Pathname.new(File.join(app_path, '..')).cleanpath.to_s
|
67
|
-
Dir.chdir restore_path do
|
68
|
-
# find the latest dump and load it in
|
69
|
-
system "tar -xzf #{dump_file}"
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
# remove the application files
|
74
|
-
def drop_files(app_name, instance_name)
|
75
|
-
app_config = RailsPwnage::Config[app_name, instance_name]
|
76
|
-
# exit and don't complain if the app is busted
|
77
|
-
return unless app_config and File.exists? app_config[:app_path]
|
78
|
-
|
79
|
-
app_path = app_config[:app_path]
|
80
|
-
FileUtils.rm_r app_path if File.exists? app_path
|
81
|
-
end
|
82
|
-
|
83
11
|
# remove any files not in SVN in the application dir
|
84
12
|
def cleanup_app_dir(app_name, instance_name, target_dir, app_name_is_dir = false)
|
85
13
|
Dir.chdir(app_name_is_dir ? app_name : RailsPwnage::Config[app_name, instance_name][:app_path]) do
|
@@ -98,6 +26,9 @@ class RailsPwnage::App::Svn
|
|
98
26
|
|
99
27
|
# clean up the application directory by removing caches
|
100
28
|
def cleanup_app_caches(app_name, instance_name, app_name_is_dir = false)
|
29
|
+
app_path = app_name_is_dir ? app_name : RailsPwnage::Config[app_name, instance_name][:app_path]
|
30
|
+
return unless File.exists?(File.join(app_path, '.svn'))
|
31
|
+
|
101
32
|
# TODO: learn how Rails caches work and kill those too
|
102
33
|
['app', 'lib', 'public/images',
|
103
34
|
'public/javascripts', 'public/stylesheets', 'script',
|
@@ -105,24 +36,6 @@ class RailsPwnage::App::Svn
|
|
105
36
|
].each { |dir| cleanup_app_dir app_name, instance_name, dir, app_name_is_dir }
|
106
37
|
end
|
107
38
|
|
108
|
-
def manage(app_name, instance_name, action)
|
109
|
-
case action
|
110
|
-
when :checkpoint
|
111
|
-
dump_files app_name, instance_name
|
112
|
-
when :rollback
|
113
|
-
drop_files app_name, instance_name
|
114
|
-
load_files app_name, instance_name
|
115
|
-
when :console
|
116
|
-
Dir.chdir(RailsPwnage::Config[app_name, instance_name][:app_path]) do
|
117
|
-
Kernel.system 'ruby script/console production'
|
118
|
-
end
|
119
|
-
when :db_console
|
120
|
-
Dir.chdir(RailsPwnage::Config[app_name, instance_name][:app_path]) do
|
121
|
-
Kernel.system 'ruby script/dbconsole --include-password production'
|
122
|
-
end
|
123
|
-
end
|
124
|
-
end
|
125
|
-
|
126
39
|
# reverts the config changes made by rpwn, so svn update doesn't get confused
|
127
40
|
def revert_config_changes(app_name, instance_name)
|
128
41
|
Dir.chdir RailsPwnage::Config[app_name, instance_name][:app_path] do
|
@@ -143,30 +56,24 @@ class RailsPwnage::App::Svn
|
|
143
56
|
end
|
144
57
|
end
|
145
58
|
|
146
|
-
def checkout(
|
59
|
+
def checkout(remote_path, app_name, instance_name)
|
147
60
|
app_path = RailsPwnage::Config[app_name, instance_name][:app_path]
|
148
|
-
|
61
|
+
return :next unless remote_path =~ /svn.*\:\/\//
|
62
|
+
|
63
|
+
system "svn co #{remote_path} #{app_path}"
|
64
|
+
|
149
65
|
# check that we really checked out a Rails app
|
150
|
-
|
151
|
-
print "You didn't checkout a Rails application. Check your path.\n" unless sanity
|
152
|
-
return sanity
|
153
|
-
end
|
154
|
-
|
155
|
-
def setup(app_name, instance_name)
|
156
|
-
scaffold_backup(app_name, instance_name)
|
66
|
+
return check_rails_root(app_path) ? :ok : false
|
157
67
|
end
|
158
68
|
|
159
69
|
def update(app_name, instance_name)
|
160
|
-
|
70
|
+
app_path = RailsPwnage::Config[app_name, instance_name][:app_path]
|
71
|
+
return unless File.exists?(File.join(app_path, '.svn'))
|
161
72
|
|
162
73
|
# TODO: maybe backup old version before issuing the svn update?
|
163
74
|
|
164
|
-
cleanup_app_caches
|
165
|
-
revert_config_changes
|
166
|
-
svn_update
|
167
|
-
end
|
168
|
-
|
169
|
-
def remove(app_name, instance_name)
|
170
|
-
drop_files(app_name, instance_name)
|
75
|
+
cleanup_app_caches app_name, instance_name
|
76
|
+
revert_config_changes app_name, instance_name
|
77
|
+
svn_update app_name, instance_name
|
171
78
|
end
|
172
79
|
end
|
data/lib/rails_pwnerer.rb
CHANGED
@@ -46,7 +46,9 @@ require 'pwnage/app/main.rb'
|
|
46
46
|
require 'pwnage/app/config.rb'
|
47
47
|
require 'pwnage/app/cluster_config.rb'
|
48
48
|
require 'pwnage/app/database.rb'
|
49
|
+
require 'pwnage/app/files.rb'
|
49
50
|
require 'pwnage/app/gems.rb'
|
51
|
+
require 'pwnage/app/git.rb'
|
50
52
|
require 'pwnage/app/nginx_config.rb'
|
51
53
|
require 'pwnage/app/scripts.rb'
|
52
54
|
require 'pwnage/app/svn.rb'
|
data/rails_pwnerer.gemspec
CHANGED
@@ -2,7 +2,7 @@
|
|
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.24"
|
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"]
|
@@ -12,8 +12,8 @@ Gem::Specification.new do |s|
|
|
12
12
|
s.email = %q{victor@costan.us}
|
13
13
|
s.executables = ["rpwn", "rpwnctl", "rpwndev"]
|
14
14
|
s.extensions = ["ext/rpwn_setup_notice/extconf.rb"]
|
15
|
-
s.extra_rdoc_files = ["bin/rpwn", "bin/rpwnctl", "bin/rpwndev", "CHANGELOG", "ext/rpwn_setup_notice/extconf.rb", "lib/pwnage/app/cluster_config.rb", "lib/pwnage/app/config.rb", "lib/pwnage/app/database.rb", "lib/pwnage/app/gems.rb", "lib/pwnage/app/main.rb", "lib/pwnage/app/nginx_config.rb", "lib/pwnage/app/scripts.rb", "lib/pwnage/app/svn.rb", "lib/pwnage/base/atomics.rb", "lib/pwnage/base/cpus.rb", "lib/pwnage/base/dirs.rb", "lib/pwnage/base/gems.rb", "lib/pwnage/base/hostname.rb", "lib/pwnage/base/packages.rb", "lib/pwnage/base/process.rb", "lib/pwnage/base/rails.rb", "lib/pwnage/base/startup.rb", "lib/pwnage/base.rb", "lib/pwnage/config/app.rb", "lib/pwnage/config/main.rb", "lib/pwnage/config/paths.rb", "lib/pwnage/config/ports.rb", "lib/pwnage/config/repository.rb", "lib/pwnage/ctl_executor.rb", "lib/pwnage/dev_executor.rb", "lib/pwnage/executor.rb", "lib/pwnage/scaffolds/config.rb", "lib/pwnage/scaffolds/dir_permissions.rb", "lib/pwnage/scaffolds/dirs.rb", "lib/pwnage/scaffolds/gems.rb", "lib/pwnage/scaffolds/hook_daemon.rb", "lib/pwnage/scaffolds/hook_dyndns.rb", "lib/pwnage/scaffolds/mysql_config.rb", "lib/pwnage/scaffolds/packages.rb", "lib/pwnage/scaffolds/rubygems.rb", "lib/pwnage/scaffolds/sshd.rb", "lib/pwnage/util/kill_process_set.rb", "lib/pwnage/util/main.rb", "lib/rails_pwnerer.rb", "LICENSE", "README"]
|
16
|
-
s.files = ["bin/rpwn", "bin/rpwnctl", "bin/rpwndev", "CHANGELOG", "ext/rpwn_setup_notice/extconf.rb", "lib/pwnage/app/cluster_config.rb", "lib/pwnage/app/config.rb", "lib/pwnage/app/database.rb", "lib/pwnage/app/gems.rb", "lib/pwnage/app/main.rb", "lib/pwnage/app/nginx_config.rb", "lib/pwnage/app/scripts.rb", "lib/pwnage/app/svn.rb", "lib/pwnage/base/atomics.rb", "lib/pwnage/base/cpus.rb", "lib/pwnage/base/dirs.rb", "lib/pwnage/base/gems.rb", "lib/pwnage/base/hostname.rb", "lib/pwnage/base/packages.rb", "lib/pwnage/base/process.rb", "lib/pwnage/base/rails.rb", "lib/pwnage/base/startup.rb", "lib/pwnage/base.rb", "lib/pwnage/config/app.rb", "lib/pwnage/config/main.rb", "lib/pwnage/config/paths.rb", "lib/pwnage/config/ports.rb", "lib/pwnage/config/repository.rb", "lib/pwnage/ctl_executor.rb", "lib/pwnage/dev_executor.rb", "lib/pwnage/executor.rb", "lib/pwnage/scaffolds/config.rb", "lib/pwnage/scaffolds/dir_permissions.rb", "lib/pwnage/scaffolds/dirs.rb", "lib/pwnage/scaffolds/gems.rb", "lib/pwnage/scaffolds/hook_daemon.rb", "lib/pwnage/scaffolds/hook_dyndns.rb", "lib/pwnage/scaffolds/mysql_config.rb", "lib/pwnage/scaffolds/packages.rb", "lib/pwnage/scaffolds/rubygems.rb", "lib/pwnage/scaffolds/sshd.rb", "lib/pwnage/util/kill_process_set.rb", "lib/pwnage/util/main.rb", "lib/rails_pwnerer.rb", "LICENSE", "Manifest", "Rakefile", "README", "RUBYFORGE", "rails_pwnerer.gemspec"]
|
15
|
+
s.extra_rdoc_files = ["bin/rpwn", "bin/rpwnctl", "bin/rpwndev", "CHANGELOG", "ext/rpwn_setup_notice/extconf.rb", "lib/pwnage/app/cluster_config.rb", "lib/pwnage/app/config.rb", "lib/pwnage/app/database.rb", "lib/pwnage/app/files.rb", "lib/pwnage/app/gems.rb", "lib/pwnage/app/git.rb", "lib/pwnage/app/main.rb", "lib/pwnage/app/nginx_config.rb", "lib/pwnage/app/scripts.rb", "lib/pwnage/app/svn.rb", "lib/pwnage/base/atomics.rb", "lib/pwnage/base/cpus.rb", "lib/pwnage/base/dirs.rb", "lib/pwnage/base/gems.rb", "lib/pwnage/base/hostname.rb", "lib/pwnage/base/packages.rb", "lib/pwnage/base/process.rb", "lib/pwnage/base/rails.rb", "lib/pwnage/base/startup.rb", "lib/pwnage/base.rb", "lib/pwnage/config/app.rb", "lib/pwnage/config/main.rb", "lib/pwnage/config/paths.rb", "lib/pwnage/config/ports.rb", "lib/pwnage/config/repository.rb", "lib/pwnage/ctl_executor.rb", "lib/pwnage/dev_executor.rb", "lib/pwnage/executor.rb", "lib/pwnage/scaffolds/config.rb", "lib/pwnage/scaffolds/dir_permissions.rb", "lib/pwnage/scaffolds/dirs.rb", "lib/pwnage/scaffolds/gems.rb", "lib/pwnage/scaffolds/hook_daemon.rb", "lib/pwnage/scaffolds/hook_dyndns.rb", "lib/pwnage/scaffolds/mysql_config.rb", "lib/pwnage/scaffolds/packages.rb", "lib/pwnage/scaffolds/rubygems.rb", "lib/pwnage/scaffolds/sshd.rb", "lib/pwnage/util/kill_process_set.rb", "lib/pwnage/util/main.rb", "lib/rails_pwnerer.rb", "LICENSE", "README"]
|
16
|
+
s.files = ["bin/rpwn", "bin/rpwnctl", "bin/rpwndev", "CHANGELOG", "ext/rpwn_setup_notice/extconf.rb", "lib/pwnage/app/cluster_config.rb", "lib/pwnage/app/config.rb", "lib/pwnage/app/database.rb", "lib/pwnage/app/files.rb", "lib/pwnage/app/gems.rb", "lib/pwnage/app/git.rb", "lib/pwnage/app/main.rb", "lib/pwnage/app/nginx_config.rb", "lib/pwnage/app/scripts.rb", "lib/pwnage/app/svn.rb", "lib/pwnage/base/atomics.rb", "lib/pwnage/base/cpus.rb", "lib/pwnage/base/dirs.rb", "lib/pwnage/base/gems.rb", "lib/pwnage/base/hostname.rb", "lib/pwnage/base/packages.rb", "lib/pwnage/base/process.rb", "lib/pwnage/base/rails.rb", "lib/pwnage/base/startup.rb", "lib/pwnage/base.rb", "lib/pwnage/config/app.rb", "lib/pwnage/config/main.rb", "lib/pwnage/config/paths.rb", "lib/pwnage/config/ports.rb", "lib/pwnage/config/repository.rb", "lib/pwnage/ctl_executor.rb", "lib/pwnage/dev_executor.rb", "lib/pwnage/executor.rb", "lib/pwnage/scaffolds/config.rb", "lib/pwnage/scaffolds/dir_permissions.rb", "lib/pwnage/scaffolds/dirs.rb", "lib/pwnage/scaffolds/gems.rb", "lib/pwnage/scaffolds/hook_daemon.rb", "lib/pwnage/scaffolds/hook_dyndns.rb", "lib/pwnage/scaffolds/mysql_config.rb", "lib/pwnage/scaffolds/packages.rb", "lib/pwnage/scaffolds/rubygems.rb", "lib/pwnage/scaffolds/sshd.rb", "lib/pwnage/util/kill_process_set.rb", "lib/pwnage/util/main.rb", "lib/rails_pwnerer.rb", "LICENSE", "Manifest", "Rakefile", "README", "RUBYFORGE", "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.24
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Victor Costan
|
@@ -39,7 +39,9 @@ extra_rdoc_files:
|
|
39
39
|
- lib/pwnage/app/cluster_config.rb
|
40
40
|
- lib/pwnage/app/config.rb
|
41
41
|
- lib/pwnage/app/database.rb
|
42
|
+
- lib/pwnage/app/files.rb
|
42
43
|
- lib/pwnage/app/gems.rb
|
44
|
+
- lib/pwnage/app/git.rb
|
43
45
|
- lib/pwnage/app/main.rb
|
44
46
|
- lib/pwnage/app/nginx_config.rb
|
45
47
|
- lib/pwnage/app/scripts.rb
|
@@ -86,7 +88,9 @@ files:
|
|
86
88
|
- lib/pwnage/app/cluster_config.rb
|
87
89
|
- lib/pwnage/app/config.rb
|
88
90
|
- lib/pwnage/app/database.rb
|
91
|
+
- lib/pwnage/app/files.rb
|
89
92
|
- lib/pwnage/app/gems.rb
|
93
|
+
- lib/pwnage/app/git.rb
|
90
94
|
- lib/pwnage/app/main.rb
|
91
95
|
- lib/pwnage/app/nginx_config.rb
|
92
96
|
- lib/pwnage/app/scripts.rb
|