rails_pwnerer 0.6.23 → 0.6.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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