generate_vhosts 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'generate_vhosts'
4
+ require 'optparse'
5
+
6
+ OptionParser.new do |opts|
7
+ opts.banner = "Usage: generate_vhosts [options]"
8
+
9
+ opts.on("-d", "--directory DIR", "The directory your projects are located, defaults to ~/code") do |d|
10
+ @dir = d
11
+ end
12
+
13
+ opts.on_tail("-h", "--help", "Show this help message.") do
14
+ puts opts;
15
+ exit
16
+ end
17
+ end.parse!
18
+
19
+ if @dir
20
+ puts GenerateVhosts.new(@dir).vhosts
21
+ else
22
+ puts GenerateVhosts.new.vhosts
23
+ end
@@ -0,0 +1,38 @@
1
+ require 'ERB'
2
+ require 'socket'
3
+
4
+ class GenerateVhosts
5
+
6
+ attr_accessor :vhosts
7
+
8
+ def initialize(code_dir="~/code")
9
+ @vhosts = ""
10
+ @hostname = Socket.gethostname.split('.').first
11
+ @code_dir = code_dir
12
+ Dir.chdir(File.expand_path(code_dir)) do
13
+ Dir.glob("*").each do |subdir|
14
+ @app_dir = subdir
15
+ @vhosts << generate_vhost if is_web_app
16
+ end
17
+ end
18
+ @vhosts
19
+ end
20
+
21
+ def is_web_app
22
+ rack? || rails_legacy?
23
+ end
24
+
25
+ def rack?
26
+ File.exists?("./#{@app_dir}/config.ru") and File.directory?("./#{@app_dir}/public")
27
+ end
28
+
29
+ def rails_legacy?
30
+ File.exists?("./#{@app_dir}/config/boot.rb") and File.directory?("./#{@app_dir}/public")
31
+ end
32
+
33
+ def generate_vhost
34
+ template = ERB.new(File.read(File.join(File.dirname(__FILE__), "/template.vhost.erb")))
35
+ template.result(binding)
36
+ end
37
+ end
38
+
@@ -0,0 +1,11 @@
1
+ <VirtualHost *:80>
2
+ DocumentRoot "<%= File.expand_path(File.join(@code_dir, @app_dir, "public")) %>"
3
+ ServerName <%= @app_dir %>
4
+ ServerAlias <%= @app_dir %>.local <%= @app_dir %>.<%= @hostname %>
5
+ ErrorLog "/private/var/log/apache2/<%= @app_dir %>-error_log"
6
+ CustomLog "/private/var/log/apache2/<%= @app_dir %>-access_log" combined
7
+ <Directory <%= File.expand_path(File.join(@code_dir, @app_dir, "public")) %>>
8
+ Order allow,deny
9
+ Allow from all
10
+ </Directory>
11
+ </VirtualHost>
metadata ADDED
@@ -0,0 +1,69 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: generate_vhosts
3
+ version: !ruby/object:Gem::Version
4
+ hash: 27
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 0
10
+ version: 0.1.0
11
+ platform: ruby
12
+ authors:
13
+ - Matt House
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-10-18 00:00:00 +01:00
19
+ default_executable:
20
+ dependencies: []
21
+
22
+ description:
23
+ email: matt@eightbitraptor.com
24
+ executables:
25
+ - generate_vhosts
26
+ extensions: []
27
+
28
+ extra_rdoc_files: []
29
+
30
+ files:
31
+ - lib/generate_vhosts.rb
32
+ - lib/template.vhost.erb
33
+ - bin/generate_vhosts
34
+ has_rdoc: true
35
+ homepage: http://eightbitraptor.com
36
+ licenses: []
37
+
38
+ post_install_message:
39
+ rdoc_options: []
40
+
41
+ require_paths:
42
+ - lib
43
+ required_ruby_version: !ruby/object:Gem::Requirement
44
+ none: false
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ hash: 3
49
+ segments:
50
+ - 0
51
+ version: "0"
52
+ required_rubygems_version: !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ hash: 3
58
+ segments:
59
+ - 0
60
+ version: "0"
61
+ requirements: []
62
+
63
+ rubyforge_project:
64
+ rubygems_version: 1.3.7
65
+ signing_key:
66
+ specification_version: 3
67
+ summary: Generate vhosts for all rack apps in a given directory
68
+ test_files: []
69
+