rails_pwnerer 0.5.7 → 0.5.8

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.5.8. Fixed crashing in base/process.rb when sys-proctable isn't there (scaffolding time).
2
+
1
3
  v0.5.7. Better procedure for removing an instance.
2
4
 
3
5
  v0.5.6. Replaced mongrel_cluster startup script with our own. Now mongrels survive reboots.
data/Manifest CHANGED
@@ -26,6 +26,7 @@ lib/pwnage/ctl_executor.rb
26
26
  lib/pwnage/dev_executor.rb
27
27
  lib/pwnage/executor.rb
28
28
  lib/pwnage/scaffolds/config.rb
29
+ lib/pwnage/scaffolds/dir_permissions.rb
29
30
  lib/pwnage/scaffolds/dirs.rb
30
31
  lib/pwnage/scaffolds/gems.rb
31
32
  lib/pwnage/scaffolds/hook_daemon.rb
data/README CHANGED
@@ -27,7 +27,7 @@ Life with +rails_pwnerer+:
27
27
  1) Install a bootstrap version of ruby and rubygems
28
28
  (one command should be enough, but rubygems doesn't work in Ubuntu 8.04):
29
29
 
30
- sudo apt-get -y install rubygems
30
+ sudo apt-get -y install rubygems1.8
31
31
 
32
32
  sudo gem update --system (you'll have to retry this if you get an error)
33
33
 
@@ -39,6 +39,15 @@ sudo gem install rails_pwnerer
39
39
  3) Get your server production-ready:
40
40
  sudo rpwn scaffold
41
41
 
42
+ If this doesn't work, you have a retarded Debian version of rubygems.
43
+ Workaround:
44
+ a) gem which rails_pwnerer
45
+ b) see where the gem lives (e.g. /var/lib/gems/1.8/gems/rails_pwnerer)
46
+ c) run rpwn from there:
47
+ sudo /var/lib/gems/1.8/bin/rails_pwnerer scaffold
48
+
49
+ After you scaffold, you'll get good rubygems which put rpwn in your path.
50
+
42
51
  4) Install your application:
43
52
  sudo rpwn install svn+ssh://your.repository.host/path/to/your_application
44
53
 
@@ -13,7 +13,7 @@ module RailsPwnage::Base
13
13
  ts_checksum = Digest::MD5.hexdigest("#{raw_data[1]}.#{raw_data[2]}")
14
14
  return [nil, Time.at(0, 0)] unless ts_checksum == raw_data[3]
15
15
  return [raw_data[0], Time.at(raw_data[1], raw_data[2])]
16
- rescue
16
+ rescue Exception
17
17
  # fail if the YAML can't be processed or something else goes wrong
18
18
  return [nil, Time.at(0, 0)]
19
19
  end
@@ -16,7 +16,20 @@ module RailsPwnage::Base
16
16
  system "gem update --system"
17
17
  # patch Ubuntu's broken rubygems installation
18
18
  system "cp /usr/bin/gem1.8 /usr/bin/gem"
19
- end
19
+ end
20
+
21
+ # locates the main file in a gem (used to locate the gem)
22
+ def path_to_gem(gem_name, discard_suffix = '')
23
+ # TODO: use the rubygems API instead of this hack
24
+
25
+ # look for the main file in the gem
26
+ output = `gem which '#{gem_name}'`
27
+ # discard the given suffix
28
+ if output[-(discard_suffix.lenth)..-1] == discard_suffix
29
+ output[-(discard_suffix.lenth)..-1] = ''
30
+ end
31
+ return output
32
+ end
20
33
  end
21
34
 
22
35
  module RailsPwnage::Base
@@ -24,7 +24,7 @@ begin
24
24
  end
25
25
  end
26
26
  end
27
- rescue
27
+ rescue Exception
28
28
  # the sys-proctable gem isn't available during scaffolding
29
29
  module RailsPwnage::Base
30
30
  def process_info(pid = nil)
@@ -12,6 +12,8 @@ class RailsPwnage::Executor
12
12
  Config.go
13
13
  when 'dirs'
14
14
  Dirs.go
15
+ when 'dirs2'
16
+ DirPermissions.go
15
17
  when 'gems'
16
18
  Gems.go
17
19
  when 'daemon'
@@ -34,6 +36,7 @@ class RailsPwnage::Executor
34
36
  Gems.go
35
37
  Dirs.go
36
38
  Config.go
39
+ DirPermissions.go
37
40
  MysqlConfig.go
38
41
  HookDaemon.go
39
42
  end
@@ -25,6 +25,8 @@ class RailsPwnage::Scaffolds::Config
25
25
  host_info[:dbroot_name] = 'root'
26
26
  # password for creating / dropping databases
27
27
  host_info[:dbroot_pass] = ''
28
+ # the user owning the /prod subtrees
29
+ host_info[:pwnerer_user] = 'victor'
28
30
 
29
31
  RailsPwnage::Config.flush_db :host
30
32
 
@@ -0,0 +1,23 @@
1
+ # sets up the user permissions on the dir skeleton
2
+
3
+ require 'fileutils'
4
+
5
+ class RailsPwnage::Scaffolds::DirPermissions
6
+ include RailsPwnage::Base
7
+
8
+ # runner
9
+ def run
10
+ pwnerer_uid = uid_for_username(RailsPwnage::Config[:host][:pwnerer_user])
11
+ Dir.chdir('/') do
12
+ [:config, :apps, :backups].map { |k| RailsPwnage::Config.path_to k }.each do |path|
13
+ FileUtils.mkpath path
14
+ File.chown(pwnerer_uid, nil, path)
15
+ end
16
+ end
17
+ end
18
+
19
+ # standalone runner
20
+ def self.go
21
+ self.new.run
22
+ end
23
+ end
@@ -7,11 +7,9 @@ class RailsPwnage::Scaffolds::Dirs
7
7
 
8
8
  # runner
9
9
  def run
10
- pwnerer_uid = uid_for_username(RailsPwnage::Config.pwnerer_user)
11
10
  Dir.chdir('/') do
12
11
  [:config, :apps, :backups].map { |k| RailsPwnage::Config.path_to k }.each do |path|
13
12
  FileUtils.mkpath path
14
- File.chown(pwnerer_uid, nil, path)
15
13
  end
16
14
  end
17
15
  end
@@ -2,20 +2,10 @@
2
2
 
3
3
  class RailsPwnage::Scaffolds::HookDaemon
4
4
  include RailsPwnage::Base
5
-
6
- # compute the path to mongrel_cluster
7
- def path_to_gem
8
- # TODO: use the rubygems API instead of this hack
9
-
10
- # look for lib/rails_pwnage.rb in our gem
11
- output = `gem which 'rails_pwnage'`
12
- # now lock down the path
13
- output.split.last.gsub!('lib/rails_pwnage.rb', '')
14
- end
15
5
 
16
6
  # runner
17
7
  def run
18
- daemon_ctl = self.path_to_gem + 'bin/rpwnctl'
8
+ daemon_ctl = path_to_gem('rails_pwnage', 'lib/rails_pwnage.rb') + 'bin/rpwnctl'
19
9
  hook_boot_script daemon_ctl, 'rpwn'
20
10
  end
21
11
 
@@ -66,9 +66,9 @@ class RailsPwnage::Scaffolds::Packages
66
66
  install_management
67
67
  install_tools
68
68
  install_ruby
69
- install_mysql
70
69
  install_sqlite3
71
70
  install_balancer
71
+ install_mysql
72
72
  end
73
73
 
74
74
  # standalone runner
@@ -1,5 +1,5 @@
1
+ require 'fileutils'
1
2
  require 'net/http'
2
- require 'pp'
3
3
 
4
4
  class RailsPwnage::Scaffolds::RubyGems
5
5
  include RailsPwnage::Base
@@ -46,9 +46,17 @@ class RailsPwnage::Scaffolds::RubyGems
46
46
  end
47
47
 
48
48
  def run
49
+ # save old lib path, in case we need to wipe it
50
+ old_gems = path_to_gem('rubygems', '/1.8/rubygems.rb')
51
+
49
52
  # remove the (retarded) Debian gems package and install from source
50
53
  remove_packages %w(rubygems)
51
54
  install_rubygems
55
+
56
+ # remove the gems that are trailing behind
57
+ new_gems = path_to_gem('rubygems', '/1.8/rubygems.rb')
58
+ return if new_gems == old_gems # don't wipe the new dir by mistake
59
+ FileUtils.rm_r old_gems
52
60
  end
53
61
 
54
62
  # standalone runner
data/lib/rails_pwnage.rb CHANGED
@@ -28,6 +28,7 @@ require 'pwnage/config/repository.rb'
28
28
 
29
29
  require 'pwnage/scaffolds/config.rb'
30
30
  require 'pwnage/scaffolds/dirs.rb'
31
+ require 'pwnage/scaffolds/dir_permissions.rb'
31
32
  require 'pwnage/scaffolds/gems.rb'
32
33
  require 'pwnage/scaffolds/hook_daemon.rb'
33
34
  require 'pwnage/scaffolds/hook_dyndns.rb'
@@ -1,18 +1,18 @@
1
1
 
2
- # Gem::Specification for Rails_pwnerer-0.5.7
2
+ # Gem::Specification for Rails_pwnerer-0.5.8
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.5.7
8
+ version: 0.5.8
9
9
  platform: ruby
10
10
  authors:
11
11
  - Victor Costan
12
12
  autorequire:
13
13
  bindir: bin
14
14
 
15
- date: 2008-08-17 00:00:00 -04:00
15
+ date: 2008-08-20 00:00:00 -04:00
16
16
  default_executable:
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
@@ -62,6 +62,7 @@ extra_rdoc_files:
62
62
  - lib/pwnage/dev_executor.rb
63
63
  - lib/pwnage/executor.rb
64
64
  - lib/pwnage/scaffolds/config.rb
65
+ - lib/pwnage/scaffolds/dir_permissions.rb
65
66
  - lib/pwnage/scaffolds/dirs.rb
66
67
  - lib/pwnage/scaffolds/gems.rb
67
68
  - lib/pwnage/scaffolds/hook_daemon.rb
@@ -101,6 +102,7 @@ files:
101
102
  - lib/pwnage/dev_executor.rb
102
103
  - lib/pwnage/executor.rb
103
104
  - lib/pwnage/scaffolds/config.rb
105
+ - lib/pwnage/scaffolds/dir_permissions.rb
104
106
  - lib/pwnage/scaffolds/dirs.rb
105
107
  - lib/pwnage/scaffolds/gems.rb
106
108
  - lib/pwnage/scaffolds/hook_daemon.rb
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.5.7
4
+ version: 0.5.8
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-08-17 00:00:00 -04:00
12
+ date: 2008-08-20 00:00:00 -04:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -59,6 +59,7 @@ extra_rdoc_files:
59
59
  - lib/pwnage/dev_executor.rb
60
60
  - lib/pwnage/executor.rb
61
61
  - lib/pwnage/scaffolds/config.rb
62
+ - lib/pwnage/scaffolds/dir_permissions.rb
62
63
  - lib/pwnage/scaffolds/dirs.rb
63
64
  - lib/pwnage/scaffolds/gems.rb
64
65
  - lib/pwnage/scaffolds/hook_daemon.rb
@@ -98,6 +99,7 @@ files:
98
99
  - lib/pwnage/dev_executor.rb
99
100
  - lib/pwnage/executor.rb
100
101
  - lib/pwnage/scaffolds/config.rb
102
+ - lib/pwnage/scaffolds/dir_permissions.rb
101
103
  - lib/pwnage/scaffolds/dirs.rb
102
104
  - lib/pwnage/scaffolds/gems.rb
103
105
  - lib/pwnage/scaffolds/hook_daemon.rb