rails_pwnerer 0.6.30 → 0.6.31

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.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