mongodb_logger 0.4.2 → 0.5.0
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/.gitignore +2 -1
- data/.rvmrc +1 -1
- data/.travis.yml +5 -4
- data/Appraisals +9 -0
- data/CHANGELOG.md +20 -3
- data/README.md +58 -35
- data/Rakefile +33 -96
- data/app/assets/javascripts/analytics.js.coffee +5 -4
- data/app/assets/javascripts/logs.js.coffee +11 -11
- data/app/assets/javascripts/mongodb_logger.js +2 -1
- data/app/assets/javascripts/vendors/jquery-1.9.1.min.js +5 -0
- data/app/assets/javascripts/vendors/jquery.pjax.min.js +15 -13
- data/app/assets/javascripts/vendors/mustache.min.js +10 -0
- data/app/assets/stylesheets/layout.css +20 -15
- data/app/assets/stylesheets/mongodb_logger.css +0 -3
- data/bin/mongodb_logger_web +1 -2
- data/features/rails.feature +20 -8
- data/features/step_definitions/mongodb_logger_web_steps.rb +2 -3
- data/features/step_definitions/rails_application_steps.rb +84 -58
- data/features/step_definitions/rake_steps.rb +10 -0
- data/features/support/aruba.rb +5 -0
- data/features/support/env.rb +11 -5
- data/features/support/rails.rb +55 -67
- data/gemfiles/rails31.gemfile +8 -0
- data/gemfiles/rails32.gemfile +8 -0
- data/lib/mongodb_logger.rb +10 -3
- data/lib/mongodb_logger/adapters/base.rb +5 -1
- data/lib/mongodb_logger/adapters/mongo.rb +17 -13
- data/lib/mongodb_logger/adapters/moped.rb +17 -11
- data/lib/mongodb_logger/capistrano.rb +8 -0
- data/lib/mongodb_logger/logger.rb +13 -26
- data/lib/mongodb_logger/rack_middleware.rb +24 -0
- data/lib/mongodb_logger/railtie.rb +4 -4
- data/lib/mongodb_logger/server.rb +43 -68
- data/lib/mongodb_logger/server/helpers.rb +5 -0
- data/lib/mongodb_logger/server/{content_for.rb → helpers/content_for.rb} +0 -0
- data/lib/mongodb_logger/server/helpers/mustache_helpers.rb +66 -0
- data/lib/mongodb_logger/server/{partials.rb → helpers/partials.rb} +0 -0
- data/lib/mongodb_logger/server/{sprokets.rb → helpers/sprokets.rb} +4 -4
- data/lib/mongodb_logger/server/{view_helpers.rb → helpers/view_helpers.rb} +22 -38
- data/lib/mongodb_logger/server/model.rb +4 -0
- data/lib/mongodb_logger/server/model/additional_filter.rb +15 -23
- data/lib/mongodb_logger/server/model/analytic.rb +24 -32
- data/lib/mongodb_logger/server/model/base.rb +21 -0
- data/lib/mongodb_logger/server/model/filter.rb +12 -20
- data/lib/mongodb_logger/server/mustache/logs/info.rb +15 -0
- data/lib/mongodb_logger/server/templates/logs/info.mustache +25 -0
- data/lib/mongodb_logger/server/views/layout.erb +28 -26
- data/lib/mongodb_logger/server/views/shared/_log.erb +1 -1
- data/lib/mongodb_logger/server/views/shared/_tabs.erb +2 -2
- data/lib/mongodb_logger/server/views/shared/layout/_mustache.erb +6 -0
- data/lib/mongodb_logger/server/views/show_log.erb +2 -2
- data/lib/mongodb_logger/server_config.rb +4 -4
- data/lib/mongodb_logger/utils/migrate.rb +50 -0
- data/lib/mongodb_logger/utils/progressbar.rb +79 -0
- data/lib/mongodb_logger/version.rb +1 -1
- data/mongodb_logger.gemspec +15 -8
- data/{test/config/samples → spec/factories/config}/database.yml +0 -0
- data/{test/config/samples → spec/factories/config}/database_no_file_logging.yml +0 -0
- data/{test/config/samples → spec/factories/config}/database_replica_set.yml +0 -0
- data/{test/config/samples → spec/factories/config}/database_with_auth.yml +0 -0
- data/spec/factories/config/database_with_capsize.yml +9 -0
- data/{test/config/samples → spec/factories/config}/database_with_collection.yml +0 -0
- data/{test/config/samples → spec/factories/config}/database_with_url.yml +0 -0
- data/{test/config/samples → spec/factories/config}/mongodb_logger.yml +0 -0
- data/{test/config/samples → spec/factories/config}/mongoid.yml +0 -0
- data/{test/config/samples → spec/factories/config}/server_config.yml +0 -0
- data/spec/javascripts/support/jasmine.yml +1 -5
- data/spec/mongodb_logger_spec.rb +257 -0
- data/spec/rails_spec/controllers/tests_controller_spec_rails.rb +128 -0
- data/spec/rails_spec/spec_helper_rails.rb +13 -0
- data/spec/spec_helper.rb +17 -0
- data/{test/test_helper.rb → spec/support/mongodb_logger_helper.rb} +44 -63
- data/spec/support/mongodb_logger_macros.rb +22 -0
- data/spec/support/rails.rb +40 -0
- data/spec/utils/migrate_spec.rb +32 -0
- data/{lib/tasks → tasks}/mongodb_logger.rake +14 -6
- metadata +198 -78
- data/SUPPORTED_RAILS_VERSIONS +0 -16
- data/TESTING.md +0 -24
- data/app/assets/javascripts/vendors/jquery-1.8.3.min.js +0 -2
- data/features/support/terminal.rb +0 -95
- data/lib/mongodb_logger/server/views/shared/_log_info.erb +0 -27
- data/test/Gemfile_tests +0 -9
- data/test/active_record.rb +0 -13
- data/test/log/.gitkeep +0 -0
- data/test/rails.rb +0 -22
- data/test/rails/app/controllers/order_controller.rb +0 -23
- data/test/rails/test/functional/order_controller_test.rb +0 -116
- data/test/rails/test/test_helper.rb +0 -10
- data/test/shoulda_macros/log_macros.rb +0 -13
- data/test/test.sh +0 -7
- data/test/unit/mongodb_logger_replica_test.rb +0 -56
- data/test/unit/mongodb_logger_test.rb +0 -307
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
Given /I've prepared the Rakefile/ do
|
|
2
|
+
rakefile = File.join(PROJECT_ROOT, 'features', 'support', 'rake', 'Rakefile')
|
|
3
|
+
target = File.join(TEMP_DIR, 'Rakefile')
|
|
4
|
+
FileUtils.cp(rakefile, target)
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
When /I run rake with (.+)/ do |command|
|
|
8
|
+
command = "rake #{command.gsub(' ','_')}"
|
|
9
|
+
step %{I run `#{command}`}
|
|
10
|
+
end
|
data/features/support/env.rb
CHANGED
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
require 'active_support'
|
|
2
2
|
require 'rspec'
|
|
3
|
+
require 'aruba/cucumber'
|
|
3
4
|
|
|
4
5
|
PROJECT_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..', '..')).freeze
|
|
5
6
|
TEMP_DIR = File.join(PROJECT_ROOT, 'tmp').freeze
|
|
6
7
|
LOCAL_RAILS_ROOT = File.join(TEMP_DIR, 'rails_root').freeze
|
|
7
|
-
BUILT_GEM_ROOT = File.join(TEMP_DIR, 'built_gems').freeze
|
|
8
|
-
LOCAL_GEM_ROOT = File.join(TEMP_DIR, 'local_gems').freeze
|
|
9
8
|
|
|
10
9
|
Before do
|
|
11
|
-
FileUtils.mkdir_p(TEMP_DIR)
|
|
12
|
-
FileUtils.rm_rf(BUILT_GEM_ROOT)
|
|
13
10
|
FileUtils.rm_rf(LOCAL_RAILS_ROOT)
|
|
14
|
-
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
When /^I reset Bundler environment variable$/ do
|
|
14
|
+
BUNDLE_ENV_VARS.each do |key|
|
|
15
|
+
ENV[key] = nil
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def prepend_path(path)
|
|
20
|
+
ENV['PATH'] = path + ":" + ENV['PATH']
|
|
15
21
|
end
|
data/features/support/rails.rb
CHANGED
|
@@ -1,98 +1,86 @@
|
|
|
1
|
+
BUNDLE_ENV_VARS = %w(RUBYOPT BUNDLE_PATH BUNDLE_BIN_PATH BUNDLE_GEMFILE)
|
|
2
|
+
ORIGINAL_BUNDLE_VARS = Hash[ENV.select{ |key,value| BUNDLE_ENV_VARS.include?(key) }]
|
|
3
|
+
|
|
4
|
+
ENV['RAILS_ENV'] = 'test'
|
|
5
|
+
|
|
6
|
+
Before do
|
|
7
|
+
ENV['BUNDLE_GEMFILE'] = File.join(Dir.pwd, ENV['BUNDLE_GEMFILE']) unless ENV['BUNDLE_GEMFILE'].start_with?(Dir.pwd)
|
|
8
|
+
@framework_version = nil
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
After do |s|
|
|
12
|
+
ORIGINAL_BUNDLE_VARS.each_pair do |key, value|
|
|
13
|
+
ENV[key] = value
|
|
14
|
+
end
|
|
15
|
+
Cucumber.wants_to_quit = true if s.failed?
|
|
16
|
+
end
|
|
17
|
+
|
|
1
18
|
module RailsHelpers
|
|
2
19
|
def rails_root_exists?
|
|
3
20
|
File.exists?(environment_path)
|
|
4
21
|
end
|
|
5
|
-
|
|
6
|
-
def environment_path
|
|
7
|
-
File.join(rails_root, 'config', 'environment.rb')
|
|
8
|
-
end
|
|
9
22
|
|
|
10
23
|
def application_controller_filename
|
|
11
24
|
controller_filename = File.join(rails_root, 'app', 'controllers', "application_controller.rb")
|
|
12
25
|
end
|
|
13
26
|
|
|
27
|
+
def rails3?
|
|
28
|
+
rails_version =~ /^3/
|
|
29
|
+
end
|
|
30
|
+
|
|
14
31
|
def rails_root
|
|
15
32
|
LOCAL_RAILS_ROOT
|
|
16
33
|
end
|
|
17
|
-
|
|
18
|
-
def
|
|
19
|
-
rails_version =~ /^3
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def rails31?
|
|
23
|
-
rails_version =~ /^3.1/
|
|
34
|
+
|
|
35
|
+
def rails_uses_rack?
|
|
36
|
+
rails3? || rails_version =~ /^2\.3/
|
|
24
37
|
end
|
|
25
38
|
|
|
26
39
|
def rails_version
|
|
27
40
|
@rails_version ||= begin
|
|
28
|
-
|
|
41
|
+
if ENV["RAILS_VERSION"]
|
|
42
|
+
ENV["RAILS_VERSION"]
|
|
43
|
+
elsif bundler_manages_gems?
|
|
44
|
+
rails_version = open(gemfile_path).read.match(/gem.*rails["'].*["'](.+)["']/)[1]
|
|
45
|
+
else
|
|
46
|
+
environment_file = File.join(rails_root, 'config', 'environment.rb')
|
|
47
|
+
rails_version = `grep RAILS_GEM_VERSION #{environment_file}`.match(/[\d.]+/)[0]
|
|
48
|
+
end
|
|
29
49
|
end
|
|
30
50
|
end
|
|
31
51
|
|
|
32
|
-
def
|
|
33
|
-
File.
|
|
52
|
+
def bundler_manages_gems?
|
|
53
|
+
File.exists?(gemfile_path)
|
|
34
54
|
end
|
|
35
55
|
|
|
36
|
-
def
|
|
37
|
-
File.join(rails_root, '
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def routes_path
|
|
41
|
-
File.join(rails_root, 'config', 'routes.rb')
|
|
56
|
+
def gemfile_path
|
|
57
|
+
gemfile = File.join(rails_root, 'Gemfile')
|
|
42
58
|
end
|
|
43
|
-
|
|
44
|
-
def
|
|
45
|
-
|
|
59
|
+
|
|
60
|
+
def rails_manages_gems?
|
|
61
|
+
rails_version =~ /^2\.[123]/
|
|
46
62
|
end
|
|
47
63
|
|
|
48
|
-
def
|
|
49
|
-
|
|
50
|
-
gem = "gem '#{gem_name}'"
|
|
51
|
-
gem += ", '#{version}'" if version
|
|
52
|
-
file.puts(gem)
|
|
53
|
-
end
|
|
64
|
+
def rails_supports_initializers?
|
|
65
|
+
rails3? || rails_version =~ /^2\./
|
|
54
66
|
end
|
|
55
|
-
|
|
56
|
-
def
|
|
57
|
-
|
|
58
|
-
content = "require 'thread'\n#{content}"
|
|
59
|
-
File.open(rakefile_path, 'wb') { |file| file.write(content) }
|
|
67
|
+
|
|
68
|
+
def rails_finds_generators_in_gems?
|
|
69
|
+
rails3? || rails_version =~ /^2\./
|
|
60
70
|
end
|
|
61
|
-
|
|
62
|
-
def
|
|
63
|
-
|
|
64
|
-
flag = Regexp.escape("Application.routes.draw do\n")
|
|
65
|
-
order_routes = <<STR
|
|
66
|
-
resources :order do
|
|
67
|
-
collection do
|
|
68
|
-
post :test_post
|
|
71
|
+
|
|
72
|
+
def version_string
|
|
73
|
+
ENV['RAILS_VERSION'] || `tail -n 1 SUPPORTED_RAILS_VERSIONS` # use latest version if ENV["RAILS_VERSION"] is undefined
|
|
69
74
|
end
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
File.open(routes_path, 'wb') { |file| file.write(content) }
|
|
75
|
+
|
|
76
|
+
def environment_path
|
|
77
|
+
File.join(rails_root, 'config', 'environment.rb')
|
|
74
78
|
end
|
|
75
|
-
|
|
76
|
-
def
|
|
77
|
-
|
|
78
|
-
File.join(PROJECT_ROOT, 'test', 'rails', 'app', 'controllers', 'order_controller.rb'),
|
|
79
|
-
File.join(rails_root, 'app', 'controllers', 'order_controller.rb')
|
|
80
|
-
)
|
|
81
|
-
FileUtils.cp(
|
|
82
|
-
File.join(PROJECT_ROOT, 'test', 'config', 'samples', 'database.yml'),
|
|
83
|
-
File.join(rails_root, 'config', 'database.yml')
|
|
84
|
-
)
|
|
85
|
-
FileUtils.cp(
|
|
86
|
-
File.join(PROJECT_ROOT, 'test', 'rails', 'test', 'test_helper.rb'),
|
|
87
|
-
File.join(rails_root, 'test', 'test_helper.rb')
|
|
88
|
-
)
|
|
89
|
-
FileUtils.cp(
|
|
90
|
-
File.join(PROJECT_ROOT, 'test', 'rails', 'test', 'functional', 'order_controller_test.rb'),
|
|
91
|
-
File.join(rails_root, 'test', 'functional', 'order_controller_test.rb')
|
|
92
|
-
)
|
|
93
|
-
FileUtils.chmod 0777, logs_path
|
|
79
|
+
|
|
80
|
+
def rakefile_path
|
|
81
|
+
File.join(rails_root, 'Rakefile')
|
|
94
82
|
end
|
|
95
|
-
|
|
83
|
+
|
|
96
84
|
end
|
|
97
85
|
|
|
98
|
-
World(RailsHelpers)
|
|
86
|
+
World(RailsHelpers)
|
data/lib/mongodb_logger.rb
CHANGED
|
@@ -4,6 +4,7 @@ require 'mongodb_logger/config'
|
|
|
4
4
|
require 'mongodb_logger/logger'
|
|
5
5
|
require 'mongodb_logger/railtie' if defined?(Rails::Railtie)
|
|
6
6
|
require 'mongodb_logger/engine' if defined?(Rails::Engine)
|
|
7
|
+
require 'mongodb_logger/rack_middleware'
|
|
7
8
|
require 'mongodb_logger/version'
|
|
8
9
|
|
|
9
10
|
module MongodbLogger
|
|
@@ -11,7 +12,13 @@ module MongodbLogger
|
|
|
11
12
|
extend Config
|
|
12
13
|
|
|
13
14
|
def self.included(base)
|
|
14
|
-
base.class_eval
|
|
15
|
+
base.class_eval do
|
|
16
|
+
begin
|
|
17
|
+
around_action :enable_mongodb_logger
|
|
18
|
+
rescue
|
|
19
|
+
around_filter :enable_mongodb_logger
|
|
20
|
+
end
|
|
21
|
+
end
|
|
15
22
|
end
|
|
16
23
|
|
|
17
24
|
def enable_mongodb_logger
|
|
@@ -36,11 +43,11 @@ module MongodbLogger
|
|
|
36
43
|
}) { yield }
|
|
37
44
|
end
|
|
38
45
|
# session keys can be with dots. It is invalid keys for BSON
|
|
39
|
-
def mongo_fix_session_keys(session)
|
|
46
|
+
def mongo_fix_session_keys(session = {})
|
|
40
47
|
new_session = {}
|
|
41
48
|
session.each do |i, j|
|
|
42
49
|
new_session[i.gsub(/\./i, "|")] = j.inspect
|
|
43
|
-
end
|
|
50
|
+
end if session
|
|
44
51
|
new_session
|
|
45
52
|
end
|
|
46
53
|
end
|
|
@@ -18,13 +18,17 @@ module MongodbLogger
|
|
|
18
18
|
@collection = @connection[@configuration['collection']]
|
|
19
19
|
end
|
|
20
20
|
|
|
21
|
+
def rename_collection_command(admin_session, to, drop_target = false)
|
|
22
|
+
admin_session.command({ renameCollection: "#{@configuration['database']}.#{collection_name}", to: "#{@configuration['database']}.#{to}", dropTarget: drop_target })
|
|
23
|
+
end
|
|
24
|
+
|
|
21
25
|
def reset_collection
|
|
22
26
|
if @connection && @collection
|
|
23
27
|
@collection.drop
|
|
24
28
|
create_collection
|
|
25
29
|
end
|
|
26
30
|
end
|
|
27
|
-
|
|
31
|
+
|
|
28
32
|
def collection_stats_hash(stats)
|
|
29
33
|
{
|
|
30
34
|
:is_capped => (stats["capped"] && ([1, true].include?(stats["capped"]))),
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
module MongodbLogger
|
|
2
2
|
module Adapers
|
|
3
3
|
class Mongo < Base
|
|
4
|
-
|
|
4
|
+
|
|
5
5
|
def initialize(options = {})
|
|
6
6
|
@authenticated = false
|
|
7
7
|
@configuration = options
|
|
@@ -19,29 +19,33 @@ module MongodbLogger
|
|
|
19
19
|
end
|
|
20
20
|
end
|
|
21
21
|
end
|
|
22
|
-
|
|
22
|
+
|
|
23
23
|
def create_collection
|
|
24
24
|
@connection.create_collection(collection_name,
|
|
25
25
|
{:capped => true, :size => @configuration['capsize'].to_i})
|
|
26
26
|
end
|
|
27
|
-
|
|
27
|
+
|
|
28
28
|
def insert_log_record(record, options = {})
|
|
29
29
|
@collection.insert(record, options[:write_options])
|
|
30
30
|
end
|
|
31
|
-
|
|
31
|
+
|
|
32
32
|
def collection_stats
|
|
33
33
|
collection_stats_hash(@collection.stats)
|
|
34
34
|
end
|
|
35
|
-
|
|
35
|
+
|
|
36
|
+
def rename_collection(to, drop_target = false)
|
|
37
|
+
rename_collection_command(mongo_connection_object.db("admin"), to, drop_target)
|
|
38
|
+
end
|
|
39
|
+
|
|
36
40
|
# filter
|
|
37
41
|
def filter_by_conditions(filter)
|
|
38
42
|
@collection.find(filter.get_mongo_conditions).sort('$natural', -1).limit(filter.get_mongo_limit)
|
|
39
43
|
end
|
|
40
|
-
|
|
44
|
+
|
|
41
45
|
def find_by_id(id)
|
|
42
46
|
@collection.find_one(::BSON::ObjectId(id))
|
|
43
47
|
end
|
|
44
|
-
|
|
48
|
+
|
|
45
49
|
def tail_log_from_params(params = {})
|
|
46
50
|
logs = []
|
|
47
51
|
last_id = nil
|
|
@@ -56,19 +60,19 @@ module MongodbLogger
|
|
|
56
60
|
log = @collection.find_one({}, {:sort => ['$natural', -1]})
|
|
57
61
|
log_last_id = log["_id"].to_s unless log.blank?
|
|
58
62
|
end
|
|
59
|
-
{
|
|
60
|
-
:log_last_id => log_last_id,
|
|
63
|
+
{
|
|
64
|
+
:log_last_id => log_last_id,
|
|
61
65
|
:time => Time.now.strftime("%F %T"),
|
|
62
66
|
:logs => logs
|
|
63
67
|
}
|
|
64
68
|
end
|
|
65
|
-
|
|
69
|
+
|
|
66
70
|
def calculate_mapreduce(map, reduce, params = {})
|
|
67
71
|
@collection.map_reduce(map, reduce, {:query => params[:conditions], :sort => ['$natural', -1], :out => {:inline => true}, :raw => true}).find()
|
|
68
72
|
end
|
|
69
|
-
|
|
73
|
+
|
|
70
74
|
private
|
|
71
|
-
|
|
75
|
+
|
|
72
76
|
def mongo_connection_object
|
|
73
77
|
if @configuration['hosts']
|
|
74
78
|
conn = ::Mongo::ReplSetConnection.new(*(@configuration['hosts'] <<
|
|
@@ -85,7 +89,7 @@ module MongodbLogger
|
|
|
85
89
|
@connection_type = conn.class
|
|
86
90
|
conn
|
|
87
91
|
end
|
|
88
|
-
|
|
92
|
+
|
|
89
93
|
end
|
|
90
94
|
end
|
|
91
95
|
end
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
module MongodbLogger
|
|
2
2
|
module Adapers
|
|
3
3
|
class Moped < Base
|
|
4
|
-
|
|
4
|
+
|
|
5
5
|
def initialize(options = {})
|
|
6
6
|
@configuration = options
|
|
7
7
|
if @configuration['url']
|
|
@@ -20,11 +20,11 @@ module MongodbLogger
|
|
|
20
20
|
end
|
|
21
21
|
end
|
|
22
22
|
end
|
|
23
|
-
|
|
23
|
+
|
|
24
24
|
def create_collection
|
|
25
25
|
@connection.command(create: collection_name, capped: true, size: @configuration['capsize'].to_i)
|
|
26
26
|
end
|
|
27
|
-
|
|
27
|
+
|
|
28
28
|
def insert_log_record(record, options = {})
|
|
29
29
|
record[:_id] = ::Moped::BSON::ObjectId.new
|
|
30
30
|
@connection.with(safe: options[:write_options])[collection_name].insert(record)
|
|
@@ -33,16 +33,22 @@ module MongodbLogger
|
|
|
33
33
|
def collection_stats
|
|
34
34
|
collection_stats_hash(@connection.command(collStats: collection_name))
|
|
35
35
|
end
|
|
36
|
-
|
|
36
|
+
|
|
37
|
+
def rename_collection(to, drop_target = false)
|
|
38
|
+
@connection.with(database: "admin", consistency: :strong) do |session|
|
|
39
|
+
rename_collection_command(session, to, drop_target)
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
37
43
|
# filter
|
|
38
44
|
def filter_by_conditions(filter)
|
|
39
45
|
@collection.find(filter.get_mongo_conditions).sort('$natural' => -1).limit(filter.get_mongo_limit)
|
|
40
46
|
end
|
|
41
|
-
|
|
47
|
+
|
|
42
48
|
def find_by_id(id)
|
|
43
49
|
@collection.find("_id" => ::Moped::BSON::ObjectId.from_string(id)).first
|
|
44
50
|
end
|
|
45
|
-
|
|
51
|
+
|
|
46
52
|
def tail_log_from_params(params = {})
|
|
47
53
|
logs = []
|
|
48
54
|
last_id = nil
|
|
@@ -57,13 +63,13 @@ module MongodbLogger
|
|
|
57
63
|
log = @collection.find.sort('$natural' => -1).first
|
|
58
64
|
log_last_id = log["_id"].to_s unless log.blank?
|
|
59
65
|
end
|
|
60
|
-
{
|
|
61
|
-
:log_last_id => log_last_id,
|
|
66
|
+
{
|
|
67
|
+
:log_last_id => log_last_id,
|
|
62
68
|
:time => Time.now.strftime("%F %T"),
|
|
63
69
|
:logs => logs
|
|
64
70
|
}
|
|
65
71
|
end
|
|
66
|
-
|
|
72
|
+
|
|
67
73
|
def calculate_mapreduce(map, reduce, params = {})
|
|
68
74
|
@connection.command(
|
|
69
75
|
mapreduce: collection_name,
|
|
@@ -76,7 +82,7 @@ module MongodbLogger
|
|
|
76
82
|
end
|
|
77
83
|
|
|
78
84
|
private
|
|
79
|
-
|
|
85
|
+
|
|
80
86
|
def mongo_connection_object
|
|
81
87
|
if @configuration['hosts']
|
|
82
88
|
conn = ::Moped::Session.new(@configuration['hosts'].map{|(host,port)| "#{host}:#{port}"}, :timeout => 6)
|
|
@@ -89,7 +95,7 @@ module MongodbLogger
|
|
|
89
95
|
@connection_type = conn.class
|
|
90
96
|
conn
|
|
91
97
|
end
|
|
92
|
-
|
|
98
|
+
|
|
93
99
|
end
|
|
94
100
|
end
|
|
95
101
|
end
|
|
@@ -3,6 +3,8 @@ Capistrano::Configuration.instance.load do
|
|
|
3
3
|
_cset :mongodb_logger_assets_role, [:app]
|
|
4
4
|
_cset :mongodb_logger_assets_dir, "public/assets"
|
|
5
5
|
|
|
6
|
+
_cset :mongodb_logger_db_role, [:app]
|
|
7
|
+
|
|
6
8
|
namespace :mongodb_logger do
|
|
7
9
|
|
|
8
10
|
desc <<-DESC
|
|
@@ -12,5 +14,11 @@ Capistrano::Configuration.instance.load do
|
|
|
12
14
|
run "cd #{latest_release} && #{rake} RAILS_ENV=#{rails_env} #{mongodb_logger_asset_env} mongodb_logger:assets:compile[#{mongodb_logger_assets_dir}]"
|
|
13
15
|
end
|
|
14
16
|
|
|
17
|
+
desc <<-DESC
|
|
18
|
+
Run collection migrate rake task.
|
|
19
|
+
DESC
|
|
20
|
+
task :migrate, :roles => mongodb_logger_db_role, :except => { :no_release => true } do
|
|
21
|
+
run "cd #{latest_release} && #{rake} RAILS_ENV=#{rails_env} mongodb_logger:migrate"
|
|
22
|
+
end
|
|
15
23
|
end
|
|
16
24
|
end
|