lib/mongo_browser/cli.rb
require "mongo_browser"
require "thor"
require "thin"
module MongoBrowser
RACK_CONFIG = File.join(File.dirname(__FILE__), "../..", "config.ru")
class CLI < Thor
desc :start, "Starts the application"
option :port, aliases: :p, default: "5678",
desc: "Specify application port"
option :environment, aliases: :e, default: "production",
desc: "Specify application environment"
option :"mongodb-port", default: MongoBrowser::DEFAULT_MONGODB_PORT,
desc: "Specify mongodb port"
option :"mongodb-host", default: MongoBrowser::DEFAULT_MONGODB_HOST,
desc: "Specify mongodb host"
def start
setup_mongodb_connection!(options)
run_thin(options)
end
private
def setup_mongodb_connection!(options)
port = options[:"mongodb-port"].to_i
MongoBrowser.mongodb_port = port
puts "MongoDB port: #{port}"
host = options[:"mongodb-host"]
MongoBrowser.mongodb_host = host
puts "MongoDB host: #{host}"
end
def run_thin(options)
argv = ["start"]
argv << ["-R", RACK_CONFIG]
argv << ["-p", options[:port]]
argv << ["-e", options[:environment]]
puts "Application environment: #{options[:environment]}"
puts "Application url: http://localhost:#{options[:port]}"
Thin::Runner.new(argv.flatten).run!
end
end
end