mongodb_logger 0.2.3 → 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.travis.yml +3 -3
- data/CHANGELOG.md +4 -0
- data/README.md +13 -1
- data/Rakefile +22 -3
- data/features/mongodb_logger_web.feature +14 -0
- data/features/step_definitions/mongodb_logger_web_steps.rb +45 -0
- data/lib/mongodb_logger/server/coffee/logs.coffee +75 -19
- data/lib/mongodb_logger/server/public/javascripts/logs.js +1 -1
- data/lib/mongodb_logger/server_config.rb +33 -1
- data/lib/mongodb_logger/version.rb +1 -1
- data/mongodb_logger.gemspec +8 -6
- data/spec/javascripts/MongodbLoggerMainSpec.js +13 -0
- data/spec/javascripts/helpers/SpecHelper.js +3 -0
- data/spec/javascripts/support/jasmine.yml +77 -0
- data/spec/javascripts/support/jasmine_config.rb +23 -0
- data/spec/javascripts/support/jasmine_runner.rb +32 -0
- data/test/config/samples/server_config.yml +3 -0
- data/test/test.sh +5 -3
- metadata +104 -44
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# MongodbLogger [](http://travis-ci.org/le0pard/mongodb_logger)
|
1
|
+
# MongodbLogger [](http://travis-ci.org/le0pard/mongodb_logger) [](https://gemnasium.com/le0pard/mongodb_logger)
|
2
2
|
|
3
3
|
MongodbLogger is a alternative logger for Rails 3, which log all requests of you application into MongoDB database.
|
4
4
|
It:
|
@@ -17,6 +17,11 @@ It:
|
|
17
17
|
1. Add the following line to your ApplicationController:
|
18
18
|
|
19
19
|
include MongodbLogger::Base
|
20
|
+
|
21
|
+
1. For use with Heroku you need to prevent the rails\_log\_stdout plugin from being added by Heroku:
|
22
|
+
|
23
|
+
mkdir vendor/plugins/rails_log_stdout
|
24
|
+
touch vendor/plugins/rails_log_stdout/.gitkeep
|
20
25
|
|
21
26
|
1. Add MongodbLogger settings to database.yml for each environment in which you want to use the MongodbLogger. The MongodbLogger will also
|
22
27
|
look for a separate mongodb\_logger.yml or mongoid.yml (if you are using mongoid) before looking in database.yml.
|
@@ -136,6 +141,13 @@ It:
|
|
136
141
|
|
137
142
|
MONGODBLOGGERCONFIG=examples/server_config.yml unicorn
|
138
143
|
|
144
|
+
## Demo Application with MongodbLogger
|
145
|
+
|
146
|
+
Demo: [http://demo-mongodb-logger.catware.org/](http://demo-mongodb-logger.catware.org/)
|
147
|
+
|
148
|
+
Demo Sources: [https://github.com/le0pard/mongodb_logger_example_heroku](https://github.com/le0pard/mongodb_logger_example_heroku)
|
149
|
+
|
150
|
+
|
139
151
|
## Querying via the Rails console
|
140
152
|
|
141
153
|
And now, for a couple quick examples on getting ahold of this log data...
|
data/Rakefile
CHANGED
@@ -25,7 +25,8 @@ namespace :js do
|
|
25
25
|
|
26
26
|
Dir.foreach(source) do |cf|
|
27
27
|
unless cf == '.' || cf == '..'
|
28
|
-
|
28
|
+
js_compiled = CoffeeScript.compile File.read("#{source}#{cf}")
|
29
|
+
js = Uglifier.compile js_compiled
|
29
30
|
open "#{javascripts}#{cf.gsub('.coffee', '.js')}", 'w' do |f|
|
30
31
|
f.puts js
|
31
32
|
end
|
@@ -49,10 +50,10 @@ task :clean do
|
|
49
50
|
exec "rm -rf tmp"
|
50
51
|
end
|
51
52
|
|
52
|
-
desc 'Test
|
53
|
+
desc 'Test unit.'
|
53
54
|
Rake::TestTask.new(:test) do |test|
|
54
55
|
test.libs << 'lib' << 'test'
|
55
|
-
test.
|
56
|
+
test.test_files = ['test/unit/mongodb_logger_test.rb']
|
56
57
|
test.verbose = true
|
57
58
|
end
|
58
59
|
|
@@ -142,6 +143,24 @@ def define_rails_cucumber_tasks(additional_cucumber_args = '')
|
|
142
143
|
end
|
143
144
|
end
|
144
145
|
|
146
|
+
def define_web_cucumber_tasks(additional_cucumber_args = '')
|
147
|
+
desc "Test web of the gem"
|
148
|
+
task :web do
|
149
|
+
puts "Testing Web"
|
150
|
+
system("cucumber --format #{ENV['CUCUMBER_FORMAT'] || 'progress'} #{additional_cucumber_args} features/mongodb_logger_web.feature")
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
145
154
|
namespace :cucumber do
|
146
155
|
define_rails_cucumber_tasks
|
156
|
+
define_web_cucumber_tasks
|
157
|
+
end
|
158
|
+
|
159
|
+
begin
|
160
|
+
require 'jasmine'
|
161
|
+
load 'jasmine/tasks/jasmine.rake'
|
162
|
+
rescue LoadError
|
163
|
+
task :jasmine do
|
164
|
+
abort "Jasmine is not available. In order to run jasmine, you must: (sudo) gem install jasmine"
|
165
|
+
end
|
147
166
|
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
Feature: Install MongodbLogger Web and test it
|
2
|
+
|
3
|
+
Scenario: Main page
|
4
|
+
Given homepage
|
5
|
+
Then I should see text that no logs in system
|
6
|
+
|
7
|
+
Scenario: Tail logs buttons
|
8
|
+
Given homepage
|
9
|
+
And I should see start tail button
|
10
|
+
When I click on start tail button
|
11
|
+
Then I should see stop tails button
|
12
|
+
And box with time of last log tail
|
13
|
+
When I click on stop tail button
|
14
|
+
Then I should see start tail button
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'active_support/core_ext/string/inflections'
|
2
|
+
require 'mongodb_logger/server'
|
3
|
+
require 'capybara/cucumber'
|
4
|
+
|
5
|
+
include Capybara::DSL
|
6
|
+
|
7
|
+
Before do
|
8
|
+
MongodbLogger::ServerConfig.set_config_for_testing(File.join(PROJECT_ROOT, 'test/config/samples/server_config.yml'))
|
9
|
+
Capybara.app = MongodbLogger::Server
|
10
|
+
end
|
11
|
+
|
12
|
+
After do
|
13
|
+
MongodbLogger::ServerConfig.collection.drop
|
14
|
+
end
|
15
|
+
|
16
|
+
Given /^homepage$/ do
|
17
|
+
visit "/"
|
18
|
+
end
|
19
|
+
|
20
|
+
Then /^I should see text that no logs in system$/ do
|
21
|
+
page.has_selector?('div', :text => 'No logs found, try to filter out the other parameters', :visible => true)
|
22
|
+
end
|
23
|
+
|
24
|
+
Given /^I should see start tail button$/ do
|
25
|
+
page.has_link?('tail_logs_link', :visible => true)
|
26
|
+
page.has_link?('tail_logs_stop_link', :visible => false)
|
27
|
+
end
|
28
|
+
|
29
|
+
When /^I click on start tail button$/ do
|
30
|
+
click_link('tail_logs_link')
|
31
|
+
end
|
32
|
+
|
33
|
+
Then /^I should see stop tails button$/ do
|
34
|
+
page.has_link?('tail_logs_link', :visible => false)
|
35
|
+
page.has_link?('tail_logs_stop_link', :visible => true)
|
36
|
+
end
|
37
|
+
|
38
|
+
Then /^box with time of last log tail$/ do
|
39
|
+
page.has_selector?('span', :id => 'tail_logs_time', :visible => true)
|
40
|
+
end
|
41
|
+
|
42
|
+
When /^I click on stop tail button$/ do
|
43
|
+
click_link('tail_logs_stop_link')
|
44
|
+
end
|
45
|
+
|
@@ -1,7 +1,7 @@
|
|
1
1
|
$ ->
|
2
|
-
|
2
|
+
MongodbLoggerMain.init()
|
3
3
|
|
4
|
-
|
4
|
+
window.MongodbLoggerMain =
|
5
5
|
tail_logs_url: null
|
6
6
|
tail_log_started: false
|
7
7
|
log_info_offset: null
|
@@ -14,22 +14,22 @@ MongodbLoggerJS =
|
|
14
14
|
$('#ajax_loader').hide()
|
15
15
|
|
16
16
|
$(document).on 'click', '#tail_logs_link', (event) =>
|
17
|
-
|
17
|
+
MongodbLoggerMain.tail_logs_url = $(event.target).attr('data-url')
|
18
18
|
$('#tail_logs_block').addClass('started')
|
19
|
-
|
19
|
+
MongodbLoggerMain.tail_logs(null)
|
20
20
|
return false
|
21
21
|
$(document).on 'click', '#tail_logs_stop_link', (event) =>
|
22
|
-
|
22
|
+
MongodbLoggerMain.tail_log_started = false
|
23
23
|
$('#tail_logs_block').removeClass('started')
|
24
24
|
return false
|
25
25
|
|
26
26
|
$(document).on 'click', '.log_info', (event) =>
|
27
27
|
elm_obj = $(event.target)
|
28
|
-
url = elm_obj.
|
29
|
-
url = elm_obj.
|
28
|
+
url = elm_obj.data('url')
|
29
|
+
url = elm_obj.parent('tr').data('url') if !url?
|
30
30
|
if url?
|
31
31
|
elm_obj.parents('table').find('tr').removeClass('current')
|
32
|
-
elm_obj.
|
32
|
+
elm_obj.parent('tr').addClass('current')
|
33
33
|
$('#log_info').load(url)
|
34
34
|
return false
|
35
35
|
# filter tougle
|
@@ -89,12 +89,26 @@ MongodbLoggerJS =
|
|
89
89
|
elm_obj.addClass('active')
|
90
90
|
$('.' + tab).removeClass('hidden')
|
91
91
|
|
92
|
+
# analytic form
|
92
93
|
$(document).on 'submit', '#analyticForm', (event) =>
|
93
94
|
element = $('#analyticForm')
|
94
95
|
url = element.attr('action')
|
95
96
|
data = element.serializeArray()
|
96
97
|
$('#analyticData').load url, data
|
97
98
|
return false
|
99
|
+
|
100
|
+
# keydown log
|
101
|
+
$(document).on 'keydown', '*', (event) =>
|
102
|
+
console.log event.keyCode
|
103
|
+
switch event.keyCode
|
104
|
+
when 37 # left
|
105
|
+
MongodbLoggerMain.move_by_logs('begin')
|
106
|
+
when 38 # up
|
107
|
+
MongodbLoggerMain.move_by_logs('up')
|
108
|
+
when 39 # right
|
109
|
+
MongodbLoggerMain.move_by_logs('end')
|
110
|
+
when 40 # down
|
111
|
+
MongodbLoggerMain.move_by_logs('down')
|
98
112
|
|
99
113
|
# init pjax
|
100
114
|
this.init_pjax()
|
@@ -107,12 +121,12 @@ MongodbLoggerJS =
|
|
107
121
|
$('body').bind 'pjax:end', () =>
|
108
122
|
$('#ajax_loader').hide()
|
109
123
|
# stop tailing
|
110
|
-
|
124
|
+
MongodbLoggerMain.tail_log_started = false
|
111
125
|
# scroll on top
|
112
126
|
if ($(window).scrollTop() > 100)
|
113
127
|
$('html, body').stop().animate({ scrollTop: 0 }, 'slow')
|
114
128
|
# init pages
|
115
|
-
|
129
|
+
MongodbLoggerMain.init_on_pages()
|
116
130
|
|
117
131
|
init_on_pages: ->
|
118
132
|
# code highlight
|
@@ -127,23 +141,23 @@ MongodbLoggerJS =
|
|
127
141
|
|
128
142
|
# log info window
|
129
143
|
if $("#log_info").length > 0
|
130
|
-
|
144
|
+
MongodbLoggerMain.log_info_offset = $("#log_info").offset()
|
131
145
|
$(window).scroll =>
|
132
|
-
if $(window).scrollTop() >
|
146
|
+
if $(window).scrollTop() > MongodbLoggerMain.log_info_offset.top
|
133
147
|
$("#log_info").stop().animate
|
134
|
-
marginTop: $(window).scrollTop() -
|
148
|
+
marginTop: $(window).scrollTop() - MongodbLoggerMain.log_info_offset.top + MongodbLoggerMain.log_info_padding
|
135
149
|
else
|
136
150
|
$("#log_info").stop().animate
|
137
151
|
marginTop: 0
|
138
152
|
|
139
153
|
tail_logs: (log_last_id) ->
|
140
|
-
url =
|
154
|
+
url = MongodbLoggerMain.tail_logs_url
|
141
155
|
if log_last_id? && log_last_id.length > 0
|
142
|
-
url =
|
156
|
+
url = MongodbLoggerMain.tail_logs_url + "/" + log_last_id
|
143
157
|
else
|
144
|
-
|
158
|
+
MongodbLoggerMain.tail_log_started = true
|
145
159
|
log_last_id = ""
|
146
|
-
if
|
160
|
+
if MongodbLoggerMain.tail_log_started
|
147
161
|
$.ajax
|
148
162
|
url: url
|
149
163
|
dataType: "json"
|
@@ -158,6 +172,48 @@ MongodbLoggerJS =
|
|
158
172
|
$('#logs_list tr:first').after(elements).effect("highlight", {}, 1000)
|
159
173
|
if data.collection_stats && $("#collection_stats").length > 0
|
160
174
|
$("#collection_stats").html(data.collection_stats)
|
161
|
-
if
|
162
|
-
fcallback = ->
|
175
|
+
if MongodbLoggerMain.tail_log_started
|
176
|
+
fcallback = -> MongodbLoggerMain.tail_logs(log_last_id)
|
163
177
|
setTimeout fcallback, 2000
|
178
|
+
|
179
|
+
move_by_logs: (direction) ->
|
180
|
+
if $('#logs_list').length > 0 && $('#logs_list').find('tr.current').length > 0
|
181
|
+
current_element = $('#logs_list').find('tr.current')
|
182
|
+
switch direction
|
183
|
+
when 'begin'
|
184
|
+
element = $('#logs_list tr:first').next("tr")
|
185
|
+
if element.length > 0
|
186
|
+
element.find('td:first').trigger('click')
|
187
|
+
$(window).scrollTop(element.height() + element.offset().top - 100)
|
188
|
+
return false
|
189
|
+
when 'end'
|
190
|
+
element = $('#logs_list tr:last')
|
191
|
+
if element.length > 0
|
192
|
+
element.find('td:first').trigger('click')
|
193
|
+
$(window).scrollTop(element.height() + element.offset().top - 100)
|
194
|
+
return false
|
195
|
+
when 'down'
|
196
|
+
element = current_element.next("tr")
|
197
|
+
if element.length > 0
|
198
|
+
element.find('td:first').trigger('click')
|
199
|
+
if MongodbLoggerMain.is_scrolled_into_view(element)
|
200
|
+
$(window).scrollTop($(window).scrollTop() + element.height())
|
201
|
+
else
|
202
|
+
$(window).scrollTop(element.height() + element.offset().top - 100)
|
203
|
+
return false
|
204
|
+
when 'up'
|
205
|
+
element = current_element.prev("tr")
|
206
|
+
if element.length > 0
|
207
|
+
element.find('td:first').trigger('click')
|
208
|
+
if MongodbLoggerMain.is_scrolled_into_view(element)
|
209
|
+
$(window).scrollTop($(window).scrollTop() - element.height())
|
210
|
+
else
|
211
|
+
$(window).scrollTop(element.height() + element.offset().top - 100)
|
212
|
+
return false
|
213
|
+
|
214
|
+
is_scrolled_into_view: (elem) ->
|
215
|
+
docViewTop = $(window).scrollTop()
|
216
|
+
docViewBottom = docViewTop + $(window).height()
|
217
|
+
elemTop = $(elem).offset().top
|
218
|
+
elemBottom = elemTop + $(elem).height()
|
219
|
+
return ((docViewTop < elemTop) && (docViewBottom > elemBottom))
|
@@ -1 +1 @@
|
|
1
|
-
(
|
1
|
+
$(function(){return MongodbLoggerMain.init()}),window.MongodbLoggerMain={tail_logs_url:null,tail_log_started:!1,log_info_offset:null,log_info_padding:15,init:function(){var a=this;return $(document).ajaxStart(function(){return $("#ajax_loader").show()}),$(document).ajaxStop(function(){return $("#ajax_loader").hide()}),$(document).on("click","#tail_logs_link",function(a){return MongodbLoggerMain.tail_logs_url=$(a.target).attr("data-url"),$("#tail_logs_block").addClass("started"),MongodbLoggerMain.tail_logs(null),!1}),$(document).on("click","#tail_logs_stop_link",function(a){return MongodbLoggerMain.tail_log_started=!1,$("#tail_logs_block").removeClass("started"),!1}),$(document).on("click",".log_info",function(a){var b,c;return b=$(a.target),c=b.data("url"),c==null&&(c=b.parent("tr").data("url")),c!=null&&(b.parents("table").find("tr").removeClass("current"),b.parent("tr").addClass("current"),$("#log_info").load(c)),!1}),$(document).on("click","div.filter-toggle",function(a){return $("div.filter").slideToggle(),$("div.filter-toggle span.arrow-down").toggleClass("rotate")}),$(document).on("click","#add_more_filter",function(a){var b;return b=$(a.target).attr("href"),$.ajax({url:b,success:function(a){var b;return b=$("<li></li>").html(a),$("#more_filter_list").append(b)}}),!1}),$(document).on("change","select.filter_type",function(a){var b,c;return b=$(a.target),c=b.attr("rel")+"/"+b.val(),$.ajax({url:c,dataType:"json",success:function(a){var c,d,e=this;c="",d="",$.each(a.conditions,function(a,b){return c+='<option value="'+b+'">'+b+"</option>"}),b.parents("div.filter_block").find("select.filter_conditions").empty().append(c),a.values.length>0?(d='<select id="filter[more][]_value" name="filter[more][][value]">',$.each(a.values,function(a,b){return d+='<option value="'+b+'">'+b+"</option>"}),d+="</select>"):d='<input type="text" name="filter[more][][value]" value="" placeholder="value">',b.parents("div.filter_block").find("div.filter_values").html(d);if("date"===b.val())return b.parents("div.filter_block").find("div.filter_values input").datepicker({dateFormat:"yy-mm-dd",changeMonth:!0,changeYear:!0,yearRange:"c-50:c+10"})}}),!1}),$(document).on("click",".close_more_filter",function(a){return $(a.target).parents("li").remove(),!1}),$(document).on("click","li.message_tab",function(a){var b,c;b=$(a.target),c=b.attr("data-tab");if(c!=null)return $("li.message_tab").removeClass("active"),$("pre.tab_content").addClass("hidden"),b.addClass("active"),$("."+c).removeClass("hidden")}),$(document).on("submit","#analyticForm",function(a){var b,c,d;return c=$("#analyticForm"),d=c.attr("action"),b=c.serializeArray(),$("#analyticData").load(d,b),!1}),$(document).on("keydown","*",function(a){console.log(a.keyCode);switch(a.keyCode){case 37:return MongodbLoggerMain.move_by_logs("begin");case 38:return MongodbLoggerMain.move_by_logs("up");case 39:return MongodbLoggerMain.move_by_logs("end");case 40:return MongodbLoggerMain.move_by_logs("down")}}),this.init_pjax(),this.init_on_pages()},init_pjax:function(){var a=this;return $("a[data-pjax]").pjax(),$("body").bind("pjax:start",function(){return $("#ajax_loader").show()}),$("body").bind("pjax:end",function(){return $("#ajax_loader").hide(),MongodbLoggerMain.tail_log_started=!1,$(window).scrollTop()>100&&$("html, body").stop().animate({scrollTop:0},"slow"),MongodbLoggerMain.init_on_pages()})},init_on_pages:function(){var a=this;$("pre code").each(function(a,b){return hljs.highlightBlock(b," ")}),$(".datepicker, .filter_values input.date").datepicker({dateFormat:"yy-mm-dd",changeMonth:!0,changeYear:!0,yearRange:"c-50:c+10"});if($("#log_info").length>0)return MongodbLoggerMain.log_info_offset=$("#log_info").offset(),$(window).scroll(function(){return $(window).scrollTop()>MongodbLoggerMain.log_info_offset.top?$("#log_info").stop().animate({marginTop:$(window).scrollTop()-MongodbLoggerMain.log_info_offset.top+MongodbLoggerMain.log_info_padding}):$("#log_info").stop().animate({marginTop:0})})},tail_logs:function(a){var b;b=MongodbLoggerMain.tail_logs_url,a!=null&&a.length>0?b=MongodbLoggerMain.tail_logs_url+"/"+a:(MongodbLoggerMain.tail_log_started=!0,a="");if(MongodbLoggerMain.tail_log_started)return $.ajax({url:b,dataType:"json",success:function(b){var c,d;b.time&&($("#tail_logs_time").text(b.time),b.log_last_id!=null&&(a=b.log_last_id),b.content!=null&&b.content.length>0&&(c=$(b.content),c.addClass("newlog"),$("#logs_list tr:first").after(c).effect("highlight",{},1e3)),b.collection_stats&&$("#collection_stats").length>0&&$("#collection_stats").html(b.collection_stats));if(MongodbLoggerMain.tail_log_started)return d=function(){return MongodbLoggerMain.tail_logs(a)},setTimeout(d,2e3)}})},move_by_logs:function(a){var b,c;if($("#logs_list").length>0&&$("#logs_list").find("tr.current").length>0){b=$("#logs_list").find("tr.current");switch(a){case"begin":c=$("#logs_list tr:first").next("tr");if(c.length>0)return c.find("td:first").trigger("click"),$(window).scrollTop(c.height()+c.offset().top-100),!1;break;case"end":c=$("#logs_list tr:last");if(c.length>0)return c.find("td:first").trigger("click"),$(window).scrollTop(c.height()+c.offset().top-100),!1;break;case"down":c=b.next("tr");if(c.length>0)return c.find("td:first").trigger("click"),MongodbLoggerMain.is_scrolled_into_view(c)?$(window).scrollTop($(window).scrollTop()+c.height()):$(window).scrollTop(c.height()+c.offset().top-100),!1;break;case"up":c=b.prev("tr");if(c.length>0)return c.find("td:first").trigger("click"),MongodbLoggerMain.is_scrolled_into_view(c)?$(window).scrollTop($(window).scrollTop()-c.height()):$(window).scrollTop(c.height()+c.offset().top-100),!1}}},is_scrolled_into_view:function(a){var b,c,d,e;return c=$(window).scrollTop(),b=c+$(window).height(),e=$(a).offset().top,d=e+$(a).height(),c<e&&b>d}}
|
@@ -3,9 +3,14 @@ require 'erb'
|
|
3
3
|
require 'active_support'
|
4
4
|
require 'active_support/core_ext'
|
5
5
|
|
6
|
+
# TODO: Dry this class with logger class
|
6
7
|
module MongodbLogger
|
7
8
|
class ServerConfig
|
9
|
+
|
10
|
+
DEFAULT_COLLECTION_SIZE = 250.megabytes
|
11
|
+
|
8
12
|
class << self
|
13
|
+
|
9
14
|
def set_config(config_path)
|
10
15
|
if File.file?(config_path)
|
11
16
|
config_file = File.new(config_path)
|
@@ -26,13 +31,40 @@ module MongodbLogger
|
|
26
31
|
@authenticated = @db.authenticate(@db_configuration['username'],
|
27
32
|
@db_configuration['password'])
|
28
33
|
end
|
29
|
-
|
34
|
+
|
35
|
+
set_collection
|
36
|
+
end
|
37
|
+
|
38
|
+
def set_config_for_testing(config_path)
|
39
|
+
set_config(config_path)
|
40
|
+
create_collection unless @db.collection_names.include?(@db_configuration["collection"])
|
41
|
+
set_collection
|
42
|
+
end
|
43
|
+
|
44
|
+
def create_collection
|
45
|
+
capsize = DEFAULT_COLLECTION_SIZE
|
46
|
+
capsize = @db_configuration['capsize'].to_i if @db_configuration['capsize']
|
47
|
+
@db.create_collection(@db_configuration["collection"],
|
48
|
+
{:capped => true, :size => capsize})
|
30
49
|
end
|
31
50
|
|
51
|
+
|
52
|
+
def set_collection
|
53
|
+
@collection = @db[@db_configuration["collection"]]
|
54
|
+
end
|
55
|
+
|
32
56
|
def get_config
|
33
57
|
@db_configuration
|
34
58
|
end
|
35
59
|
|
60
|
+
def authenticated?
|
61
|
+
@authenticated
|
62
|
+
end
|
63
|
+
|
64
|
+
def collection_name
|
65
|
+
@db_configuration["collection"]
|
66
|
+
end
|
67
|
+
|
36
68
|
def db
|
37
69
|
@db
|
38
70
|
end
|
data/mongodb_logger.gemspec
CHANGED
@@ -11,17 +11,19 @@ Gem::Specification.new do |gem|
|
|
11
11
|
gem.extra_rdoc_files = [ "LICENSE", "README.md" ]
|
12
12
|
gem.rdoc_options = ["--charset=UTF-8"]
|
13
13
|
|
14
|
-
gem.add_development_dependency "
|
14
|
+
gem.add_development_dependency "jasmine", ">= 1.0.0"
|
15
|
+
gem.add_development_dependency "rspec", ">= 2.7.0"
|
15
16
|
gem.add_development_dependency "shoulda", ">= 2.0.0"
|
16
|
-
gem.add_development_dependency "mocha", "
|
17
|
+
gem.add_development_dependency "mocha", ">= 0.10.0"
|
17
18
|
gem.add_development_dependency "cucumber", "~> 1.1.2"
|
19
|
+
gem.add_development_dependency "capybara", "~> 1.1.2"
|
18
20
|
gem.add_development_dependency "coffee-script", "~> 2.2.0"
|
19
|
-
gem.add_development_dependency "uglifier", "
|
20
|
-
gem.add_development_dependency "therubyracer", "
|
21
|
+
gem.add_development_dependency "uglifier", ">= 1.2.0"
|
22
|
+
gem.add_development_dependency "therubyracer", ">= 0.9.9"
|
21
23
|
|
22
24
|
gem.add_runtime_dependency "rake", "~> 0.9.0"
|
23
|
-
gem.add_runtime_dependency "mongo", "~> 1.
|
24
|
-
gem.add_runtime_dependency "bson_ext", "~> 1.
|
25
|
+
gem.add_runtime_dependency "mongo", "~> 1.5.2"
|
26
|
+
gem.add_runtime_dependency "bson_ext", "~> 1.5.2"
|
25
27
|
gem.add_runtime_dependency "i18n", ">= 0.4.1"
|
26
28
|
gem.add_runtime_dependency "json", "~> 1.6.1"
|
27
29
|
gem.add_runtime_dependency "activesupport", ">= 3.0.0"
|
@@ -0,0 +1,13 @@
|
|
1
|
+
describe("MongodbLoggerMain", function() {
|
2
|
+
|
3
|
+
beforeEach(function() {
|
4
|
+
MongodbLoggerMain.init();
|
5
|
+
});
|
6
|
+
|
7
|
+
describe("log_info_padding", function() {
|
8
|
+
it("should be 15", function() {
|
9
|
+
expect(MongodbLoggerMain.log_info_padding).toEqual(15);
|
10
|
+
});
|
11
|
+
});
|
12
|
+
|
13
|
+
});
|
@@ -0,0 +1,77 @@
|
|
1
|
+
# src_files
|
2
|
+
#
|
3
|
+
# Return an array of filepaths relative to src_dir to include before jasmine specs.
|
4
|
+
# Default: []
|
5
|
+
#
|
6
|
+
# EXAMPLE:
|
7
|
+
#
|
8
|
+
# src_files:
|
9
|
+
# - lib/source1.js
|
10
|
+
# - lib/source2.js
|
11
|
+
# - dist/**/*.js
|
12
|
+
#
|
13
|
+
src_files:
|
14
|
+
- lib/mongodb_logger/server/public/javascripts/vendors/jquery-1.7.1.min.js
|
15
|
+
- lib/mongodb_logger/server/public/javascripts/vendors/jquery-ui-1.8.16.min.js
|
16
|
+
- lib/mongodb_logger/server/public/javascripts/vendors/jquery.pjax.min.js
|
17
|
+
- lib/mongodb_logger/server/public/javascripts/vendors/highlight.pack.js
|
18
|
+
- lib/mongodb_logger/server/public/javascripts/logs.js
|
19
|
+
|
20
|
+
# stylesheets
|
21
|
+
#
|
22
|
+
# Return an array of stylesheet filepaths relative to src_dir to include before jasmine specs.
|
23
|
+
# Default: []
|
24
|
+
#
|
25
|
+
# EXAMPLE:
|
26
|
+
#
|
27
|
+
# stylesheets:
|
28
|
+
# - css/style.css
|
29
|
+
# - stylesheets/*.css
|
30
|
+
#
|
31
|
+
stylesheets:
|
32
|
+
|
33
|
+
# helpers
|
34
|
+
#
|
35
|
+
# Return an array of filepaths relative to spec_dir to include before jasmine specs.
|
36
|
+
# Default: ["helpers/**/*.js"]
|
37
|
+
#
|
38
|
+
# EXAMPLE:
|
39
|
+
#
|
40
|
+
# helpers:
|
41
|
+
# - helpers/**/*.js
|
42
|
+
#
|
43
|
+
helpers:
|
44
|
+
|
45
|
+
# spec_files
|
46
|
+
#
|
47
|
+
# Return an array of filepaths relative to spec_dir to include.
|
48
|
+
# Default: ["**/*[sS]pec.js"]
|
49
|
+
#
|
50
|
+
# EXAMPLE:
|
51
|
+
#
|
52
|
+
# spec_files:
|
53
|
+
# - **/*[sS]pec.js
|
54
|
+
#
|
55
|
+
spec_files:
|
56
|
+
|
57
|
+
# src_dir
|
58
|
+
#
|
59
|
+
# Source directory path. Your src_files must be returned relative to this path. Will use root if left blank.
|
60
|
+
# Default: project root
|
61
|
+
#
|
62
|
+
# EXAMPLE:
|
63
|
+
#
|
64
|
+
# src_dir: public
|
65
|
+
#
|
66
|
+
src_dir:
|
67
|
+
|
68
|
+
# spec_dir
|
69
|
+
#
|
70
|
+
# Spec directory path. Your spec_files must be returned relative to this path.
|
71
|
+
# Default: spec/javascripts
|
72
|
+
#
|
73
|
+
# EXAMPLE:
|
74
|
+
#
|
75
|
+
# spec_dir: spec/javascripts
|
76
|
+
#
|
77
|
+
spec_dir:
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Jasmine
|
2
|
+
class Config
|
3
|
+
|
4
|
+
# Add your overrides or custom config code here
|
5
|
+
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
|
10
|
+
# Note - this is necessary for rspec2, which has removed the backtrace
|
11
|
+
module Jasmine
|
12
|
+
class SpecBuilder
|
13
|
+
def declare_spec(parent, spec)
|
14
|
+
me = self
|
15
|
+
example_name = spec["name"]
|
16
|
+
@spec_ids << spec["id"]
|
17
|
+
backtrace = @example_locations[parent.description + " " + example_name]
|
18
|
+
parent.it example_name, {} do
|
19
|
+
me.report_spec(spec["id"])
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
$:.unshift(ENV['JASMINE_GEM_PATH']) if ENV['JASMINE_GEM_PATH'] # for gem testing purposes
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'jasmine'
|
5
|
+
jasmine_config_overrides = File.expand_path(File.join(File.dirname(__FILE__), 'jasmine_config.rb'))
|
6
|
+
require jasmine_config_overrides if File.exist?(jasmine_config_overrides)
|
7
|
+
if Jasmine::Dependencies.rspec2?
|
8
|
+
require 'rspec'
|
9
|
+
else
|
10
|
+
require 'spec'
|
11
|
+
end
|
12
|
+
|
13
|
+
jasmine_config = Jasmine::Config.new
|
14
|
+
spec_builder = Jasmine::SpecBuilder.new(jasmine_config)
|
15
|
+
|
16
|
+
should_stop = false
|
17
|
+
|
18
|
+
if Jasmine::Dependencies.rspec2?
|
19
|
+
RSpec.configuration.after(:suite) do
|
20
|
+
spec_builder.stop if should_stop
|
21
|
+
end
|
22
|
+
else
|
23
|
+
Spec::Runner.configure do |config|
|
24
|
+
config.after(:suite) do
|
25
|
+
spec_builder.stop if should_stop
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
spec_builder.start
|
31
|
+
should_stop = true
|
32
|
+
spec_builder.declare_suites
|
data/test/test.sh
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongodb_logger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,22 +9,33 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-12-
|
12
|
+
date: 2011-12-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: jasmine
|
16
|
+
requirement: &70120329105120 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 1.0.0
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70120329105120
|
14
25
|
- !ruby/object:Gem::Dependency
|
15
26
|
name: rspec
|
16
|
-
requirement: &
|
27
|
+
requirement: &70120329104620 !ruby/object:Gem::Requirement
|
17
28
|
none: false
|
18
29
|
requirements:
|
19
|
-
- -
|
30
|
+
- - ! '>='
|
20
31
|
- !ruby/object:Gem::Version
|
21
32
|
version: 2.7.0
|
22
33
|
type: :development
|
23
34
|
prerelease: false
|
24
|
-
version_requirements: *
|
35
|
+
version_requirements: *70120329104620
|
25
36
|
- !ruby/object:Gem::Dependency
|
26
37
|
name: shoulda
|
27
|
-
requirement: &
|
38
|
+
requirement: &70120329104160 !ruby/object:Gem::Requirement
|
28
39
|
none: false
|
29
40
|
requirements:
|
30
41
|
- - ! '>='
|
@@ -32,21 +43,21 @@ dependencies:
|
|
32
43
|
version: 2.0.0
|
33
44
|
type: :development
|
34
45
|
prerelease: false
|
35
|
-
version_requirements: *
|
46
|
+
version_requirements: *70120329104160
|
36
47
|
- !ruby/object:Gem::Dependency
|
37
48
|
name: mocha
|
38
|
-
requirement: &
|
49
|
+
requirement: &70120329103700 !ruby/object:Gem::Requirement
|
39
50
|
none: false
|
40
51
|
requirements:
|
41
|
-
- -
|
52
|
+
- - ! '>='
|
42
53
|
- !ruby/object:Gem::Version
|
43
54
|
version: 0.10.0
|
44
55
|
type: :development
|
45
56
|
prerelease: false
|
46
|
-
version_requirements: *
|
57
|
+
version_requirements: *70120329103700
|
47
58
|
- !ruby/object:Gem::Dependency
|
48
59
|
name: cucumber
|
49
|
-
requirement: &
|
60
|
+
requirement: &70120328557240 !ruby/object:Gem::Requirement
|
50
61
|
none: false
|
51
62
|
requirements:
|
52
63
|
- - ~>
|
@@ -54,10 +65,21 @@ dependencies:
|
|
54
65
|
version: 1.1.2
|
55
66
|
type: :development
|
56
67
|
prerelease: false
|
57
|
-
version_requirements: *
|
68
|
+
version_requirements: *70120328557240
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: capybara
|
71
|
+
requirement: &70120328549720 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ~>
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: 1.1.2
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *70120328549720
|
58
80
|
- !ruby/object:Gem::Dependency
|
59
81
|
name: coffee-script
|
60
|
-
requirement: &
|
82
|
+
requirement: &70120329142340 !ruby/object:Gem::Requirement
|
61
83
|
none: false
|
62
84
|
requirements:
|
63
85
|
- - ~>
|
@@ -65,32 +87,32 @@ dependencies:
|
|
65
87
|
version: 2.2.0
|
66
88
|
type: :development
|
67
89
|
prerelease: false
|
68
|
-
version_requirements: *
|
90
|
+
version_requirements: *70120329142340
|
69
91
|
- !ruby/object:Gem::Dependency
|
70
92
|
name: uglifier
|
71
|
-
requirement: &
|
93
|
+
requirement: &70120329141880 !ruby/object:Gem::Requirement
|
72
94
|
none: false
|
73
95
|
requirements:
|
74
|
-
- -
|
96
|
+
- - ! '>='
|
75
97
|
- !ruby/object:Gem::Version
|
76
|
-
version: 1.
|
98
|
+
version: 1.2.0
|
77
99
|
type: :development
|
78
100
|
prerelease: false
|
79
|
-
version_requirements: *
|
101
|
+
version_requirements: *70120329141880
|
80
102
|
- !ruby/object:Gem::Dependency
|
81
103
|
name: therubyracer
|
82
|
-
requirement: &
|
104
|
+
requirement: &70120329141420 !ruby/object:Gem::Requirement
|
83
105
|
none: false
|
84
106
|
requirements:
|
85
|
-
- -
|
107
|
+
- - ! '>='
|
86
108
|
- !ruby/object:Gem::Version
|
87
109
|
version: 0.9.9
|
88
110
|
type: :development
|
89
111
|
prerelease: false
|
90
|
-
version_requirements: *
|
112
|
+
version_requirements: *70120329141420
|
91
113
|
- !ruby/object:Gem::Dependency
|
92
114
|
name: rake
|
93
|
-
requirement: &
|
115
|
+
requirement: &70120329140960 !ruby/object:Gem::Requirement
|
94
116
|
none: false
|
95
117
|
requirements:
|
96
118
|
- - ~>
|
@@ -98,32 +120,32 @@ dependencies:
|
|
98
120
|
version: 0.9.0
|
99
121
|
type: :runtime
|
100
122
|
prerelease: false
|
101
|
-
version_requirements: *
|
123
|
+
version_requirements: *70120329140960
|
102
124
|
- !ruby/object:Gem::Dependency
|
103
125
|
name: mongo
|
104
|
-
requirement: &
|
126
|
+
requirement: &70120329140500 !ruby/object:Gem::Requirement
|
105
127
|
none: false
|
106
128
|
requirements:
|
107
129
|
- - ~>
|
108
130
|
- !ruby/object:Gem::Version
|
109
|
-
version: 1.
|
131
|
+
version: 1.5.2
|
110
132
|
type: :runtime
|
111
133
|
prerelease: false
|
112
|
-
version_requirements: *
|
134
|
+
version_requirements: *70120329140500
|
113
135
|
- !ruby/object:Gem::Dependency
|
114
136
|
name: bson_ext
|
115
|
-
requirement: &
|
137
|
+
requirement: &70120329140040 !ruby/object:Gem::Requirement
|
116
138
|
none: false
|
117
139
|
requirements:
|
118
140
|
- - ~>
|
119
141
|
- !ruby/object:Gem::Version
|
120
|
-
version: 1.
|
142
|
+
version: 1.5.2
|
121
143
|
type: :runtime
|
122
144
|
prerelease: false
|
123
|
-
version_requirements: *
|
145
|
+
version_requirements: *70120329140040
|
124
146
|
- !ruby/object:Gem::Dependency
|
125
147
|
name: i18n
|
126
|
-
requirement: &
|
148
|
+
requirement: &70120329139580 !ruby/object:Gem::Requirement
|
127
149
|
none: false
|
128
150
|
requirements:
|
129
151
|
- - ! '>='
|
@@ -131,10 +153,10 @@ dependencies:
|
|
131
153
|
version: 0.4.1
|
132
154
|
type: :runtime
|
133
155
|
prerelease: false
|
134
|
-
version_requirements: *
|
156
|
+
version_requirements: *70120329139580
|
135
157
|
- !ruby/object:Gem::Dependency
|
136
158
|
name: json
|
137
|
-
requirement: &
|
159
|
+
requirement: &70120329139120 !ruby/object:Gem::Requirement
|
138
160
|
none: false
|
139
161
|
requirements:
|
140
162
|
- - ~>
|
@@ -142,10 +164,10 @@ dependencies:
|
|
142
164
|
version: 1.6.1
|
143
165
|
type: :runtime
|
144
166
|
prerelease: false
|
145
|
-
version_requirements: *
|
167
|
+
version_requirements: *70120329139120
|
146
168
|
- !ruby/object:Gem::Dependency
|
147
169
|
name: activesupport
|
148
|
-
requirement: &
|
170
|
+
requirement: &70120329138660 !ruby/object:Gem::Requirement
|
149
171
|
none: false
|
150
172
|
requirements:
|
151
173
|
- - ! '>='
|
@@ -153,10 +175,10 @@ dependencies:
|
|
153
175
|
version: 3.0.0
|
154
176
|
type: :runtime
|
155
177
|
prerelease: false
|
156
|
-
version_requirements: *
|
178
|
+
version_requirements: *70120329138660
|
157
179
|
- !ruby/object:Gem::Dependency
|
158
180
|
name: actionpack
|
159
|
-
requirement: &
|
181
|
+
requirement: &70120329138200 !ruby/object:Gem::Requirement
|
160
182
|
none: false
|
161
183
|
requirements:
|
162
184
|
- - ! '>='
|
@@ -164,10 +186,10 @@ dependencies:
|
|
164
186
|
version: 3.0.0
|
165
187
|
type: :runtime
|
166
188
|
prerelease: false
|
167
|
-
version_requirements: *
|
189
|
+
version_requirements: *70120329138200
|
168
190
|
- !ruby/object:Gem::Dependency
|
169
191
|
name: sinatra
|
170
|
-
requirement: &
|
192
|
+
requirement: &70120329137740 !ruby/object:Gem::Requirement
|
171
193
|
none: false
|
172
194
|
requirements:
|
173
195
|
- - ! '>='
|
@@ -175,10 +197,10 @@ dependencies:
|
|
175
197
|
version: 1.2.0
|
176
198
|
type: :runtime
|
177
199
|
prerelease: false
|
178
|
-
version_requirements: *
|
200
|
+
version_requirements: *70120329137740
|
179
201
|
- !ruby/object:Gem::Dependency
|
180
202
|
name: erubis
|
181
|
-
requirement: &
|
203
|
+
requirement: &70120329137280 !ruby/object:Gem::Requirement
|
182
204
|
none: false
|
183
205
|
requirements:
|
184
206
|
- - ! '>='
|
@@ -186,10 +208,10 @@ dependencies:
|
|
186
208
|
version: 2.6.6
|
187
209
|
type: :runtime
|
188
210
|
prerelease: false
|
189
|
-
version_requirements: *
|
211
|
+
version_requirements: *70120329137280
|
190
212
|
- !ruby/object:Gem::Dependency
|
191
213
|
name: vegas
|
192
|
-
requirement: &
|
214
|
+
requirement: &70120329136820 !ruby/object:Gem::Requirement
|
193
215
|
none: false
|
194
216
|
requirements:
|
195
217
|
- - ~>
|
@@ -197,7 +219,7 @@ dependencies:
|
|
197
219
|
version: 0.1.2
|
198
220
|
type: :runtime
|
199
221
|
prerelease: false
|
200
|
-
version_requirements: *
|
222
|
+
version_requirements: *70120329136820
|
201
223
|
description: MongoDB logger for Rails 3
|
202
224
|
email:
|
203
225
|
- leopard.not.a@gmail.com
|
@@ -221,7 +243,9 @@ files:
|
|
221
243
|
- bin/mongodb_logger_web
|
222
244
|
- config.ru
|
223
245
|
- examples/server_config.yml
|
246
|
+
- features/mongodb_logger_web.feature
|
224
247
|
- features/rails.feature
|
248
|
+
- features/step_definitions/mongodb_logger_web_steps.rb
|
225
249
|
- features/step_definitions/rails_application_steps.rb
|
226
250
|
- features/support/env.rb
|
227
251
|
- features/support/rails.rb
|
@@ -300,6 +324,11 @@ files:
|
|
300
324
|
- lib/mongodb_logger/server_config.rb
|
301
325
|
- lib/mongodb_logger/version.rb
|
302
326
|
- mongodb_logger.gemspec
|
327
|
+
- spec/javascripts/MongodbLoggerMainSpec.js
|
328
|
+
- spec/javascripts/helpers/SpecHelper.js
|
329
|
+
- spec/javascripts/support/jasmine.yml
|
330
|
+
- spec/javascripts/support/jasmine_config.rb
|
331
|
+
- spec/javascripts/support/jasmine_runner.rb
|
303
332
|
- test/active_record.rb
|
304
333
|
- test/config/samples/database.yml
|
305
334
|
- test/config/samples/database_no_file_logging.yml
|
@@ -308,6 +337,7 @@ files:
|
|
308
337
|
- test/config/samples/database_with_collection.yml
|
309
338
|
- test/config/samples/mongodb_logger.yml
|
310
339
|
- test/config/samples/mongoid.yml
|
340
|
+
- test/config/samples/server_config.yml
|
311
341
|
- test/rails.rb
|
312
342
|
- test/rails/app/controllers/order_controller.rb
|
313
343
|
- test/rails/test/functional/order_controller_test.rb
|
@@ -342,4 +372,34 @@ rubygems_version: 1.8.10
|
|
342
372
|
signing_key:
|
343
373
|
specification_version: 3
|
344
374
|
summary: MongoDB logger for Rails 3
|
345
|
-
test_files:
|
375
|
+
test_files:
|
376
|
+
- features/mongodb_logger_web.feature
|
377
|
+
- features/rails.feature
|
378
|
+
- features/step_definitions/mongodb_logger_web_steps.rb
|
379
|
+
- features/step_definitions/rails_application_steps.rb
|
380
|
+
- features/support/env.rb
|
381
|
+
- features/support/rails.rb
|
382
|
+
- features/support/terminal.rb
|
383
|
+
- spec/javascripts/MongodbLoggerMainSpec.js
|
384
|
+
- spec/javascripts/helpers/SpecHelper.js
|
385
|
+
- spec/javascripts/support/jasmine.yml
|
386
|
+
- spec/javascripts/support/jasmine_config.rb
|
387
|
+
- spec/javascripts/support/jasmine_runner.rb
|
388
|
+
- test/active_record.rb
|
389
|
+
- test/config/samples/database.yml
|
390
|
+
- test/config/samples/database_no_file_logging.yml
|
391
|
+
- test/config/samples/database_replica_set.yml
|
392
|
+
- test/config/samples/database_with_auth.yml
|
393
|
+
- test/config/samples/database_with_collection.yml
|
394
|
+
- test/config/samples/mongodb_logger.yml
|
395
|
+
- test/config/samples/mongoid.yml
|
396
|
+
- test/config/samples/server_config.yml
|
397
|
+
- test/rails.rb
|
398
|
+
- test/rails/app/controllers/order_controller.rb
|
399
|
+
- test/rails/test/functional/order_controller_test.rb
|
400
|
+
- test/rails/test/test_helper.rb
|
401
|
+
- test/shoulda_macros/log_macros.rb
|
402
|
+
- test/test.sh
|
403
|
+
- test/test_helper.rb
|
404
|
+
- test/unit/mongodb_logger_replica_test.rb
|
405
|
+
- test/unit/mongodb_logger_test.rb
|