rails_pwnerer 0.6.27 → 0.6.29

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,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
- ext/rpwn_setup_notice/extconf.rb
6
- lib/pwnage/app/cluster_config.rb
7
- lib/pwnage/app/config.rb
8
- lib/pwnage/app/database.rb
9
- lib/pwnage/app/files.rb
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/base/atomics.rb
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/gems.rb
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
@@ -57,6 +57,10 @@ or
57
57
 
58
58
  sudo rpwn install you@your.repository.host/path/to/your_application.git
59
59
 
60
+ or
61
+
62
+ sudo rpwn install p4://you:yourpass@host:port/path/to/your/application
63
+
60
64
  5) Reboot, or start the services right away:
61
65
  sudo rpwn go live
62
66
 
@@ -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
- unless File.exists? '/usr/bin/rpwn'
5
- Kernel.system "ln -s #{File.expand_path(__FILE__ + '/../../../bin/rpwn')} /usr/bin/rpwn"
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
 
@@ -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.count
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
@@ -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
- success = Git.new.checkout remote_path, app, instance
22
- if success == :next
23
- success = Svn.new.checkout remote_path, app, instance
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 subversion at this time. \n"
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
@@ -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(highline echoe)
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
 
@@ -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.27"
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-18}
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", "rpwnctl", "rpwndev"]
13
+ s.executables = ["rpwn", "rpwndev", "rpwnctl"]
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/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/frontends.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/frontends.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 = ["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.27
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-18 00:00:00 -05:00
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
- - ext/rpwn_setup_notice/extconf.rb
39
- - lib/pwnage/app/cluster_config.rb
40
- - lib/pwnage/app/config.rb
41
- - lib/pwnage/app/database.rb
42
- - lib/pwnage/app/files.rb
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/base/atomics.rb
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/gems.rb
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
- - lib/pwnage/base.rb
59
- - lib/pwnage/config/app.rb
60
- - lib/pwnage/config/frontends.rb
61
- - lib/pwnage/config/main.rb
62
- - lib/pwnage/config/paths.rb
63
- - lib/pwnage/config/ports.rb
64
- - lib/pwnage/config/repository.rb
65
- - lib/pwnage/ctl_executor.rb
66
- - lib/pwnage/dev_executor.rb
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/config.rb
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/gems.rb
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/util/kill_process_set.rb
79
- - lib/pwnage/util/main.rb
80
- - lib/rails_pwnerer.rb
81
- - LICENSE
82
- - README
83
- files:
84
- - bin/rpwn
85
- - bin/rpwnctl
86
- - bin/rpwndev
87
- - CHANGELOG
88
- - ext/rpwn_setup_notice/extconf.rb
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/base/atomics.rb
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/gems.rb
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