rails_pwnerer 0.6.4 → 0.6.5

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.5. Faster killing in kill_process_set, plus now it honors the :verbose option.
2
+
1
3
  v0.6.4. Added configuration variable for the environment. Switched to a more determinstic config update model.
2
4
 
3
5
  v0.6.3. Bugfix: scaffolding "forgot" to install database gems.
@@ -8,11 +8,13 @@ class RailsPwnage::App::Config
8
8
  # setup: this effectively creates the baseline configuration db
9
9
  # update: this adds keys that might have been added in new versions of rpwn
10
10
  def populate_defaults(app_name, instance_name, app_db)
11
+ # the path to application main files
12
+ app_db[:app_path] = File.join(RailsPwnage::Config.path_to(:apps), app_name + '.' + instance_name)
11
13
  # the path to application backups
12
14
  app_db[:backup_path] ||= File.join(RailsPwnage::Config.path_to(:backups), app_name + '.' + instance_name)
13
15
 
14
16
  # the user which will receive the "keys" to the production system
15
- app_db[:pwnerer_user] ||= 'victor'
17
+ app_db[:pwnerer_user] ||= RailsPwnage::Config[:host][:pwnerer_user]
16
18
  # the number of frontends for the application instance
17
19
  app_db[:frontends] ||= 4
18
20
  # the first internal port for the application instance
@@ -39,25 +41,21 @@ class RailsPwnage::App::Config
39
41
 
40
42
  # allocates room for the application and creates the application configuration database
41
43
  def alloc(app_name, instance_name)
42
- app_path = File.join(RailsPwnage::Config.path_to(:apps), app_name + '.' + instance_name)
43
- FileUtils.mkpath app_path
44
-
45
44
  app_db_name = RailsPwnage::Config.app_db_name(app_name, instance_name)
46
45
  app_db = RailsPwnage::Config.create_db app_db_name
47
-
48
- # default settings
49
- app_db[:app_path] = app_path
50
46
  populate_defaults app_name, instance_name, app_db
47
+
48
+ FileUtils.mkpath app_db[:app_path]
51
49
 
52
50
  RailsPwnage::Config.flush_db app_db
53
- return app_path
51
+ return app_db[:app_path]
54
52
  end
55
53
 
56
54
  # pushes config changes from the application file to the database
57
55
  def update(app_name, instance_name)
58
56
  app_config = RailsPwnage::Config[app_name, instance_name]
59
57
  app_config.clear
60
- populate_defaults app_name, instance_name, app_db
58
+ populate_defaults app_name, instance_name, app_config
61
59
  Dir.chdir app_config[:app_path] do
62
60
  ["config/rails_pwnerer/.yml", "config/rails_pwnerer/#{instance_name}.yml"].each do |fname|
63
61
  next unless File.exists? fname
@@ -11,10 +11,20 @@ module RailsPwnage::Util
11
11
  # Phase 1: kill order (only if there's a PID file)
12
12
  pid_patterns = [pid_patterns] unless pid_patterns.kind_of? Enumerable
13
13
  unless options[:force_script]
14
- pid_files = pid_patterns.map { |pattern| Dir.glob(pattern) }.flatten
15
- unless pid_files.empty?
16
- Kernel.system kill_script unless kill_script.nil?
17
- sleep options[:script_delay] || 0.5
14
+ pid_files = pid_patterns.map { |pattern| Dir.glob(pattern) }.flatten
15
+ end
16
+ if options[:force_script] or !(pid_files.empty? or kill_script.nil?)
17
+ print "Issuing kill order: #{kill_script}\n" if options[:verbose]
18
+ success = Kernel.system kill_script unless kill_script.nil?
19
+ if !success and options[:verbose]
20
+ print "Kill order failed with exit code #{$CHILD_STATUS.exitstatus}\n"
21
+ end
22
+
23
+ deadline_time = Time.now + (options[:script_delay] || 0.5)
24
+ while Time.now < deadline_time
25
+ pid_files = pid_patterns.map { |pattern| Dir.glob(pattern) }.flatten
26
+ break if pid_files.empty?
27
+ sleep 0.05
18
28
  end
19
29
  end
20
30
 
@@ -27,14 +37,14 @@ module RailsPwnage::Util
27
37
  process_cmdline = pinfo[pid][:cmdline]
28
38
  # avoid killing innocent victims
29
39
  if pinfo[pid].nil? or process_patterns.all? { |pattern| process_cmdline.index pattern }
30
- print "Killing #{pid}: #{process_cmdline}\n"
40
+ print "Killing #{pid}: #{process_cmdline}\n" if options[:verbose]
31
41
  Process.kill 'TERM', pid.to_i
32
42
  end
33
43
  rescue
34
44
  # just in case the file gets wiped before we see it
35
45
  end
36
46
  begin
37
- print "Deleting #{fname}\n"
47
+ print "Deleting #{fname}\n" if options[:verbose]
38
48
  File.delete fname if File.exists? fname
39
49
  rescue
40
50
  # prevents crashing if the file is wiped after we call exists?
@@ -45,8 +55,8 @@ module RailsPwnage::Util
45
55
  pinfo = process_info()
46
56
  pinfo.each do |pid, info|
47
57
  next unless process_patterns.all? { |pattern| info[:cmdline].index pattern }
48
- print "Killing #{pid}: #{pinfo[pid][:cmdline]}\n"
58
+ print "Killing #{pid}: #{pinfo[pid][:cmdline]}\n" if options[:verbose]
49
59
  Process.kill 'TERM', pid.to_i
50
60
  end
51
- end
52
- end
61
+ end
62
+ end
@@ -1,18 +1,18 @@
1
1
 
2
- # Gem::Specification for Rails_pwnerer-0.6.4
2
+ # Gem::Specification for Rails_pwnerer-0.6.5
3
3
  # Originally generated by Echoe
4
4
 
5
5
  --- !ruby/object:Gem::Specification
6
6
  name: rails_pwnerer
7
7
  version: !ruby/object:Gem::Version
8
- version: 0.6.4
8
+ version: 0.6.5
9
9
  platform: ruby
10
10
  authors:
11
11
  - Victor Costan
12
12
  autorequire:
13
13
  bindir: bin
14
14
 
15
- date: 2008-09-19 00:00:00 -04:00
15
+ date: 2008-09-21 00:00:00 -04:00
16
16
  default_executable:
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_pwnerer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.4
4
+ version: 0.6.5
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: 2008-09-19 00:00:00 -04:00
12
+ date: 2008-09-21 00:00:00 -04:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency