rails_pwnerer 0.6.27 → 0.6.29

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG 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