rails_pwnerer 0.4.7 → 0.4.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 +2 -0
- data/README +4 -4
- data/lib/pwnage/app/svn.rb +27 -0
- data/lib/pwnage/scaffolds/packages.rb +8 -2
- data/rails_pwnerer.gemspec +3 -3
- metadata +2 -2
data/CHANGELOG
CHANGED
data/README
CHANGED
@@ -17,18 +17,18 @@ 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
19
|
of your application. You'll become lazy, and take shortcuts, like having
|
20
|
-
production passwords in the repository, insecure file permissions.
|
20
|
+
production passwords in the repository, or insecure file permissions.
|
21
21
|
I won't even mention backups.
|
22
22
|
|
23
23
|
Life with +rails_pwnerer+:
|
24
24
|
|
25
25
|
1) Install ruby and rubygems (one command should be enough, but the rubygems in Ubuntu 8.04 doesn't work):
|
26
26
|
|
27
|
-
sudo apt-get install
|
27
|
+
sudo apt-get -y install rubygems
|
28
28
|
|
29
|
-
sudo
|
29
|
+
sudo gem update --system (you'll have to retry this if you get an error)
|
30
30
|
|
31
|
-
sudo
|
31
|
+
sudo apt-get -y install ruby (yes you read it right, this comes last)
|
32
32
|
|
33
33
|
2) Install +rails_pwnerer+:
|
34
34
|
sudo gem install rails_pwnerer
|
data/lib/pwnage/app/svn.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# checks out the application
|
2
2
|
|
3
3
|
require 'fileutils'
|
4
|
+
require 'rexml/document'
|
4
5
|
|
5
6
|
class RailsPwnage::App::Svn
|
6
7
|
include RailsPwnage::Base
|
@@ -90,6 +91,31 @@ class RailsPwnage::App::Svn
|
|
90
91
|
FileUtils.rm_r RailsPwnage::Config.path_to(app_name) if File.exists? RailsPwnage::Config.path_to(app_name)
|
91
92
|
end
|
92
93
|
|
94
|
+
# remove any files not in SVN in the application dir
|
95
|
+
def cleanup_app_dir(app_name, target_dir)
|
96
|
+
Dir.chdir(RailsPwnage::Config.path_to(app_name)) do
|
97
|
+
# get a listing of what happened in that directory
|
98
|
+
xml_status = `svn status --xml #{target_dir}`
|
99
|
+
xsdoc = REXML::Document.new xml_status
|
100
|
+
|
101
|
+
xsdoc.root.elements['target'].each_element do |e|
|
102
|
+
next unless e.name == 'entry'
|
103
|
+
next unless e.elements['wc-status'].attribute('item').value == 'unversioned'
|
104
|
+
|
105
|
+
File.delete e.attribute('path').value
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
# clean up the application directory by removing caches
|
111
|
+
def cleanup_app_caches(app_name)
|
112
|
+
# TODO: learn how Rails caches work and kill those too
|
113
|
+
['app', 'lib', 'public/images',
|
114
|
+
'public/javascripts', 'public/stylesheets', 'script',
|
115
|
+
'test', 'tmp', 'vendor'
|
116
|
+
].each { |dir| cleanup_app_dir app_name, dir }
|
117
|
+
end
|
118
|
+
|
93
119
|
def manage(app_name, action)
|
94
120
|
case action
|
95
121
|
when :checkpoint
|
@@ -119,6 +145,7 @@ class RailsPwnage::App::Svn
|
|
119
145
|
|
120
146
|
# TODO: maybe backup old version before issuing the svn update?
|
121
147
|
|
148
|
+
cleanup_app_caches(app_name)
|
122
149
|
svn_update(app_name)
|
123
150
|
end
|
124
151
|
|
@@ -5,17 +5,23 @@ class RailsPwnage::Scaffolds::Packages
|
|
5
5
|
|
6
6
|
# the packages needed to manage the server remotely and instal applications
|
7
7
|
def install_management
|
8
|
-
|
8
|
+
# openssh-server allows us to ssh into the box
|
9
|
+
# subversion is needed to pull code from SVN repositories
|
10
|
+
# ddclient does dynamic DNS
|
11
|
+
# avahi-daemon does mDNS, a.k.a. Bonjour (makes "ping hostname.local" work)
|
12
|
+
install_packages %w(openssh-server subversion ddclient avahi-daemon)
|
9
13
|
end
|
10
14
|
|
11
15
|
# packages that are needed by popular gems
|
12
16
|
def install_tools
|
17
|
+
# needed by rmagick which does image processing
|
13
18
|
install_packages %w(libmagick9-dev)
|
14
19
|
end
|
15
20
|
|
16
21
|
# the packages comprising ruby
|
17
22
|
def install_ruby
|
18
|
-
|
23
|
+
# irb, rdoc, ri aren't really essential but they come in handy
|
24
|
+
install_packages %w(build-essential ruby rubygems ruby1.8-dev irb rdoc ri)
|
19
25
|
end
|
20
26
|
|
21
27
|
# the packages for a mysql server and development libraries
|
data/rails_pwnerer.gemspec
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
|
2
|
-
# Gem::Specification for Rails_pwnerer-0.4.
|
2
|
+
# Gem::Specification for Rails_pwnerer-0.4.8
|
3
3
|
# Originally generated by Echoe
|
4
4
|
|
5
5
|
Gem::Specification.new do |s|
|
6
6
|
s.name = %q{rails_pwnerer}
|
7
|
-
s.version = "0.4.
|
7
|
+
s.version = "0.4.8"
|
8
8
|
|
9
9
|
s.specification_version = 2 if s.respond_to? :specification_version=
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
12
|
s.authors = ["Victor Costan"]
|
13
|
-
s.date = %q{2008-04-
|
13
|
+
s.date = %q{2008-04-27}
|
14
14
|
s.default_executable = %q{rpwn}
|
15
15
|
s.description = %q{Rails deployment tool/hack.}
|
16
16
|
s.email = %q{victor@costan.us}
|
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.4.
|
4
|
+
version: 0.4.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-04-
|
12
|
+
date: 2008-04-27 00:00:00 -04:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|