rails_pwnerer 0.5.7 → 0.5.8

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