mongo_browser 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -2,3 +2,10 @@
2
2
  results.html
3
3
  pkg
4
4
  html
5
+ log/*.log
6
+ tmp
7
+ reports
8
+
9
+ .idea
10
+ *.iml
11
+ *.gem
data/.simplecov ADDED
@@ -0,0 +1,5 @@
1
+ SimpleCov.start do
2
+ add_filter "spec"
3
+ end
4
+
5
+ SimpleCov.coverage_dir("reports/coverage")
data/README.md CHANGED
@@ -1,26 +1,46 @@
1
1
  # MongoBrowser
2
2
 
3
3
  [![Build status](https://secure.travis-ci.org/lucassus/mongo_browser.png)](http://travis-ci.org/lucassus/mongo_browser)
4
+ [![Dependency Status](https://gemnasium.com/lucassus/mongo_browser.png)](http://gemnasium.com/lucassus/mongo_browser)
4
5
 
5
- TODO: Write a gem description
6
+ Simple but powerful tool for managing mongodb databases
6
7
 
7
- ## Installation
8
+ Install the gem:
8
9
 
9
- Add this line to your application's Gemfile:
10
+ $ gem install mongo_browser
10
11
 
11
- gem 'mongo_browser'
12
+ ## Usage
12
13
 
13
- And then execute:
14
+ Run the application
14
15
 
15
- $ bundle
16
+ $ mongo_browser
16
17
 
17
- Or install it yourself as:
18
+ Run the application as a daemon
18
19
 
19
- $ gem install mongo_browser
20
+ $ mongo_browser --demonize
20
21
 
21
- ## Usage
22
+ Application will be available by default at http://localhost:4567
23
+ In order to run it on custom port number pass the `--port` option with selected port.
24
+
25
+ Other options are:
26
+
27
+ $ mongo_browser --help
28
+ [17/11 16:10:06] Usage: mongo_browser [options]
29
+
30
+ v0.1.0
22
31
 
23
- TODO: Write usage instructions here
32
+ Options:
33
+ --version Show help/version info
34
+ --port PORT MongoBrowser port
35
+ (Default: 4567)
36
+ --mongodb-host HOST Mongodb database host
37
+ (Default: localhost)
38
+ --mongodb-port PORT Mongodb database port
39
+ (Default: 27017)
40
+ --demonize Run the app in the background
41
+ --log-level LEVEL Set the logging level
42
+ (debug|info|warn|error|fatal)
43
+ (Default: info)
24
44
 
25
45
  ## Contributing
26
46
 
@@ -5,18 +5,31 @@
5
5
  */
6
6
  body {
7
7
  position: relative;
8
- padding-top: 90px;
8
+ padding-top: 40px;
9
9
  background-color: #fff;
10
10
  background-repeat: repeat-x;
11
11
  background-position: 0 40px;
12
12
  }
13
13
 
14
14
  table.table {
15
- tr.document {
16
- pre {
15
+ tr {
16
+ &.document pre {
17
17
  background: none;
18
18
  border: 0px;
19
19
  display: inline;
20
20
  }
21
+
22
+ th.actions {
23
+ min-width: 90px;
24
+ }
25
+ }
26
+ }
27
+
28
+ ul.nav.breadcrumbs {
29
+ a {
30
+ background-image: url("breadcrumb-separator.png");
31
+ background-repeat: no-repeat;
32
+ background-position: left center;
33
+ background-color: transparent;
21
34
  }
22
35
  }
@@ -1,5 +1,5 @@
1
1
  <div class="page-header">
2
- <h2>Collection <%= params[:collection_name] %></h2>
2
+ <h2><%= params[:collection_name] %> documents</h2>
3
3
  </div>
4
4
 
5
5
  <ul class="nav nav-tabs">
@@ -18,7 +18,7 @@
18
18
  <tr>
19
19
  <th>Id</th>
20
20
  <th>Data</th>
21
- <th>&nbsp;</th>
21
+ <th class="actions">&nbsp;</th>
22
22
  </tr>
23
23
  </thead>
24
24
  <tbody>
@@ -1,5 +1,5 @@
1
1
  <div class="page-header">
2
- <h2>Database <%= params[:db_name] %></h2>
2
+ <h2><%= params[:db_name] %> collections</h2>
3
3
  </div>
4
4
 
5
5
  <ul class="nav nav-tabs">
@@ -18,7 +18,7 @@
18
18
  <tr>
19
19
  <th>Name</th>
20
20
  <th>Size</th>
21
- <th>&nbsp;</th>
21
+ <th class="actions">&nbsp;</th>
22
22
  </tr>
23
23
  </thead>
24
24
  <tbody>
data/app/views/index.erb CHANGED
@@ -1,5 +1,5 @@
1
1
  <div class="page-header">
2
- <h2>Available databases</h2>
2
+ <h2>localhost databases</h2>
3
3
  </div>
4
4
 
5
5
  <%= erb :"shared/_filter", {}, { filter_for: "databases", placeholder: "Database name" } %>
@@ -9,7 +9,7 @@
9
9
  <tr>
10
10
  <th>Name</th>
11
11
  <th>Size</th>
12
- <th>&nbsp;</th>
12
+ <th class="actions">&nbsp;</th>
13
13
  </tr>
14
14
  </thead>
15
15
  <tbody>
@@ -1,21 +1,33 @@
1
- <div class="navbar navbar navbar-fixed-top">
2
- <div class="navbar-inner">
3
- <div class="container">
4
- <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
5
- <span class="icon-bar"></span>
6
- <span class="icon-bar"></span>
7
- <span class="icon-bar"></span>
8
- </a>
9
- <a class="brand" href="/">Mongo Browser</a>
10
- <div class="nav-collapse collapse">
11
- <ul class="nav">
12
- <li><a href="/server_info">Server Info</a></li>
13
- </ul>
1
+ <div class="navbar-inner">
2
+ <div class="container">
3
+ <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
4
+ <span class="icon-bar"></span>
5
+ <span class="icon-bar"></span>
6
+ <span class="icon-bar"></span>
7
+ </a>
8
+ <a class="brand" href="/">MongoBrowser</a>
9
+ <div class="nav-collapse collapse">
10
+ <!--<ul class="nav">-->
11
+ <!--<li class="dropdown-toggle">-->
12
+ <!--<a class="dropdown">Test</a>-->
13
+ <!--</li>-->
14
+ <!--</ul>-->
14
15
 
15
- <ul class="nav pull-right">
16
- <li><a>v. <%= MongoBrowser::VERSION %></a></li>
16
+ <% if params[:db_name] %>
17
+ <ul class="nav breadcrumbs">
18
+ <% unless params[:collection_name] %>
19
+ <li><a href="#"><%= params[:db_name] %></a></li>
20
+ <% else %>
21
+ <li><a href="/databases/<%= params[:db_name] %>"><%= params[:db_name] %></a></li>
22
+ <li><a href="#"><%= params[:collection_name] %></a></li>
23
+ <% end %>
17
24
  </ul>
18
- </div>
25
+ <% end %>
26
+
27
+ <ul class="nav pull-right">
28
+ <li><a href="/server_info">Server Info</a></li>
29
+ <li><a>v. <%= MongoBrowser::VERSION %></a></li>
30
+ </ul>
19
31
  </div>
20
32
  </div>
21
33
  </div>
data/app/views/layout.erb CHANGED
@@ -5,12 +5,12 @@
5
5
  <link href="/assets/application.css" rel="stylesheet" media="screen">
6
6
  </head>
7
7
  <body>
8
- <%= erb :"layout/_navbar" %>
8
+ <div class="navbar navbar navbar-fixed-top">
9
+ <%= erb :"layout/_navbar" %>
10
+ </div>
9
11
 
10
- <div class="container">
12
+ <div class="container-fluid">
11
13
  <%= erb :"layout/_flash_messages" %>
12
- <%= erb :"layout/_breadcrumb" %>
13
-
14
14
  <%= yield %>
15
15
  </div>
16
16
 
@@ -1,5 +1,5 @@
1
1
  <div class="page-header">
2
- <h2>Server info</h2>
2
+ <h2>server info</h2>
3
3
  </div>
4
4
 
5
5
  <table class="table table-striped table-hover">
@@ -20,8 +20,8 @@ module MongoBrowser
20
20
  end
21
21
 
22
22
  # Collections list
23
- get "/databases/:db_name" do
24
- database = connection.db(params[:db_name])
23
+ get "/databases/:db_name" do |db_name|
24
+ database = connection.db(db_name)
25
25
  @collections = database.collections
26
26
  @stats = database.stats
27
27
 
@@ -29,17 +29,17 @@ module MongoBrowser
29
29
  end
30
30
 
31
31
  # Delete a database
32
- delete "/databases/:db_name" do
33
- connection.drop_database(params[:db_name])
32
+ delete "/databases/:db_name" do |db_name|
33
+ connection.drop_database(db_name)
34
34
 
35
- flash[:info] = "Database #{params[:db_name]} has been deleted."
35
+ flash[:info] = "Database #{db_name} has been deleted."
36
36
  redirect "/"
37
37
  end
38
38
 
39
39
  # Documents list
40
- get "/databases/:db_name/collections/:collection_name" do
41
- database = connection.db(params[:db_name])
42
- collection = database.collection(params[:collection_name])
40
+ get "/databases/:db_name/collections/:collection_name" do |db_name, collection_name|
41
+ database = connection.db(db_name)
42
+ collection = database.collection(collection_name)
43
43
 
44
44
  @stats = collection.stats
45
45
  @documents, @pagination = paginate_documents_for(collection, params[:page])
@@ -48,29 +48,29 @@ module MongoBrowser
48
48
  end
49
49
 
50
50
  # Delete a collection
51
- delete "/databases/:db_name/collections/:collection_name" do
51
+ delete "/databases/:db_name/collections/:collection_name" do |db_name, collection_name|
52
52
  begin
53
- database = connection.db(params[:db_name])
54
- database.drop_collection(params[:collection_name])
53
+ database = connection.db(db_name)
54
+ database.drop_collection(collection_name)
55
55
 
56
- flash[:info] = "Collection #{params[:collection_name]} has been deleted."
56
+ flash[:info] = "Collection #{collection_name} has been deleted."
57
57
  rescue Mongo::OperationFailure => e
58
58
  flash[:error] = e.message
59
59
  end
60
60
 
61
- redirect "/databases/#{params[:db_name]}"
61
+ redirect "/databases/#{db_name}"
62
62
  end
63
63
 
64
64
  # Delete a document
65
- delete "/databases/:db_name/collections/:collection_name/:id" do
66
- database = connection.db(params[:db_name])
67
- collection = database.collection(params[:collection_name])
65
+ delete "/databases/:db_name/collections/:collection_name/:id" do |db_name, collection_name, id|
66
+ database = connection.db(db_name)
67
+ collection = database.collection(collection_name)
68
68
 
69
- id = BSON::ObjectId(params[:id])
69
+ id = BSON::ObjectId(id)
70
70
  collection.remove(_id: id)
71
71
 
72
- flash[:info] = "Document #{params[:id]} has been deleted."
73
- redirect "/databases/#{params[:db_name]}/collections/#{params[:collection_name]}"
72
+ flash[:info] = "Document #{id} has been deleted."
73
+ redirect "/databases/#{db_name}/collections/#{collection_name}"
74
74
  end
75
75
 
76
76
  # Server info
@@ -1,3 +1,3 @@
1
1
  module MongoBrowser
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
data/log/.gitkeep ADDED
File without changes
@@ -17,7 +17,7 @@ Gem::Specification.new do |gem|
17
17
 
18
18
  gem.add_development_dependency("rdoc")
19
19
  gem.add_development_dependency("aruba")
20
- gem.add_development_dependency("rake", "~> 0.9.2")
20
+ gem.add_development_dependency("rake", "~> 10.0.1")
21
21
 
22
22
  gem.add_dependency("mongo", "~> 1.7.0")
23
23
  gem.add_dependency("bson_ext", "~> 1.7.0")
@@ -8,14 +8,16 @@ describe "Collections list", type: :request do
8
8
  end
9
9
 
10
10
  it "displays the breadcrumb" do
11
- within ".breadcrumb" do
11
+ within ".breadcrumbs" do
12
12
  within "li:nth-child(1)" do
13
- expect(page).to have_link("Databases")
13
+ expect(page).to have_link("first_database", href: "#")
14
14
  end
15
+ end
16
+ end
15
17
 
16
- within "li:nth-child(2)" do
17
- expect(page).to have_content("db: first_database")
18
- end
18
+ it "has a valid title" do
19
+ within "h2" do
20
+ expect(page).to have_content("first_database collections")
19
21
  end
20
22
  end
21
23
 
@@ -7,8 +7,13 @@ describe "Databases list", type: :request do
7
7
  expect(page).not_to have_css(".breadcrumb")
8
8
  end
9
9
 
10
+ it "has a valid title" do
11
+ within "h2" do
12
+ expect(page).to have_content("localhost databases")
13
+ end
14
+ end
15
+
10
16
  it "displays list with available databases" do
11
- expect(page).to have_content("Available databases")
12
17
 
13
18
  within "table" do
14
19
  expect(page).to have_link("first_database")
@@ -1,7 +1,7 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe "Documents list", type: :request do
4
- let(:connection) { MongoTestServer.connection }
4
+ let(:connection) { Fixtures.instance.connection }
5
5
 
6
6
  before do
7
7
  visit "/"
@@ -12,18 +12,20 @@ describe "Documents list", type: :request do
12
12
 
13
13
  shared_examples "breadcrumbs for documents list" do
14
14
  it "displays the breadcrumb" do
15
- within ".breadcrumb" do
15
+ within ".breadcrumbs" do
16
16
  within "li:nth-child(1)" do
17
- expect(page).to have_link("Databases")
17
+ expect(page).to have_link("first_database")
18
18
  end
19
19
 
20
20
  within "li:nth-child(2)" do
21
- expect(page).to have_link("db: first_database")
21
+ expect(page).to have_link(current_collection_name, href: "#")
22
22
  end
23
+ end
24
+ end
23
25
 
24
- within "li:nth-child(3)" do
25
- expect(page).to have_content("collection: #{current_collection_name}")
26
- end
26
+ it "has a valid title" do
27
+ within "h2" do
28
+ expect(page).to have_content("#{current_collection_name} documents")
27
29
  end
28
30
  end
29
31
  end
@@ -7,6 +7,12 @@ describe "Server info", type: :request do
7
7
  within(".navbar") { click_link "Server Info" }
8
8
  end
9
9
 
10
+ it "has a valid title" do
11
+ within "h2" do
12
+ expect(page).to have_content("server info")
13
+ end
14
+ end
15
+
10
16
  it "displays information about the server" do
11
17
  within "table" do
12
18
  %w(version gitVersion sysInfo versionArray bits debug maxBsonObjectSize ok).each do |field|
@@ -0,0 +1,9 @@
1
+ require "spec_helper"
2
+
3
+ describe MongoBrowser do
4
+
5
+ it "defines a default host" do
6
+ expect(MongoBrowser.mongodb_host).to eq("localhost")
7
+ end
8
+
9
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,10 +1,4 @@
1
- $:.unshift(File.dirname(__FILE__))
2
- $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
3
-
4
1
  require "simplecov"
5
- SimpleCov.start do
6
- add_group "Application", "lib"
7
- end
8
2
 
9
3
  require "mongo_browser"
10
4
 
@@ -14,16 +8,6 @@ require "capybara"
14
8
  require "capybara/rspec"
15
9
  require "socket"
16
10
 
17
- def find_available_port
18
- server = TCPServer.new("127.0.0.1", 0)
19
- server.addr[1]
20
- ensure
21
- server.close if server
22
- end
23
-
24
- MongoBrowser.mongodb_host = "localhost"
25
- MongoBrowser.mongodb_port = find_available_port
26
-
27
11
  require "capybara/webkit"
28
12
  Capybara.javascript_driver = :webkit
29
13
 
@@ -34,23 +18,31 @@ Capybara.app = MongoBrowser::Application
34
18
  # from spec/support/ and its subdirectories.
35
19
  Dir[File.expand_path("spec/support/**/*.rb")].each { |f| require f }
36
20
 
21
+ test_server = Mongod.instance
22
+ fixtures = Fixtures.instance
23
+
37
24
  RSpec.configure do |config|
38
- config.include Integration
25
+ config.include FeatureExampleGroup, type: :request
26
+
27
+ # Run test mongod instance and load database fixtures
28
+ config.before type: :request do
29
+ test_server.start! do |port|
30
+ MongoBrowser.mongodb_host = "localhost"
31
+ MongoBrowser.mongodb_port = port
32
+ end
39
33
 
40
- config.before do
41
- MongoTestServer.ensure_test_server_is_running
42
- MongoTestServer.load_fixtures
34
+ fixtures.load!
43
35
  end
44
36
 
45
- config.after do
46
- # Take a screenshot when the scenario has failed
47
- if example.metadata[:js] and example.exception
37
+ # Take a screenshot and html dump when the scenario has failed
38
+ config.after type: :request do
39
+ if example.exception
48
40
  file_name = example.full_description.downcase.gsub(/\s/, "-")
49
- page.driver.render("/tmp/#{file_name}.png", full: true)
41
+ capture_page(file_name)
50
42
  end
51
43
  end
52
44
  end
53
45
 
54
46
  at_exit do
55
- MongoTestServer.clean_up
47
+ test_server.shutdown!
56
48
  end
@@ -1,4 +1,4 @@
1
- module Integration
1
+ module FeatureExampleGroup
2
2
 
3
3
  def fill_in_filter(value)
4
4
  page.execute_script <<-JS
@@ -23,4 +23,26 @@ module Integration
23
23
  expect(page).to_not have_css("table.databases")
24
24
  expect(page).to have_content("Nothing has been found.")
25
25
  end
26
+
27
+ # Take a screenshot and html dump for the page
28
+ def capture_page(file_name = Time.now.to_i.to_s)
29
+ reports_path = File.expand_path("reports/capybara")
30
+ FileUtils.mkdir_p(reports_path)
31
+
32
+ file_path = File.join(reports_path, file_name)
33
+
34
+ captured_files = []
35
+
36
+ html_file = "#{file_path}.html"
37
+ File.open(html_file, "w") { |f| f.write(page.body) }
38
+ captured_files << html_file
39
+
40
+ if example.metadata[:js]
41
+ image_file = "#{file_path}.png"
42
+ page.driver.render(image_file, full: true)
43
+ captured_files << image_file
44
+ end
45
+
46
+ captured_files
47
+ end
26
48
  end
File without changes
@@ -0,0 +1,34 @@
1
+ class Fixtures
2
+ include Singleton
3
+
4
+ # Load all fixtures from json file
5
+ def load!
6
+ cleanup!
7
+
8
+ data = JSON.parse(File.open(File.expand_path("spec/support/fixtures/databases.json"), "r").read)
9
+ data.each do |database_data|
10
+ database = connection.db(database_data["name"])
11
+
12
+ (database_data["collections"] || []).each do |collection_data|
13
+ collection = database.create_collection(collection_data["name"])
14
+
15
+ (collection_data["documents"] || []).each do |document_data|
16
+ collection.insert(document_data)
17
+ end
18
+ end
19
+ end
20
+ end
21
+
22
+ # Delete all databases
23
+ def cleanup!
24
+ connection.database_names.each do |db_name|
25
+ connection.drop_database(db_name)
26
+ end
27
+ end
28
+
29
+ def connection
30
+ @connection ||= begin
31
+ Mongo::Connection.new(MongoBrowser.mongodb_host, MongoBrowser.mongodb_port)
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,75 @@
1
+ class Mongod
2
+ include Singleton
3
+
4
+ MONGODB_DBPATH = "/tmp/mongo_browser/db"
5
+
6
+ attr_reader :port
7
+ attr_reader :pid
8
+
9
+ def initialize
10
+ @port = find_available_port
11
+ end
12
+
13
+ def start!
14
+ return if running?
15
+
16
+ FileUtils.mkdir_p(MONGODB_DBPATH)
17
+
18
+ @pid = Mongod.start(port)
19
+ wait_until_responsive
20
+
21
+ yield port if block_given?
22
+ end
23
+
24
+ def shutdown!
25
+ return unless running?
26
+
27
+ Process.kill('HUP', pid)
28
+ FileUtils.rm_rf(MONGODB_DBPATH)
29
+
30
+ @pid = nil
31
+ end
32
+
33
+ # Returns true is mongodb server is ready to use
34
+ def responsive?
35
+ Mongo::Connection.new(MongoBrowser.mongodb_host, port)
36
+ true
37
+ rescue Mongo::ConnectionFailure
38
+ false
39
+ end
40
+
41
+ def running?
42
+ not pid.nil?
43
+ end
44
+
45
+ private
46
+
47
+ def find_available_port
48
+ server = TCPServer.new("127.0.0.1", 0)
49
+ server.addr[1]
50
+ ensure
51
+ server.close if server
52
+ end
53
+
54
+ # Starts a core MongoDB daemon on the given port.
55
+ def self.start(port)
56
+ command = "mongod --port #{port} --dbpath #{MONGODB_DBPATH} --nojournal"
57
+ log_file = File.open(File.expand_path("log/test_mongod.log"), "w")
58
+
59
+ Process.spawn(command, out: log_file)
60
+ end
61
+
62
+ # Uses exponential back-off technique for waiting for the mongodb server
63
+ def wait_until_responsive
64
+ wait_time = 0.01
65
+ start_time = Time.now
66
+ timeout = 10
67
+
68
+ until responsive?
69
+ raise "Could not start mongd" if Time.now - start_time >= timeout
70
+
71
+ sleep wait_time
72
+ wait_time *= 2
73
+ end
74
+ end
75
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongo_browser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-17 00:00:00.000000000 Z
12
+ date: 2012-11-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rdoc
@@ -50,7 +50,7 @@ dependencies:
50
50
  requirements:
51
51
  - - ~>
52
52
  - !ruby/object:Gem::Version
53
- version: 0.9.2
53
+ version: 10.0.1
54
54
  type: :development
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
@@ -58,7 +58,7 @@ dependencies:
58
58
  requirements:
59
59
  - - ~>
60
60
  - !ruby/object:Gem::Version
61
- version: 0.9.2
61
+ version: 10.0.1
62
62
  - !ruby/object:Gem::Dependency
63
63
  name: mongo
64
64
  requirement: !ruby/object:Gem::Requirement
@@ -229,14 +229,15 @@ extra_rdoc_files: []
229
229
  files:
230
230
  - .gitignore
231
231
  - .rspec
232
+ - .simplecov
232
233
  - .travis.yml
233
234
  - Gemfile
234
235
  - LICENSE
235
236
  - README.md
236
- - README.rdoc
237
237
  - Rakefile
238
238
  - app/assets/images/bootstrap/glyphicons-halflings-white.png
239
239
  - app/assets/images/bootstrap/glyphicons-halflings.png
240
+ - app/assets/images/breadcrumb-separator.png
240
241
  - app/assets/javascripts/app/table_filter.js.coffee
241
242
  - app/assets/javascripts/application.js.coffee
242
243
  - app/assets/javascripts/vendor/bootbox.js
@@ -249,7 +250,6 @@ files:
249
250
  - app/views/databases/show.erb
250
251
  - app/views/index.erb
251
252
  - app/views/layout.erb
252
- - app/views/layout/_breadcrumb.erb
253
253
  - app/views/layout/_flash_messages.erb
254
254
  - app/views/layout/_navbar.erb
255
255
  - app/views/server_info.erb
@@ -263,16 +263,19 @@ files:
263
263
  - lib/mongo_browser/application.rb
264
264
  - lib/mongo_browser/middleware/sprockets_sinatra.rb
265
265
  - lib/mongo_browser/version.rb
266
+ - log/.gitkeep
266
267
  - mongo_browser.gemspec
267
268
  - spec/features/collections_list_spec.rb
268
269
  - spec/features/databases_list_spec.rb
269
270
  - spec/features/documents_list_spec.rb
270
271
  - spec/features/server_info_spec.rb
271
- - spec/fixtures/databases.json
272
+ - spec/lib/mongo_browser_spec.rb
272
273
  - spec/spec_helper.rb
273
- - spec/support/have_flash_message_matcher.rb
274
- - spec/support/integration.rb
275
- - spec/support/mongo_test_server.rb
274
+ - spec/support/feature_example_group.rb
275
+ - spec/support/fixtures.rb
276
+ - spec/support/fixtures/databases.json
277
+ - spec/support/matchers/have_flash_message.rb
278
+ - spec/support/mongod.rb
276
279
  homepage: https://github.com/lucassus/mongo_browser
277
280
  licenses: []
278
281
  post_install_message:
@@ -305,9 +308,11 @@ test_files:
305
308
  - spec/features/databases_list_spec.rb
306
309
  - spec/features/documents_list_spec.rb
307
310
  - spec/features/server_info_spec.rb
308
- - spec/fixtures/databases.json
311
+ - spec/lib/mongo_browser_spec.rb
309
312
  - spec/spec_helper.rb
310
- - spec/support/have_flash_message_matcher.rb
311
- - spec/support/integration.rb
312
- - spec/support/mongo_test_server.rb
313
+ - spec/support/feature_example_group.rb
314
+ - spec/support/fixtures.rb
315
+ - spec/support/fixtures/databases.json
316
+ - spec/support/matchers/have_flash_message.rb
317
+ - spec/support/mongod.rb
313
318
  has_rdoc:
data/README.rdoc DELETED
@@ -1,19 +0,0 @@
1
- = mongo_browser - DESCRIBE YOUR GEM
2
-
3
- Author:: YOUR NAME (YOUR EMAIL)
4
- Copyright:: Copyright (c) 2012 YOUR NAME
5
-
6
-
7
- DESCRIBE YOUR GEM HERE
8
-
9
- == Links
10
-
11
- * {Source on Github}[LINK TO GITHUB]
12
- * RDoc[LINK TO RDOC.INFO]
13
-
14
- == Install
15
-
16
- == Examples
17
-
18
- == Contributing
19
-
@@ -1,13 +0,0 @@
1
- <% if params[:db_name] %>
2
- <ul class="breadcrumb">
3
- <li><a href="/">Databases</a><span class="divider">/</span></li>
4
-
5
- <% unless params[:collection_name] %>
6
- <li>db: <%= params[:db_name] %></li>
7
- <% else %>
8
- <li><a href="/databases/<%= params[:db_name] %>">db: <%= params[:db_name] %></a>
9
- <span class="divider">/</span></li>
10
- <li>collection: <%= params[:collection_name] %></li>
11
- <% end %>
12
- </ul>
13
- <% end %>
@@ -1,50 +0,0 @@
1
- module MongoTestServer
2
- extend self
3
-
4
- MONGODB_DBPATH = "/tmp/mongo_browser/db"
5
-
6
- def ensure_test_server_is_running
7
- if `lsof -i :#{MongoBrowser.mongodb_port}`.size == 0
8
- clean_up
9
-
10
- FileUtils.mkdir_p(MONGODB_DBPATH)
11
- `mongod --port #{MongoBrowser.mongodb_port} --dbpath #{MONGODB_DBPATH} --fork --logpath #{MONGODB_DBPATH}/../db.log`
12
- end
13
- end
14
-
15
- def load_fixtures
16
- # Delete all databases
17
- connection.database_names.each do |db_name|
18
- connection.drop_database(db_name)
19
- end
20
-
21
- # Load fixtures
22
- data = JSON.parse(File.open(File.expand_path("spec/fixtures/databases.json"), "r").read)
23
- data.each do |database_data|
24
- database = connection.db(database_data["name"])
25
-
26
- (database_data["collections"] || []).each do |collection_data|
27
- collection = database.create_collection(collection_data["name"])
28
-
29
- (collection_data["documents"] || []).each do |document_data|
30
- collection.insert(document_data)
31
- end
32
- end
33
- end
34
- end
35
-
36
- def connection
37
- @connection ||= Mongo::Connection.new(MongoBrowser.mongodb_host, MongoBrowser.mongodb_port)
38
- end
39
-
40
- def clean_up
41
- out = `ps aux | grep "mongod"`
42
- out.lines.each do |line|
43
- if line.include?("mongod") and line.include?("--dbpath #{MONGODB_DBPATH}")
44
- pid = line.split[1]
45
- `kill -9 #{pid}`
46
- end
47
- end
48
- FileUtils.rm_rf("#{MONGODB_DBPATH}/..")
49
- end
50
- end