bin/httpthumbnailer in httpthumbnailer-0.0.7 vs bin/httpthumbnailer in httpthumbnailer-0.0.8

- old
+ new

@@ -1,28 +1,39 @@ #!/usr/bin/ruby +require 'cli' +options = CLI.new do + description 'HTTP thumbnailing server' + option :bind, :short => :b, :default => 'localhost', :description => "HTTP server bind address" + option :port, :short => :p, :default => 3100, :cast => Integer, :description => "HTTP server TCP port" + option :server, :short => :s, :default => 'mongrel', :description => "Rack server handler like thin, mongrel, webrick, fastcgi etc." + option :limit_memory, :default => 128*1024**2, :cast => Integer, :description => "Image cache heap memory size limit in bytes" + option :limit_map, :default => 256*1024**2, :cast => Integer, :description => "Image cache memory mapped file size limit in bytes - used when heap memory limit is used up" + option :limit_disk, :default => 0, :cast => Integer, :description => "Image cache temporary file size limit in bytes - used when memory mapped file limit is used up" +end.parse! + require 'sinatra/base' require 'haml' require 'RMagick' $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib')) require 'httpthumbnailer/thumbnailer' require 'httpthumbnailer/thumbnail_specs' sinatra = Sinatra.new -sinatra.set :port, 3100 -sinatra.set :bind, 'localhost' +sinatra.set :port, options.port +sinatra.set :bind, options.bind sinatra.set :environment, 'production' -sinatra.set :server, ['mongrel'] +sinatra.set :server, options.server sinatra.set :lock, true sinatra.set :boundary, "thumnail image data" sinatra.set :logging, true sinatra.set :debug, true -sinatra.set :limit_memory, 128*10**6 # B (keep in mem) -sinatra.set :limit_map, 256*10**6 # B (if not fit in mem, map to disk) -sinatra.set :limit_disk, 0 # B (if not fit in map use standard IO) +sinatra.set :limit_memory, options.limit_memory +sinatra.set :limit_map, options.limit_map +sinatra.set :limit_disk, options.limit_disk sinatra.before do logger.level = Logger::DEBUG if settings.debug == true if $thumbnailer.nil? $thumbnailer = Thumbnailer.new(:logger => logger, :limit_memory => settings.limit_memory, :limit_map => settings.limit_map, :limit_disk => settings.limit_disk) @@ -114,12 +125,7 @@ sinatra.error do plain_exception(env['sinatra.error']) end -begin - sinatra.run! -rescue Errno::EACCES, Errno::EADDRNOTAVAIL, SocketError => e - puts "Error: failed to bind HTTP server socket (#{options[:bind]}): #{e}" - exit 5 -end +sinatra.run!