/
mongofe
executable file
·54 lines (44 loc) · 1.38 KB
/
mongofe
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#!/usr/bin/env ruby
$LOAD_PATH.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
require "hashie/mash"
require 'cgi'
require "yaml"
require 'sinatra/base'
require 'sinatra/contrib'
require 'mongo'
require 'mongo_fe'
require 'vegas'
require "uri"
require "mongo_fe/application_controller"
require "mongo_fe/controllers/databases_controller"
require "mongo_fe/controllers/collections_controller"
require "mongo_fe/helpers/helpers"
begin
config = Hashie::Mash.new (YAML.load(File.new(File.expand_path('~/.mongo_fe')))) || 'mongodb://localhost:27017'
MongoFe::MongoDB.uri = config.uri
rescue
$stderr.puts "You must create a file in your home directory called .mongo_fe; error: #{$!.message}"
exit 1
end
app = Rack::Builder.new do
# Dir.glob('../lib/{mongo_fe,mongo_fe/helpers,mongo_fe/controllers}/*.rb').each { |file| require file }
begin
use MongoFe::ApplicationController
use MongoFe::DatabasesController
use MongoFe::CollectionsController
run Sinatra::Base
rescue => e
$stderr.puts "Cannot load the app; error: #{$!.message}"
exit 1
end
end
Vegas::Runner.new( app, 'mongofe', {
:before_run => lambda { |v|
path = (ENV['MONGO_FE_CONFIG'] || v.args.first)
load path.to_s.strip if path
}
}) do |runner, opts, app|
opts.on('-C uri', "--connect uri", "set the MongodDB connection string") { |uri|
MongoFe::MongoDB.uri = uri
}
end