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 CHANGED
@@ -1,3 +1,5 @@
1
+ v0.6.24. Implemented support for checking out from git.
2
+
1
3
  v0.6.23. Implemented frontends_per_core option as an alternative to frontends.
2
4
 
3
5
  v0.6.22. Fixed package name for git.
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
@@ -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(svn_path, instance_name)
16
- app_name = File.basename svn_path
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
- rails_root = Svn.new.checkout svn_path, app, instance
20
- if rails_root
21
- [Config, Svn, Gems, Database, ClusterConfig, NginxConfig, Scripts].each do |mod|
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
- [Svn, Config].each do |mod|
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, Svn, Config].each do |mod|
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
- Svn.new.manage app, instance, action
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
- [Svn, Database, ClusterConfig].each do |mod|
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
- Svn.new.manage app, instance, action
106
+ Files.new.manage app, instance, action
96
107
  when :db_console
97
- Svn.new.manage app, instance, action
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]
@@ -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(svn_path, app_name, instance_name)
59
+ def checkout(remote_path, app_name, instance_name)
147
60
  app_path = RailsPwnage::Config[app_name, instance_name][:app_path]
148
- system "svn co #{svn_path} #{app_path}"
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
- sanity = check_rails_root app_path
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
- scaffold_backup(app_name, instance_name)
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(app_name, instance_name)
165
- revert_config_changes(app_name, instance_name)
166
- svn_update(app_name, instance_name)
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'
@@ -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.23"
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.23
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