rails_pwnerer 0.6.30 → 0.6.31

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.31. Debian package installer tries to bypass proxy if necessary.
2
+
1
3
  v0.6.30. Fixed crash if the highline gem is not available.
2
4
 
3
5
  v0.6.29. Support for checking out from Perforce.
data/README CHANGED
@@ -25,14 +25,8 @@ application.
25
25
 
26
26
  Life with +rails_pwnerer+:
27
27
 
28
- 1) Install a bootstrap version of ruby and rubygems
29
- (one command should be enough, but rubygems doesn't work in Ubuntu 8.04):
30
-
31
- sudo apt-get -y install rubygems1.8
32
-
33
- sudo gem update --system (you'll have to retry this if you get an error)
34
-
35
- sudo apt-get -y install ruby (yes you read it right, this comes last)
28
+ 1) Install a bootstrap version of ruby and rubygems:
29
+ sudo apt-get -y install rubygems
36
30
 
37
31
  2) Install +rails_pwnerer+:
38
32
  sudo gem install rails_pwnerer
@@ -40,8 +34,8 @@ sudo gem install rails_pwnerer
40
34
  3) Get your server production-ready:
41
35
  sudo rpwn scaffold
42
36
 
43
- If this doesn't work, blame your OS distribution (rubygems was prevented
44
- from creating a wrapper for rpwn, and our cheat against common preventions failed).
37
+ If this doesn't work, blame your OS distribution (rubygems was blocked
38
+ from creating a wrapper for rpwn, and our cheat against common blocks failed).
45
39
  Manual workaround:
46
40
 
47
41
  a) Find the path to the gems: gem environment gemdir (e.g. /var/lib/gems/1.8/gems/)
data/Rakefile CHANGED
@@ -9,7 +9,12 @@ Echoe.new('rails_pwnerer') do |p|
9
9
  p.email = 'victor@costan.us'
10
10
  p.summary = 'Rails deployment tool/hack.'
11
11
  p.url = 'http://www.costan.us/rails_pwnage'
12
- # p.dependencies = ['rails >=2.0']
12
+ p.runtime_dependencies = []
13
+ p.dependencies = []
14
+ # remove echoe, because it becomes a runtime dependency for rubygems < 1.2
15
+ p.development_dependencies = []
16
+ # override echoe's default of 1.2
17
+ p.rubygems_version = '>= 0'
13
18
  p.extensions = ['ext/rpwn_setup_notice/extconf.rb']
14
19
  p.eval = proc do |p|
15
20
  p.default_executable = 'bin/rpwn'
@@ -31,7 +31,7 @@ module RailsPwnage::Base
31
31
 
32
32
  # executes a block in a temporary directory
33
33
  def with_temp_dir(options = {})
34
- temp_dir = "#{options[:root] ? '/' : ''}rbpwn_#{Time.now.to_i}"
34
+ temp_dir = "#{options[:root] ? '/' : ''}rbpwn_#{(Time.now.to_f * 1000).to_i}"
35
35
  Dir.mkdir temp_dir
36
36
  Dir.chdir(temp_dir) { yield }
37
37
  FileUtils.rm_r temp_dir
@@ -1,44 +1,118 @@
1
1
  # extends Base with OS package-related functions
2
2
 
3
+ require 'English'
4
+
3
5
  module RailsPwnage::Base
4
6
  # TODO: this works for debian-only
5
7
 
6
- # installs a package
7
- def install_package(package_name, options = {})
8
+ # Builds apt-get parameters for a set of options.
9
+ def apt_params_for(options = {})
10
+ params = ""
11
+ params << "-o Acquire::http::Proxy=false" if options[:no_proxy]
12
+ end
13
+
14
+ def install_package_impl(package_name, options)
15
+ apt_params = apt_params_for options
8
16
  if options[:source]
9
17
  with_temp_dir(:root => true) do
10
- system "apt-get build-dep -y #{package_name}"
11
- system "apt-get source -b #{package_name}"
12
- system "dpkg -i #{Dir.glob('*.deb', File::FNM_DOTMATCH).join(' ')} < /dev/null"
18
+ Kernel.system "apt-get build-dep -y #{apt_params} #{package_name}"
19
+ return false unless $CHILD_STATUS.success?
20
+ Kernel.system "apt-get source -b #{apt_params} #{package_name}"
21
+ return false unless $CHILD_STATUS.success?
22
+ Kernel.system "dpkg -i #{Dir.glob('*.deb', File::FNM_DOTMATCH).join(' ')} < /dev/null"
23
+ return false unless $CHILD_STATUS.success?
13
24
  end
14
25
  else
15
- system "apt-get install -y #{package_name} < /dev/null"
26
+ Kernel.system "apt-get install -y #{apt_params} #{package_name} < /dev/null"
27
+ return false unless $CHILD_STATUS.success?
16
28
  end
29
+ return true
17
30
  end
18
31
 
19
- # upgrades a package to the latest version
20
- def upgrade_package(package_name, options = {})
32
+ # Installs a package.
33
+ # Returns true for success, false for failure.
34
+ def install_package(package_name, options = {})
35
+ return true if install_package_impl(package_name, options)
21
36
  if options[:source]
22
- remove_package(package_name)
37
+ if options[:no_proxy]
38
+ # already bypassing proxy, fall back to binary package
39
+ return install_package(package_name, options.merge(:source => false))
40
+ else
41
+ # try bypassing proxy
42
+ return install_package(package_name, options.merge(:no_proxy => true))
43
+ end
44
+ else
45
+ if options[:no_proxy]
46
+ # out of alternatives
47
+ return false
48
+ else
49
+ #
50
+ return install_package(package_name, options.merge(:no_proxy => true))
51
+ end
52
+ end
53
+ end
54
+
55
+ def upgrade_package_impl(package_name, options)
56
+ apt_params = apt_params_for options
57
+ Kernel.system "apt-get upgrade -y #{apt_params} #{package_name.nil ? '' : package_name} < /dev/null"
58
+ return $CHILD_STATUS.success?
59
+ end
60
+
61
+ # Upgrades a package to the latest version.
62
+ def upgrade_package(package_name, options = {})
63
+ return install_package(package_name, options) if options[:source]
64
+ return true if upgrade_package_impl(package_name, options)
23
65
 
24
- install_package(package_name, :source => true)
66
+ if options[:no_proxy]
67
+ # out of alternatives
68
+ return false
25
69
  else
26
- system "apt-get upgrade -y #{package_name.nil ? '' : package_name} < /dev/null"
70
+ #
71
+ return upgrade_package(package_name, options.merge(:no_proxy => true))
27
72
  end
28
73
  end
29
74
 
30
- def upgrade_all_packages()
31
- system "apt-get upgrade -y < /dev/null"
75
+ def upgrade_all_packages_impl(options)
76
+ apt_params = apt_params_for options
77
+ Kernel.system "apt-get upgrade -y #{apt_params} < /dev/null"
78
+ return $CHILD_STATUS.success?
79
+ end
80
+
81
+ def upgrade_all_packages(options = {})
82
+ return true if upgrade_all_packages_impl(options)
83
+
84
+ if options[:no_proxy]
85
+ # out of alternatives
86
+ return false
87
+ else
88
+ #
89
+ return upgrade_all_packages(options.merge(:no_proxy => true))
90
+ end
32
91
  end
33
92
 
34
93
  def remove_package(package_name, options = {})
35
94
  system "apt-get remove -y #{package_name}" unless package_name.nil?
36
95
  end
37
96
 
38
- # update the metadata for all the packages
39
- def update_package_metadata()
40
- system "apt-get update -y < /dev/null"
41
- end
97
+ def update_package_metadata_impl(options)
98
+ apt_params = apt_params_for options
99
+ Kernel.system "apt-get update -y #{apt_params} < /dev/null"
100
+ return $CHILD_STATUS.success?
101
+ end
102
+
103
+ # Updates the metadata for all the packages.
104
+ # Returns true for success, false for failure.
105
+ def update_package_metadata(options = {})
106
+ return true if update_package_metadata_impl options
107
+
108
+ if options[:no_proxy]
109
+ # out of alternatives
110
+ return false
111
+ else
112
+ # try bypassing proxy
113
+ return update_package_metadata(options.merge(:no_proxy => true))
114
+ end
115
+ end
42
116
 
43
117
  # add a source to the package system
44
118
  def add_package_source(source_url, source_repos = [], options = {})
@@ -16,9 +16,9 @@ class RailsPwnage::Scaffolds::Config
16
16
  # host info
17
17
  host_info = RailsPwnage::Config.create_db :host
18
18
  # the default instance name
19
- host_info[:instance] = Socket.gethostname()
19
+ host_info[:instance] = Socket.gethostname().split('.').first
20
20
  # the computer's name (if we ever do status reports)
21
- host_info[:name] = Socket.gethostname().split('.').first
21
+ host_info[:name] = Socket.gethostname()
22
22
  # username for creating / dropping databases
23
23
  host_info[:dbroot_name] = 'root'
24
24
  # password for creating / dropping databases
@@ -40,8 +40,9 @@ class RailsPwnage::Scaffolds::Packages
40
40
 
41
41
  # the packages comprising ruby
42
42
  def install_ruby
43
+ # NOTE: not wiping ruby anymore, because a lot of stuff depends on it... just hoping apt will replace it quietly
43
44
  # wipe the old version (and pray we don't die until we're done, otherwise we're on a ruby-less system)
44
- remove_packages %w(ruby1.8 libruby1.8)
45
+ # remove_packages %w(ruby1.8 libruby1.8) -- this shouldn't be needed anymore
45
46
 
46
47
  # install ruby from source
47
48
  install_packages %w(ruby1.8 rdoc libsetup-ruby1.8 ruby-pkg-tools rubygems1.8 rubygems irb), :source => true
@@ -2,9 +2,9 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{rails_pwnerer}
5
- s.version = "0.6.30"
5
+ s.version = "0.6.31"
6
6
 
7
- s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Victor Costan"]
9
9
  s.date = %q{2009-02-03}
10
10
  s.default_executable = %q{bin/rpwn}
@@ -27,11 +27,8 @@ Gem::Specification.new do |s|
27
27
  s.specification_version = 2
28
28
 
29
29
  if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
30
- s.add_development_dependency(%q<echoe>, [">= 0"])
31
30
  else
32
- s.add_dependency(%q<echoe>, [">= 0"])
33
31
  end
34
32
  else
35
- s.add_dependency(%q<echoe>, [">= 0"])
36
33
  end
37
34
  end
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.30
4
+ version: 0.6.31
5
5
  platform: ruby
6
6
  authors:
7
7
  - Victor Costan
@@ -11,17 +11,8 @@ cert_chain: []
11
11
 
12
12
  date: 2009-02-03 00:00:00 -05:00
13
13
  default_executable: bin/rpwn
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
16
- name: echoe
17
- type: :development
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: "0"
24
- version:
14
+ dependencies: []
15
+
25
16
  description: Rails deployment tool/hack.
26
17
  email: victor@costan.us
27
18
  executables:
@@ -161,7 +152,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
161
152
  requirements:
162
153
  - - ">="
163
154
  - !ruby/object:Gem::Version
164
- version: "1.2"
155
+ version: "0"
165
156
  version:
166
157
  requirements: []
167
158