rails_pwnerer 0.7.6 → 0.7.7
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.
- checksums.yaml +7 -0
- data/CHANGELOG +2 -0
- data/Manifest +0 -1
- data/README +9 -9
- data/Rakefile +5 -9
- data/lib/rails_pwnerer/scaffolds/packages.rb +44 -44
- data/lib/rails_pwnerer/scaffolds/rubygems.rb +18 -21
- data/rails_pwnerer.gemspec +11 -10
- metadata +22 -36
- data/ext/rpwn_setup_notice/extconf.rb +0 -43
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: e0f91e3ad61cb19dd6f961d89b72682317f1fff0
|
4
|
+
data.tar.gz: 4efc0bd59642eefa8829f55a74780d5c91f0a6d3
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: a09169d7fd3559d8016de54a219e5ce59f76736fdf7c135889554d50beea868b8f37e376f5d017aa35e9a914017aa95aeb1b28142edd6e6c10562656f106273a
|
7
|
+
data.tar.gz: d27dfc145b3348be934f52810bed79c53114026c3027c84e69e3ec63a5aaeda067cb3f68d2b7672f805cf401a78941b63a3c546304f9e51ed4218a00189fa3e7
|
data/CHANGELOG
CHANGED
data/Manifest
CHANGED
data/README
CHANGED
@@ -6,7 +6,7 @@ much rather having ruby do that for me.
|
|
6
6
|
|
7
7
|
Right now, +rails_pwnerer+ assumes a fresh Ubuntu 8.04 installation. You're
|
8
8
|
welcome to test/update for other systems, and I'll be happy to merge patches,
|
9
|
-
or add you to the RubyForge project.
|
9
|
+
or add you to the RubyForge project.
|
10
10
|
|
11
11
|
|
12
12
|
Life without +rails_pwnerer+:
|
@@ -16,7 +16,7 @@ ready for production. You'll be frustrated in the process, but feel
|
|
16
16
|
accomplished at the end. Assuming you don't do something wrong.
|
17
17
|
|
18
18
|
Read a couple more 20-page guides, and learn to push newer versions
|
19
|
-
of your application. You'll become lazy, and take shortcuts, like having
|
19
|
+
of your application. You'll become lazy, and take shortcuts, like having
|
20
20
|
production passwords in the repository, or insecure file permissions, or
|
21
21
|
you'll forget to delete cached javascripts and stylesheets from public/.
|
22
22
|
I won't even mention backups. Or scripts to recover your frontends
|
@@ -26,7 +26,7 @@ application.
|
|
26
26
|
Life with +rails_pwnerer+:
|
27
27
|
|
28
28
|
1) Install a bootstrap version of ruby and rubygems:
|
29
|
-
sudo apt-get -y install
|
29
|
+
sudo apt-get -y install ruby
|
30
30
|
|
31
31
|
2) Install +rails_pwnerer+:
|
32
32
|
sudo gem install rails_pwnerer
|
@@ -54,7 +54,7 @@ sudo rpwn install you@your.repository.host/path/to/your_application.git
|
|
54
54
|
or
|
55
55
|
|
56
56
|
sudo rpwn install p4://you:yourpass@host:port/path/to/your/application
|
57
|
-
|
57
|
+
|
58
58
|
5) Maintain your application
|
59
59
|
|
60
60
|
* Push the updates in the SVN repository:
|
@@ -76,7 +76,7 @@ rpwn console your_application
|
|
76
76
|
rpwn db_console your_application
|
77
77
|
|
78
78
|
* Configure DynDns for your application server
|
79
|
-
sudo rpwn scaffold ddns full_host_name ddns_user ddns_password
|
79
|
+
sudo rpwn scaffold ddns full_host_name ddns_user ddns_password
|
80
80
|
|
81
81
|
* Change the database password
|
82
82
|
sudp rpwn rekey your_application
|
@@ -151,7 +151,7 @@ SSL servers with +rails_pwnerer+:
|
|
151
151
|
1) Generate a server key:
|
152
152
|
openssl req -new -newkey rsa:2048 -keyout config/rails_pwnerer/instance.pem -out instance.csr -nodes
|
153
153
|
|
154
|
-
2) Be sure to set the CN (Common Name) to your server's DNS address. Send the
|
154
|
+
2) Be sure to set the CN (Common Name) to your server's DNS address. Send the
|
155
155
|
CSR file to your CA: cat instance.csr
|
156
156
|
|
157
157
|
3) Copy the certificate into the +rails_pwnerer+ configuration directory:
|
@@ -183,14 +183,14 @@ The following prefixes are searched for in script/rails_pwnerer:
|
|
183
183
|
The first script matching the pattern is executed. This means you can
|
184
184
|
have an "install.rb", so you can use your favorite language extension.
|
185
185
|
You cannot have both an "install.rb" and an "install.sh" executing at
|
186
|
-
the same time.
|
186
|
+
the same time.
|
187
187
|
|
188
188
|
If the script ends in _su or _su.extension (e.g. _su.ruby), it will be
|
189
189
|
run as the super-user (root). Otherwise it will be run as the
|
190
190
|
application's user. For instance, post_reset_su.rb wil be run as the
|
191
|
-
super-user, whereas post_reset.sh will not.
|
191
|
+
super-user, whereas post_reset.sh will not.
|
192
192
|
|
193
193
|
Writing your lifecycle scripts in Ruby? You can use the +rails_pwnerer+
|
194
194
|
gem to commonly-used chunks of functionality . RailsPwnage::Util
|
195
195
|
(including RailsPwnage::Base) is likely to be useful.
|
196
|
-
|
196
|
+
|
data/Rakefile
CHANGED
@@ -3,23 +3,19 @@ require 'echoe'
|
|
3
3
|
|
4
4
|
Echoe.new('rails_pwnerer') do |p|
|
5
5
|
p.project = 'rails-pwnage' # rubyforge project
|
6
|
-
|
6
|
+
|
7
7
|
p.author = 'Victor Costan'
|
8
8
|
p.email = 'victor@costan.us'
|
9
9
|
p.summary = 'Rails deployment hack.'
|
10
|
-
p.url = 'http://
|
11
|
-
p.
|
10
|
+
p.url = 'http://github.com/pwnall/rails_pwnage'
|
11
|
+
p.licenses = ['MIT']
|
12
12
|
p.development_dependencies = ['echoe', 'fakefs', 'flexmock']
|
13
13
|
p.runtime_dependencies = ['zerg_support']
|
14
|
-
|
15
|
-
p.eval = proc do |p|
|
16
|
-
p.default_executable = 'bin/rpwn'
|
17
|
-
end
|
18
|
-
|
14
|
+
|
19
15
|
p.need_tar_gz = !Gem.win_platform?
|
20
16
|
p.need_zip = !Gem.win_platform?
|
21
17
|
p.rdoc_pattern =
|
22
|
-
/^(lib|bin|tasks|ext)|^BUILD|^README|^CHANGELOG|^TODO|^LICENSE|^COPYING$/
|
18
|
+
/^(lib|bin|tasks|ext)|^BUILD|^README|^CHANGELOG|^TODO|^LICENSE|^COPYING$/
|
23
19
|
end
|
24
20
|
|
25
21
|
if $0 == __FILE__
|
@@ -2,54 +2,54 @@
|
|
2
2
|
|
3
3
|
class RailsPwnerer::Scaffolds::Packages
|
4
4
|
include RailsPwnerer::Base
|
5
|
-
|
5
|
+
|
6
6
|
# Packages needed to manage the server remotely and install applications.
|
7
7
|
def install_management
|
8
8
|
# Needed to play with the configuration database.
|
9
9
|
package 'debconf'
|
10
10
|
package 'debconf-utils'
|
11
|
-
|
11
|
+
|
12
12
|
# Keys for Debian packages.
|
13
13
|
package 'debian-archive-keyring'
|
14
|
-
|
14
|
+
|
15
15
|
# Fetch files via HTTP.
|
16
16
|
package 'curl'
|
17
17
|
package 'wget'
|
18
|
-
|
18
|
+
|
19
19
|
package 'dpkg-dev' # Builds packages from source.
|
20
20
|
package 'openssh-server' # SSH into the box.
|
21
21
|
|
22
22
|
# For gems with native extensions.
|
23
23
|
package 'build-essential'
|
24
24
|
package 'g++'
|
25
|
-
|
25
|
+
|
26
26
|
# Pull code from version control.
|
27
|
-
package 'subversion'
|
27
|
+
package 'subversion'
|
28
28
|
package 'git-core'
|
29
29
|
|
30
30
|
package 'avahi-daemon' # mDNS, a.k.a. Bonjour
|
31
31
|
package 'ddclient' # dynamic DNS
|
32
32
|
end
|
33
|
-
|
33
|
+
|
34
34
|
# Packages needed by popular gems.
|
35
35
|
def install_tools
|
36
36
|
# For eventmachine.
|
37
37
|
package 'libssl-dev'
|
38
|
-
|
38
|
+
|
39
39
|
# For rmagick (image processing).
|
40
40
|
package 'libmagickwand-dev', /^libmagick\d*-dev$/
|
41
|
-
|
41
|
+
|
42
42
|
# For HTML/XML parsers (nokogiri, hpricot).
|
43
43
|
package 'libxml2-dev'
|
44
44
|
package 'libxslt1-dev'
|
45
|
-
|
45
|
+
|
46
46
|
# For HTTP fetchers (curb).
|
47
47
|
package 'libcurl-dev', 'libcurl-openssl-dev', /^libcurl\d*-dev$/,
|
48
48
|
/^libcurl\d*-openssl-dev$/
|
49
|
-
|
49
|
+
|
50
50
|
# needed for solr and other java-based services
|
51
51
|
package /^openjdk-\d+-jdk/
|
52
|
-
|
52
|
+
|
53
53
|
# useful to be able to work with compressed data
|
54
54
|
package 'zlib-dev', /^zlib[0-9a-z]*-dev$/
|
55
55
|
package 'bzip2'
|
@@ -57,78 +57,78 @@ class RailsPwnerer::Scaffolds::Packages
|
|
57
57
|
package 'tar'
|
58
58
|
package 'zip'
|
59
59
|
end
|
60
|
-
|
60
|
+
|
61
61
|
# Packages for all the database servers we could need.
|
62
62
|
def install_databases
|
63
63
|
package 'sqlite3'
|
64
64
|
package 'libsqlite3-dev'
|
65
|
-
|
65
|
+
|
66
66
|
package 'mysql-client'
|
67
67
|
package 'mysql-server'
|
68
68
|
package 'libmysql-dev', 'libmysqlclient-dev', /^libmysqlclient\d*-dev$/
|
69
|
-
|
69
|
+
|
70
70
|
package 'postgresql-client'
|
71
71
|
package 'libpq-dev'
|
72
|
-
|
72
|
+
|
73
73
|
# TODO: NoSQL stores.
|
74
|
-
end
|
75
|
-
|
74
|
+
end
|
75
|
+
|
76
76
|
# The ruby environment (ruby, irb, rubygems).
|
77
77
|
def install_ruby
|
78
|
-
|
78
|
+
# remove the bootstrap version of ruby to install the best available one.
|
79
|
+
remove_packages %w(ruby)
|
80
|
+
install_ruby_20 || install_ruby_19
|
79
81
|
end
|
80
|
-
|
81
|
-
#
|
82
|
-
def
|
83
|
-
package = best_package_matching(['
|
84
|
-
if !package
|
82
|
+
|
83
|
+
# MRI 2.0.
|
84
|
+
def install_ruby_20(retry_with_repos = true)
|
85
|
+
package = best_package_matching(['ruby2.0'])
|
86
|
+
if !package
|
85
87
|
return false unless retry_with_repos
|
86
|
-
|
88
|
+
|
87
89
|
# This distribution has an old ruby. Work around it.
|
88
90
|
deb_source = 'http://debian.mirrors.tds.net/debian/'
|
89
91
|
deb_repos = %w(testing main non-free contrib)
|
90
|
-
return_value = nil
|
92
|
+
return_value = nil
|
91
93
|
with_package_source deb_source, deb_repos do
|
92
|
-
return_value =
|
94
|
+
return_value = install_ruby_20 false
|
93
95
|
end
|
94
96
|
return return_value
|
95
97
|
end
|
96
|
-
|
97
|
-
package 'ruby1.9.1-full'
|
98
|
+
package 'ruby2.0', 'ruby2.0-dev'
|
98
99
|
true
|
99
100
|
end
|
100
|
-
|
101
|
-
#
|
102
|
-
def
|
103
|
-
package = best_package_matching(['ruby1.
|
104
|
-
if !package or package[:version] < '1.
|
101
|
+
|
102
|
+
# MRI19 (1.9.2 or above).
|
103
|
+
def install_ruby_19(retry_with_repos = true)
|
104
|
+
package = best_package_matching(['ruby1.9.1'])
|
105
|
+
if !package or package[:version] < '1.9.2'
|
106
|
+
return false unless retry_with_repos
|
107
|
+
|
105
108
|
# This distribution has an old ruby. Work around it.
|
106
109
|
deb_source = 'http://debian.mirrors.tds.net/debian/'
|
107
110
|
deb_repos = %w(testing main non-free contrib)
|
108
|
-
return_value = nil
|
111
|
+
return_value = nil
|
109
112
|
with_package_source deb_source, deb_repos do
|
110
|
-
return_value =
|
113
|
+
return_value = install_ruby_19 false
|
111
114
|
end
|
112
115
|
return return_value
|
113
116
|
end
|
114
|
-
|
115
|
-
package 'ruby1.8-full', 'ruby-full'
|
116
117
|
|
117
|
-
|
118
|
-
|
118
|
+
package 'ruby1.9.1', 'ruby1.9.1-dev'
|
119
|
+
true
|
119
120
|
end
|
120
|
-
|
121
|
+
|
121
122
|
# Package for front-end servers.
|
122
123
|
def install_frontends
|
123
124
|
package 'nginx'
|
124
|
-
package 'varnish'
|
125
125
|
end
|
126
|
-
|
126
|
+
|
127
127
|
# Implementation of the super-simple package DSL.
|
128
128
|
def package(*patterns)
|
129
129
|
install_package_matching patterns
|
130
130
|
end
|
131
|
-
|
131
|
+
|
132
132
|
# Runner.
|
133
133
|
def run
|
134
134
|
update_package_metadata
|
@@ -3,14 +3,14 @@ require 'net/http'
|
|
3
3
|
|
4
4
|
class RailsPwnerer::Scaffolds::RubyGems
|
5
5
|
include RailsPwnerer::Base
|
6
|
-
|
6
|
+
|
7
7
|
# retrieves the URI for a Google "I'm Feeling Lucky" search
|
8
8
|
def google_lucky_uri(query)
|
9
9
|
uri = URI.parse "http://www.google.com/search?q=#{URI.escape query}&btnI=Lucky"
|
10
10
|
response = Net::HTTP.start(uri.host, uri.port) { |http| http.get "#{uri.path}?#{uri.query}" }
|
11
11
|
response.header['location']
|
12
12
|
end
|
13
|
-
|
13
|
+
|
14
14
|
# retrieves the download URI for a RubyForge project
|
15
15
|
def rubyforge_download_uri(project, gem_name = project, extension = ".gem")
|
16
16
|
frs_uri = URI.parse google_lucky_uri("#{project} download page")
|
@@ -20,10 +20,10 @@ class RailsPwnerer::Scaffolds::RubyGems
|
|
20
20
|
latest_link = frs_links.sort_by { |n| n.match(/#{gem_name}-(.*)\.#{extension}/)[1] }.last
|
21
21
|
return frs_uri.merge(latest_link)
|
22
22
|
end
|
23
|
-
|
23
|
+
|
24
24
|
# installs Rubygems on the system
|
25
25
|
def install_rubygems
|
26
|
-
with_temp_dir(:root => true) do
|
26
|
+
with_temp_dir(:root => true) do
|
27
27
|
tgz_uri = rubyforge_download_uri('rubygems', 'rubygems', 'tgz')
|
28
28
|
file_name = File.basename tgz_uri.path
|
29
29
|
loop do
|
@@ -36,55 +36,52 @@ class RailsPwnerer::Scaffolds::RubyGems
|
|
36
36
|
File.open(file_name, 'wb') { |f| f.write response.body }
|
37
37
|
break
|
38
38
|
end
|
39
|
-
|
40
|
-
system "tar -xzf #{file_name}"
|
39
|
+
|
40
|
+
system "tar -xzf #{file_name}"
|
41
41
|
File.unlink file_name
|
42
42
|
Dir.chdir(Dir.glob('*').first) do
|
43
43
|
system "ruby setup.rb"
|
44
44
|
end
|
45
|
-
end
|
45
|
+
end
|
46
46
|
end
|
47
|
-
|
47
|
+
|
48
48
|
# sets up good defaults for Rubygems
|
49
49
|
def configure_rubygems
|
50
50
|
File.open('/etc/gemrc', 'w') do |f|
|
51
51
|
f.write "gem: --no-force --no-rdoc --no-ri --no-user-install --wrappers\n"
|
52
52
|
end
|
53
53
|
end
|
54
|
-
|
54
|
+
|
55
55
|
def run
|
56
56
|
# get the old path set by pre-go
|
57
57
|
old_gems = @@old_gems
|
58
|
-
|
59
|
-
# remove the
|
58
|
+
|
59
|
+
# remove the Debian gems package and install from source
|
60
60
|
remove_packages %w(rubygems)
|
61
61
|
install_rubygems
|
62
|
-
|
62
|
+
|
63
63
|
# configure rubygems so it doesn't waste time
|
64
64
|
configure_rubygems
|
65
65
|
|
66
|
-
# patch Ubuntu's broken rubygems installation
|
67
|
-
Kernel.system "cp /usr/bin/gem1.8 /usr/bin/gem"
|
68
|
-
|
69
66
|
# remove the gems that are trailing behind
|
70
67
|
new_gems = File.dirname(File.dirname(path_to_gem('sources', '/lib/sources.rb')))
|
71
68
|
return if new_gems == old_gems # don't wipe the new dir by mistake
|
72
|
-
FileUtils.rm_r old_gems
|
69
|
+
FileUtils.rm_r old_gems
|
73
70
|
end
|
74
|
-
|
71
|
+
|
75
72
|
def preflight
|
76
73
|
# save old lib path, in case we need to wipe it
|
77
74
|
# we need to do this because setting up packages might wipe Ubuntu's gems
|
78
|
-
@@old_gems = File.dirname(File.dirname(path_to_gem('sources', '/lib/sources.rb')))
|
75
|
+
@@old_gems = File.dirname(File.dirname(path_to_gem('sources', '/lib/sources.rb')))
|
79
76
|
end
|
80
|
-
|
77
|
+
|
81
78
|
# called before packages get installed
|
82
79
|
def self.pre_go
|
83
80
|
self.new.preflight
|
84
81
|
end
|
85
|
-
|
82
|
+
|
86
83
|
# standalone runner
|
87
84
|
def self.go
|
88
85
|
self.new.run
|
89
|
-
end
|
86
|
+
end
|
90
87
|
end
|
data/rails_pwnerer.gemspec
CHANGED
@@ -1,28 +1,29 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
# stub: rails_pwnerer 0.7.7 ruby lib
|
2
3
|
|
3
4
|
Gem::Specification.new do |s|
|
4
5
|
s.name = "rails_pwnerer"
|
5
|
-
s.version = "0.7.
|
6
|
+
s.version = "0.7.7"
|
6
7
|
|
7
8
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
9
|
s.authors = ["Victor Costan"]
|
9
|
-
s.date = "2013-
|
10
|
+
s.date = "2013-12-31"
|
10
11
|
s.description = "Rails deployment hack."
|
11
12
|
s.email = "victor@costan.us"
|
12
13
|
s.executables = ["rpwn", "rpwnctl", "rpwndev"]
|
13
|
-
s.
|
14
|
-
s.
|
15
|
-
s.
|
16
|
-
s.
|
17
|
-
s.rdoc_options = ["--line-numbers", "--
|
18
|
-
s.require_paths = ["lib"
|
14
|
+
s.extra_rdoc_files = ["CHANGELOG", "LICENSE", "README", "bin/rpwn", "bin/rpwnctl", "bin/rpwndev", "lib/rails_pwnerer.rb", "lib/rails_pwnerer/app/assets.rb", "lib/rails_pwnerer/app/cluster_config.rb", "lib/rails_pwnerer/app/config.rb", "lib/rails_pwnerer/app/db/mysql.rb", "lib/rails_pwnerer/app/files.rb", "lib/rails_pwnerer/app/gems.rb", "lib/rails_pwnerer/app/main.rb", "lib/rails_pwnerer/app/nginx_config.rb", "lib/rails_pwnerer/app/scripts.rb", "lib/rails_pwnerer/app/vcs/git.rb", "lib/rails_pwnerer/app/vcs/perforce.rb", "lib/rails_pwnerer/app/vcs/svn.rb", "lib/rails_pwnerer/base.rb", "lib/rails_pwnerer/base/atomics.rb", "lib/rails_pwnerer/base/cpus.rb", "lib/rails_pwnerer/base/dirs.rb", "lib/rails_pwnerer/base/gems.rb", "lib/rails_pwnerer/base/hostname.rb", "lib/rails_pwnerer/base/input.rb", "lib/rails_pwnerer/base/packages.rb", "lib/rails_pwnerer/base/process.rb", "lib/rails_pwnerer/base/rails.rb", "lib/rails_pwnerer/base/startup.rb", "lib/rails_pwnerer/config/app.rb", "lib/rails_pwnerer/config/frontends.rb", "lib/rails_pwnerer/config/main.rb", "lib/rails_pwnerer/config/paths.rb", "lib/rails_pwnerer/config/ports.rb", "lib/rails_pwnerer/config/repository.rb", "lib/rails_pwnerer/ctl_executor.rb", "lib/rails_pwnerer/dev_executor.rb", "lib/rails_pwnerer/executor.rb", "lib/rails_pwnerer/scaffolds/config.rb", "lib/rails_pwnerer/scaffolds/dir_permissions.rb", "lib/rails_pwnerer/scaffolds/dirs.rb", "lib/rails_pwnerer/scaffolds/gems.rb", "lib/rails_pwnerer/scaffolds/hook_daemon.rb", "lib/rails_pwnerer/scaffolds/hook_dyndns.rb", "lib/rails_pwnerer/scaffolds/mysql_config.rb", "lib/rails_pwnerer/scaffolds/packages.rb", "lib/rails_pwnerer/scaffolds/rubygems.rb", "lib/rails_pwnerer/scaffolds/sshd.rb", "lib/rails_pwnerer/util/kill_process_set.rb", "lib/rails_pwnerer/util/main.rb"]
|
15
|
+
s.files = ["CHANGELOG", "LICENSE", "Manifest", "README", "Rakefile", "bin/rpwn", "bin/rpwnctl", "bin/rpwndev", "lib/rails_pwnerer.rb", "lib/rails_pwnerer/app/assets.rb", "lib/rails_pwnerer/app/cluster_config.rb", "lib/rails_pwnerer/app/config.rb", "lib/rails_pwnerer/app/db/mysql.rb", "lib/rails_pwnerer/app/files.rb", "lib/rails_pwnerer/app/gems.rb", "lib/rails_pwnerer/app/main.rb", "lib/rails_pwnerer/app/nginx_config.rb", "lib/rails_pwnerer/app/scripts.rb", "lib/rails_pwnerer/app/vcs/git.rb", "lib/rails_pwnerer/app/vcs/perforce.rb", "lib/rails_pwnerer/app/vcs/svn.rb", "lib/rails_pwnerer/base.rb", "lib/rails_pwnerer/base/atomics.rb", "lib/rails_pwnerer/base/cpus.rb", "lib/rails_pwnerer/base/dirs.rb", "lib/rails_pwnerer/base/gems.rb", "lib/rails_pwnerer/base/hostname.rb", "lib/rails_pwnerer/base/input.rb", "lib/rails_pwnerer/base/packages.rb", "lib/rails_pwnerer/base/process.rb", "lib/rails_pwnerer/base/rails.rb", "lib/rails_pwnerer/base/startup.rb", "lib/rails_pwnerer/config/app.rb", "lib/rails_pwnerer/config/frontends.rb", "lib/rails_pwnerer/config/main.rb", "lib/rails_pwnerer/config/paths.rb", "lib/rails_pwnerer/config/ports.rb", "lib/rails_pwnerer/config/repository.rb", "lib/rails_pwnerer/ctl_executor.rb", "lib/rails_pwnerer/dev_executor.rb", "lib/rails_pwnerer/executor.rb", "lib/rails_pwnerer/scaffolds/config.rb", "lib/rails_pwnerer/scaffolds/dir_permissions.rb", "lib/rails_pwnerer/scaffolds/dirs.rb", "lib/rails_pwnerer/scaffolds/gems.rb", "lib/rails_pwnerer/scaffolds/hook_daemon.rb", "lib/rails_pwnerer/scaffolds/hook_dyndns.rb", "lib/rails_pwnerer/scaffolds/mysql_config.rb", "lib/rails_pwnerer/scaffolds/packages.rb", "lib/rails_pwnerer/scaffolds/rubygems.rb", "lib/rails_pwnerer/scaffolds/sshd.rb", "lib/rails_pwnerer/util/kill_process_set.rb", "lib/rails_pwnerer/util/main.rb", "test/base_package_test.rb", "test/helper.rb", "rails_pwnerer.gemspec"]
|
16
|
+
s.homepage = "http://github.com/pwnall/rails_pwnage"
|
17
|
+
s.licenses = ["MIT"]
|
18
|
+
s.rdoc_options = ["--line-numbers", "--title", "Rails_pwnerer", "--main", "README"]
|
19
|
+
s.require_paths = ["lib"]
|
19
20
|
s.rubyforge_project = "rails-pwnage"
|
20
|
-
s.rubygems_version = "1.
|
21
|
+
s.rubygems_version = "2.1.11"
|
21
22
|
s.summary = "Rails deployment hack."
|
22
23
|
s.test_files = ["test/base_package_test.rb"]
|
23
24
|
|
24
25
|
if s.respond_to? :specification_version then
|
25
|
-
s.specification_version =
|
26
|
+
s.specification_version = 4
|
26
27
|
|
27
28
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
28
29
|
s.add_runtime_dependency(%q<zerg_support>, [">= 0"])
|
metadata
CHANGED
@@ -1,78 +1,69 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails_pwnerer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
5
|
-
prerelease:
|
4
|
+
version: 0.7.7
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Victor Costan
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-12-31 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: zerg_support
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - ">="
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: echoe
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - ">="
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - ">="
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: fakefs
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - ">="
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - ">="
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: flexmock
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - ">="
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '0'
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - ">="
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: '0'
|
78
69
|
description: Rails deployment hack.
|
@@ -81,8 +72,7 @@ executables:
|
|
81
72
|
- rpwn
|
82
73
|
- rpwnctl
|
83
74
|
- rpwndev
|
84
|
-
extensions:
|
85
|
-
- ext/rpwn_setup_notice/extconf.rb
|
75
|
+
extensions: []
|
86
76
|
extra_rdoc_files:
|
87
77
|
- CHANGELOG
|
88
78
|
- LICENSE
|
@@ -90,7 +80,6 @@ extra_rdoc_files:
|
|
90
80
|
- bin/rpwn
|
91
81
|
- bin/rpwnctl
|
92
82
|
- bin/rpwndev
|
93
|
-
- ext/rpwn_setup_notice/extconf.rb
|
94
83
|
- lib/rails_pwnerer.rb
|
95
84
|
- lib/rails_pwnerer/app/assets.rb
|
96
85
|
- lib/rails_pwnerer/app/cluster_config.rb
|
@@ -145,7 +134,6 @@ files:
|
|
145
134
|
- bin/rpwn
|
146
135
|
- bin/rpwnctl
|
147
136
|
- bin/rpwndev
|
148
|
-
- ext/rpwn_setup_notice/extconf.rb
|
149
137
|
- lib/rails_pwnerer.rb
|
150
138
|
- lib/rails_pwnerer/app/assets.rb
|
151
139
|
- lib/rails_pwnerer/app/cluster_config.rb
|
@@ -194,36 +182,34 @@ files:
|
|
194
182
|
- test/base_package_test.rb
|
195
183
|
- test/helper.rb
|
196
184
|
- rails_pwnerer.gemspec
|
197
|
-
homepage: http://
|
198
|
-
licenses:
|
185
|
+
homepage: http://github.com/pwnall/rails_pwnage
|
186
|
+
licenses:
|
187
|
+
- MIT
|
188
|
+
metadata: {}
|
199
189
|
post_install_message:
|
200
190
|
rdoc_options:
|
201
|
-
- --line-numbers
|
202
|
-
- --
|
203
|
-
- --title
|
191
|
+
- "--line-numbers"
|
192
|
+
- "--title"
|
204
193
|
- Rails_pwnerer
|
205
|
-
- --main
|
194
|
+
- "--main"
|
206
195
|
- README
|
207
196
|
require_paths:
|
208
197
|
- lib
|
209
|
-
- ext
|
210
198
|
required_ruby_version: !ruby/object:Gem::Requirement
|
211
|
-
none: false
|
212
199
|
requirements:
|
213
|
-
- -
|
200
|
+
- - ">="
|
214
201
|
- !ruby/object:Gem::Version
|
215
202
|
version: '0'
|
216
203
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
217
|
-
none: false
|
218
204
|
requirements:
|
219
|
-
- -
|
205
|
+
- - ">="
|
220
206
|
- !ruby/object:Gem::Version
|
221
207
|
version: '1.2'
|
222
208
|
requirements: []
|
223
209
|
rubyforge_project: rails-pwnage
|
224
|
-
rubygems_version: 1.
|
210
|
+
rubygems_version: 2.1.11
|
225
211
|
signing_key:
|
226
|
-
specification_version:
|
212
|
+
specification_version: 4
|
227
213
|
summary: Rails deployment hack.
|
228
214
|
test_files:
|
229
215
|
- test/base_package_test.rb
|
@@ -1,43 +0,0 @@
|
|
1
|
-
# Invoked when the gem is installed. Hack to get a post-install hook.
|
2
|
-
|
3
|
-
require 'rubygems'
|
4
|
-
|
5
|
-
|
6
|
-
# Cheat to get the gem binaries installed in the user's path even on Debians.
|
7
|
-
['rpwn', 'rpwnctl', 'rpwndev'].each do |file|
|
8
|
-
bin_path = "/usr/bin/#{file}"
|
9
|
-
unless File.exists? bin_path
|
10
|
-
source_path = File.expand_path "../../../bin/#{file}", __FILE__
|
11
|
-
Kernel.system "ln -s #{source_path} #{bin_path}"
|
12
|
-
end
|
13
|
-
|
14
|
-
File.chmod((File.stat(binpath).mode | 0755), binpath) rescue nil
|
15
|
-
end
|
16
|
-
|
17
|
-
# Make the gem readable and runnable by anyone.
|
18
|
-
#
|
19
|
-
# This is a work-around for systems with messed up permission masks.
|
20
|
-
def openup(path)
|
21
|
-
if File.file?(path)
|
22
|
-
File.chmod((File.stat(path).mode | 0755), path) rescue nil
|
23
|
-
return
|
24
|
-
end
|
25
|
-
|
26
|
-
Dir.foreach(path) do |entry|
|
27
|
-
next if ['.', '..'].include? entry
|
28
|
-
openup File.join(path, entry)
|
29
|
-
end
|
30
|
-
end
|
31
|
-
base_path = File.expand_path "../../..", __FILE__
|
32
|
-
openup base_path
|
33
|
-
|
34
|
-
# We really shouldn't be abusing rubygems' root. Then again, the Debian
|
35
|
-
# maintainers shouldn't be abusing the patience of Ruby developers.
|
36
|
-
|
37
|
-
# Now trick rubygems and echoe into believing that a gem got installed and
|
38
|
-
# everything is good.
|
39
|
-
ext_binary = 'rpwn_setup_notice' + (Gem.win_platform? ? '.dll' : '.so')
|
40
|
-
File.open(ext_binary, 'w') { |f| }
|
41
|
-
File.open('Makefile', 'w') do |f|
|
42
|
-
f.write "# target_prefix = #{ext_binary}\nall:\n\ninstall:\n\n"
|
43
|
-
end
|