webify 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,47 +1,10 @@
1
- require 'webrick'
2
- require 'optparse'
1
+ require 'webify/version'
2
+ require 'webify/runner'
3
3
 
4
- class Webify
5
- include WEBrick
6
-
7
- DEFAULT_PORT = 3000
8
-
9
- def self.start(options={})
10
- dir = File.expand_path(options[:dir] || Dir::pwd)
11
- port = options[:port] || DEFAULT_PORT
12
-
13
- msg = "Serving: #{dir}\nURL: http://#{Socket.gethostname}:#{port}"
14
-
15
- puts "="*80
16
- puts "#{msg}\n"
17
- puts ("="*80)+"\n\n"
18
-
19
- server = HTTPServer.new(
20
- :Port => port,
21
- :DocumentRoot => dir
22
- )
23
-
24
- trap('INT') { server.shutdown }
25
- server.start
26
- end
27
- end
28
-
29
- options = {
30
- :port => Webify::DEFAULT_PORT,
31
- :dir => Dir.pwd
32
- }
33
-
34
- options_parser = OptionParser.new do |opts|
35
- opts.banner = "Webify -- serve any directory to your browser\n"+
36
- "Usage: webify [options]"
37
-
38
- opts.separator ""
39
- opts.separator "Server options:"
40
-
41
- opts.on('-p', '--port PORT', "Use PORT (default: #{options[:port]})") {|val| options[:port] = val }
42
- opts.on('-d', '--dir DIRECTORY', "Document root DIRECTORY (default: #{options[:dir]})") {|val| options[:dir] = val }
43
- opts.on('-h', '--help', 'Display this help message') { puts opts; exit! }
4
+ module Webify
5
+ DEFAULT_BACKEND = 'Webrick'
6
+ DEFAULT_PORT = 3000
7
+ DEFAULT_DIR = Dir::pwd
44
8
  end
45
- options_parser.parse!(ARGV)
46
9
 
47
- Webify.start(options)
10
+ Webify::Runner.start!
@@ -0,0 +1,26 @@
1
+ begin
2
+ require 'mongrel'
3
+ rescue LoadError => ex
4
+ $stderr.puts "Oops.. can't load Mongrel, try: gem install mongrel"
5
+ exit!
6
+ end
7
+
8
+ module Webify
9
+ module Backend
10
+
11
+ class Mongrel
12
+ def self.start!(options={})
13
+ dir = File.expand_path(options[:dir] || Webify::DEFAULT_DIR)
14
+ port = options[:port] || Webify::DEFAULT_PORT
15
+ throttle = options[:throttle] || 0
16
+
17
+ server = ::Mongrel::HttpServer.new("0.0.0.0", port, 950, throttle.to_i, 60)
18
+ server.register("/", ::Mongrel::DirHandler.new(dir))
19
+
20
+ trap('INT') { server.stop }
21
+ server.run.join
22
+ end
23
+ end
24
+
25
+ end
26
+ end
@@ -0,0 +1,24 @@
1
+ require 'webrick'
2
+
3
+ module Webify
4
+ module Backend
5
+
6
+ class Webrick
7
+ include ::WEBrick
8
+
9
+ def self.start!(options={})
10
+ dir = File.expand_path(options[:dir] || Webify::DEFAULT_DIR)
11
+ port = options[:port] || Webify::DEFAULT_PORT
12
+
13
+ server = HTTPServer.new(
14
+ :Port => port,
15
+ :DocumentRoot => dir
16
+ )
17
+
18
+ trap('INT') { server.shutdown }
19
+ server.start
20
+ end
21
+ end
22
+
23
+ end
24
+ end
@@ -0,0 +1,52 @@
1
+ require 'optparse'
2
+
3
+ module Webify
4
+ class Runner
5
+
6
+ def self.start!
7
+ options = {
8
+ :backend => Webify::DEFAULT_BACKEND,
9
+ :port => Webify::DEFAULT_PORT,
10
+ :dir => Webify::DEFAULT_DIR,
11
+ :throttle => 0
12
+ }
13
+
14
+ options_parser = OptionParser.new do |opts|
15
+ opts.banner = "Webify -- serve any directory to your browser\n"+
16
+ "Usage: webify [options]"
17
+
18
+ opts.separator ""
19
+ opts.separator "Server options:"
20
+
21
+ opts.on('-m', '--mongrel', "Use Mongrel as the backend (default: #{options[:backend]})") { options[:backend] = 'Mongrel' }
22
+ opts.on('-d', '--dir DIRECTORY', "Document root DIRECTORY (default: #{options[:dir]})") {|val| options[:dir] = val }
23
+ opts.on('-p', '--port PORT', "Use PORT (default: #{options[:port]})") {|val| options[:port] = val }
24
+ opts.on('-h', '--help', 'Display this help message') { puts opts; exit! }
25
+
26
+ opts.separator ""
27
+ opts.separator "Mongrel backend options:"
28
+ opts.on('-t', '--throttle TIME', "Time to pause (in hundredths of a second) between accepting clients. (default: #{options[:throttle]})") {|val| options[:throttle] = val }
29
+ end
30
+ options_parser.parse!(ARGV)
31
+
32
+ # Load the backend
33
+ begin
34
+ require "webify/backend/#{options[:backend].downcase}"
35
+ rescue LoadError => ex
36
+ $stderr.puts "Error! Cannot load backend #{options[:backend]}"
37
+ exit
38
+ end
39
+
40
+ backend_klass = instance_eval("Webify::Backend::" + options[:backend])
41
+
42
+ # Booting up the server
43
+ msg = "Serving: #{options[:dir]}\nURL: http://#{Socket.gethostname}:#{options[:port]}"
44
+ puts "="*80
45
+ puts "#{msg}\n"
46
+ puts ("="*80)+"\n\n"
47
+
48
+ backend_klass.start!(options)
49
+ end
50
+
51
+ end
52
+ end
@@ -0,0 +1,3 @@
1
+ module Webify
2
+ VERSION = '0.2.0'
3
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: webify
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -22,6 +22,10 @@ extensions: []
22
22
  extra_rdoc_files: []
23
23
  files:
24
24
  - README.md
25
+ - lib/webify/backend/mongrel.rb
26
+ - lib/webify/backend/webrick.rb
27
+ - lib/webify/runner.rb
28
+ - lib/webify/version.rb
25
29
  - lib/webify.rb
26
30
  - bin/webify
27
31
  homepage: http://github.com/nulayer/webify