mongoid-colors 0.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.md ADDED
@@ -0,0 +1,37 @@
1
+ Mongoid Colors
2
+ ===============
3
+
4
+ Mongoid Colors colorizes the mongoid query debug traces.
5
+ It uses [Coderay](https://github.com/rubychan/coderay) to do so.
6
+
7
+ Best served chilled with [irb-config](https://github.com/nviennot/irb-config).
8
+
9
+ What does it look like?
10
+ ------------------------
11
+
12
+ ### Watch the screencast of irb config
13
+
14
+ [![Watch the screencast!](https://s3.amazonaws.com/velvetpulse/screencasts/irb-config-screencast.jpg)](http://velvetpulse.com/2012/11/19/improve-your-ruby-workflow-by-integrating-vim-tmux-pry/)
15
+
16
+ Usage
17
+ ------
18
+
19
+ If you don't use irb-config, you can use it as follow:
20
+
21
+ ```ruby
22
+ gem 'mongoid-colors'
23
+ ```
24
+
25
+ ```ruby
26
+ MongoidColors::Colorizer.setup # hijack Mongoid.logger.formatter
27
+ ```
28
+
29
+ TODO
30
+ ----
31
+
32
+ * Testing
33
+
34
+ License
35
+ -------
36
+
37
+ MIT License
@@ -0,0 +1,57 @@
1
+ # encoding: utf-8
2
+
3
+ require 'mongoid'
4
+ require 'coderay'
5
+
6
+ module MongoidColors::Colorizer
7
+ def self.setup
8
+ return unless Mongoid.logger
9
+
10
+ old_formatter = Mongoid.logger.formatter
11
+ Mongoid.logger.formatter = proc do |severity, datetime, progname, msg|
12
+ m = parse(msg)
13
+ if m.nil?
14
+ unless msg =~ /which could negatively impact client-side performance/
15
+ old_formatter.call(severity, datetime, progname, msg)
16
+ end
17
+ else
18
+ m[:query].gsub!(/BSON::ObjectId\('([^']+)'\)/, '0x\1')
19
+ m[:duration] = m[:duration].split('.')[0] if m[:duration]
20
+
21
+ line = "\033[1;32m☘ \033[1;37mMongoDB\033[0m "
22
+ line << "(#{m[:duration]}ms) " if m[:duration]
23
+
24
+ if m[:database]
25
+ if m[:collection]
26
+ line << colorize("[#{m[:database]}::#{m[:collection]}] ")
27
+ else
28
+ line << colorize("[#{m[:database]}] ")
29
+ end
30
+ end
31
+
32
+ line << "#{colorize(m[:operation])} " if m[:operation]
33
+ line << colorize(m[:query])
34
+ line << "\n"
35
+ end
36
+ end
37
+ end
38
+
39
+ def self.colorize(msg)
40
+ CodeRay.scan(msg, :ruby).term
41
+ end
42
+
43
+ def self.parse(msg)
44
+ case msg
45
+ when /^MONGODB \((.*)ms\) (.*)\['(.*)'\]\.(.*)$/
46
+ {:duration => $1, :database => $2, :collection => $3, :query => $4}
47
+ when /^MONGODB (.*)\['(.*)'\]\.(.*)$/
48
+ {:database => $1, :collection => $2, :query => $3}
49
+ when /^ *MOPED: (\S+:\S+) (\S+) +database=(\S+) collection=(\S+) (.*) \((.*)ms\)/
50
+ {:host => $1, :operation => $2, :database => $3, :collection => $4, :query => $5, :duration => $6}
51
+ when /^ *MOPED: (\S+:\S+) (\S+) +database=(\S+) (.*) \((.*)ms\)/
52
+ {:host => $1, :operation => $2, :database => $3, :query => $4, :duration => $5}
53
+ end
54
+ end
55
+
56
+ setup
57
+ end
@@ -0,0 +1,3 @@
1
+ module MongoidColors
2
+ VERSION = '0.1'
3
+ end
@@ -0,0 +1,3 @@
1
+ module MongoidColors
2
+ require 'mongoid-colors/colorizer'
3
+ end
metadata ADDED
@@ -0,0 +1,82 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mongoid-colors
3
+ version: !ruby/object:Gem::Version
4
+ version: '0.1'
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Nicolas Viennot
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-12-22 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: mongoid
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: coderay
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ description: Colorize your Mongoid debug statments
47
+ email:
48
+ - nicolas@viennot.biz
49
+ executables: []
50
+ extensions: []
51
+ extra_rdoc_files: []
52
+ files:
53
+ - lib/mongoid-colors/version.rb
54
+ - lib/mongoid-colors/colorizer.rb
55
+ - lib/mongoid-colors.rb
56
+ - README.md
57
+ homepage: http://github.com/nviennot/rspec-console
58
+ licenses: []
59
+ post_install_message:
60
+ rdoc_options: []
61
+ require_paths:
62
+ - lib
63
+ required_ruby_version: !ruby/object:Gem::Requirement
64
+ none: false
65
+ requirements:
66
+ - - ! '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ required_rubygems_version: !ruby/object:Gem::Requirement
70
+ none: false
71
+ requirements:
72
+ - - ! '>='
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ requirements: []
76
+ rubyforge_project:
77
+ rubygems_version: 1.8.24
78
+ signing_key:
79
+ specification_version: 3
80
+ summary: Colorize your Mongoid traces
81
+ test_files: []
82
+ has_rdoc: false