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