barkeep 0.1.0 → 0.1.1

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/README.rdoc CHANGED
@@ -11,20 +11,26 @@ http://i.imgur.com/0TTHX.png
11
11
  == Install
12
12
 
13
13
  * Install and require gem (add it to your Gemfile or your environment.rb file).
14
- * include Barkeep in your ApplicationHelper, i.e.
14
+ * in Rails, include Barkeep in your ApplicationHelper, i.e.
15
15
 
16
16
  module ApplicationHelper
17
17
  include Barkeep
18
18
  ...
19
19
  end
20
20
 
21
+ * in Sinatra, include Barkeep as a helper in your main app file, i.e.
22
+
23
+ helpers Barkeep
24
+
21
25
  * add the barkeep styles in your layout header, i.e
22
26
 
23
- <%= barkeep_styles unless %W(test production).include?(Rails.env) %>
27
+ <%= barkeep_styles %>
24
28
 
25
29
  * call render_barkeep from your layout or footer, i.e.
26
30
 
27
- <%= render_barkeep unless %W(test production).include?(Rails.env) %>
31
+ <%= render_barkeep %>
32
+
33
+ * These two methods will return an empty string unless the app is running under one of the environments specified in your config file
28
34
 
29
35
  * Create a config file in config/barkeep.json (see example below)
30
36
 
@@ -32,8 +38,8 @@ http://i.imgur.com/0TTHX.png
32
38
 
33
39
  Configuration is specified in a config/barkeep.json
34
40
 
35
- You want to specify some panes and a github url. Here is a config with all the
36
- default panes:
41
+ You want to specify some panes, a github url, and the environments in which you
42
+ want to render Barkeep. Here is a config with all the default panes:
37
43
 
38
44
  {
39
45
  "panes" : [
@@ -43,7 +49,8 @@ default panes:
43
49
  "commit_date_info",
44
50
  "rpm_request_info"
45
51
  ],
46
- "github_url" : "https://github.com/USER_OR_ORGANIZATION/PROJECT_NAME"
52
+ "github_url" : "https://github.com/USER_OR_ORGANIZATION/PROJECT_NAME",
53
+ "environments" : ["development", "stage"]
47
54
  }
48
55
 
49
56
  Panes are rendered in the order specified in the array. You can specify as
data/lib/barkeep.rb CHANGED
@@ -2,53 +2,65 @@ require 'json'
2
2
  require 'grit_wrapper'
3
3
 
4
4
  module Barkeep
5
+ def load_barkeep?
6
+ if defined?(Rails)
7
+ this_env = Rails.env
8
+ elsif defined?(Sinatra)
9
+ this_env = Sinatra::Application.settings.environment
10
+ end
11
+ barkeep_config['environments'].include?(this_env.to_s)
12
+ end
13
+
5
14
  def barkeep_styles
6
- content_tag(:style, File.read(File.expand_path(File.dirname(__FILE__) + "/default.css")))
15
+ return unless load_barkeep?
16
+ %(<style>#{File.read(File.expand_path(File.dirname(__FILE__) + "/default.css"))}</style>)
7
17
  end
8
18
 
9
19
  def render_barkeep
10
- return unless grit_info.repository?
11
-
12
- content_tag(:dl, :id => 'barkeep') do
13
- barkeep_config['panes'].map do |name|
14
- if name =~ /^(p|partial) (.*)/
15
- render :partial => $2
16
- else
17
- send(name)
18
- end
19
- end <<
20
- content_tag(:dd, :class => 'close') do
21
- content_tag(:a, "&times;", :href => '#', :onclick => "c = document.getElementById('barkeep'); c.parentNode.removeChild(c); return false", :title => 'Close me!')
22
- end
23
- end
20
+ return unless load_barkeep? && grit_info.repository?
21
+
22
+ %(
23
+ <dl id="barkeep">
24
+ #{
25
+ barkeep_config['panes'].map do |name|
26
+ if name =~ /^(p|partial) (.*)/
27
+ render :partial => $2
28
+ else
29
+ send(name)
30
+ end
31
+ end.join('')
32
+ }
33
+ <dd class="close">
34
+ <a href="#" onclick="c = document.getElementById('barkeep'); c.parentNode.removeChild(c); return false" title="Close me!">&times;</a>
35
+ </dd>
36
+ </dl>
37
+ )
24
38
  end
25
39
 
26
40
  def barkeep_config
27
- @@barkeep_config ||= JSON.parse(File.read("#{Rails.root}/config/barkeep.json"))
41
+ @@barkeep_config ||= JSON.parse(File.read("config/barkeep.json"))
28
42
  end
29
43
 
30
44
  def branch_info
31
- content_tag(:dt, 'Branch:') +
32
- content_tag(:dd, content_tag(:a, grit_info[:branch], branch_link_attributes))
45
+ %(<dt>Branch:</dt><dd><a href="#{branch_link_attributes[:href]}">#{grit_info[:branch]}</a></dd>)
33
46
  end
34
47
 
35
48
  def commit_sha_info
36
- content_tag(:dt, 'Commit:') +
37
- content_tag(:dd, content_tag(:a, grit_info[:commit].try(:slice, 0,8), commit_link_attributes))
49
+ %(<dt>Commit:</dt><dd><a href="#{commit_link_attributes[:href]}" title="#{commit_link_attributes[:title]}">#{(grit_info[:commit] || "").slice(0,8)}</a></dd>)
38
50
  end
39
51
 
40
52
  def commit_author_info
41
- content_tag(:dt, 'Who:') + content_tag(:dd, grit_info[:last_author])
53
+ %(<dt>Who:</dt><dd>#{grit_info[:last_author]}</dd>)
42
54
  end
43
55
 
44
56
  def commit_date_info
45
- content_tag(:dt, 'When:') + content_tag(:dd, grit_info[:date].try(:to_s, :short), :title => grit_info[:date].to_s)
57
+ short_date = (grit_info[:date].respond_to?(:strftime) ? grit_info[:date].strftime("%d %B, %H:%M") : short_date.to_s)
58
+ %(<dt>When:</dt><dd title="#{grit_info[:date].to_s}">#{short_date}</dd>)
46
59
  end
47
60
 
48
61
  def rpm_request_info
49
62
  if rpm_enabled?
50
- content_tag(:dt, link_to('RPM', '/newrelic', :target => 'blank') + ':') <<
51
- content_tag(:dd, link_to('request', rpm_url, :target => 'blank'))
63
+ %(<dt><a href="/newrelic">RPM:</a></dt><dd><a href="#{rpm_url}">request</a></dd>)
52
64
  end
53
65
  end
54
66
 
@@ -84,8 +96,11 @@ module Barkeep
84
96
  end
85
97
  end
86
98
 
99
+ def rpm_sample_id
100
+ NewRelic::Agent.instance.transaction_sampler.current_sample_id
101
+ end
102
+
87
103
  def rpm_url
88
- rpm_id = NewRelic::Agent.instance.transaction_sampler.current_sample_id
89
- "/newrelic/show_sample_detail/#{rpm_id}"
104
+ "/newrelic/show_sample_detail/#{rpm_sample_id}"
90
105
  end
91
106
  end
data/lib/grit_wrapper.rb CHANGED
@@ -3,12 +3,13 @@ require 'grit'
3
3
  # A singleton refreshes on every request in development but
4
4
  # caches in environments where class caching is enabled.
5
5
  require 'singleton'
6
+ require 'ostruct'
6
7
 
7
8
  class GritWrapper
8
9
  include Singleton
9
10
 
10
11
  def repository
11
- @repository ||= Grit::Repo.new(Rails.root)
12
+ @repository ||= Grit::Repo.new('.')
12
13
  rescue Grit::InvalidGitRepositoryError
13
14
  # not in a directory that contains .git
14
15
  @repository = :invalid
@@ -27,21 +28,21 @@ class GritWrapper
27
28
  end
28
29
 
29
30
  def last_commit
30
- @last_commit ||= repository.commit(last_commit_hash)
31
+ @last_commit ||= repository.commit(last_commit_hash) || OpenStruct.new
31
32
  end
32
33
 
33
34
  def to_hash
34
35
  return {
35
36
  :branch => 'Not currently on a branch.',
36
- :commit => (File.read(Rails.root + "/REVISION").strip rescue nil)
37
+ :commit => (File.read("REVISION").strip rescue nil)
37
38
  } if head.nil?
38
39
 
39
40
  @hash ||= {
40
41
  :branch => head.name,
41
42
  :commit => last_commit_hash,
42
- :last_author => last_commit.try(:author),
43
- :message => last_commit.try(:message),
44
- :date => last_commit.try(:authored_date)
43
+ :last_author => last_commit.author,
44
+ :message => last_commit.message,
45
+ :date => last_commit.authored_date
45
46
  }
46
47
  end
47
48
 
data/test/helper.rb CHANGED
@@ -10,9 +10,6 @@ end
10
10
  require 'test/unit'
11
11
  require 'shoulda'
12
12
  require 'mocha'
13
- require 'active_support'
14
- require 'action_pack'
15
- require 'action_view'
16
13
 
17
14
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
18
15
  $LOAD_PATH.unshift(File.dirname(__FILE__))
data/test/test_barkeep.rb CHANGED
@@ -1,18 +1,21 @@
1
1
  require 'helper'
2
2
 
3
3
  class TestBarkeep < Test::Unit::TestCase
4
- include ActionView::Helpers
5
4
  include Barkeep
6
5
 
7
6
  attr_accessor :output_buffer
8
7
 
8
+ def setup
9
+ stubs(:load_barkeep? => true)
10
+ end
11
+
9
12
  should "render a style tag filled with css" do
10
13
  css = File.read(File.expand_path(File.dirname(__FILE__) + "/../lib/default.css"))
11
14
  assert_equal "<style>#{css}</style>", barkeep_styles
12
15
  end
13
16
 
14
17
  should "render the barkeep bar" do
15
- stubs(:barkeep_config => {'github_url' => 'http://github.com/project_name', 'panes' => ['branch_info', 'commit_sha_info']})
18
+ stubs(:barkeep_config => {'github_url' => 'http://github.com/project_name', 'panes' => ['branch_info', 'commit_sha_info'], 'environments' => ['development']})
16
19
  GritWrapper.instance.stubs(:repository? => true, :to_hash => {:branch => 'new_branch', :commit => 'abcdef'})
17
20
  expected = %(
18
21
  <dl id="barkeep">
@@ -23,6 +26,6 @@ class TestBarkeep < Test::Unit::TestCase
23
26
  <dd class="close"><a href="#" onclick="c = document.getElementById('barkeep'); c.parentNode.removeChild(c); return false" title="Close me!">&times;</a></dd>
24
27
  </dl>
25
28
  )
26
- assert_equal expected.gsub(/\n\s+/, ''), render_barkeep
29
+ assert_equal expected.gsub(/\s+/, ''), render_barkeep.gsub(/\s+/, '')
27
30
  end
28
31
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: barkeep
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 25
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 0
10
- version: 0.1.0
9
+ - 1
10
+ version: 0.1.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - PatientsLikeMe
@@ -15,13 +15,13 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-03-20 00:00:00 -04:00
18
+ date: 2011-10-07 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
22
  name: grit
23
23
  prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
24
+ version_requirements: &id001 !ruby/object:Gem::Requirement
25
25
  none: false
26
26
  requirements:
27
27
  - - ">="
@@ -31,11 +31,11 @@ dependencies:
31
31
  - 0
32
32
  version: "0"
33
33
  type: :runtime
34
- version_requirements: *id001
34
+ requirement: *id001
35
35
  - !ruby/object:Gem::Dependency
36
36
  name: json
37
37
  prerelease: false
38
- requirement: &id002 !ruby/object:Gem::Requirement
38
+ version_requirements: &id002 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ">="
@@ -45,43 +45,11 @@ dependencies:
45
45
  - 0
46
46
  version: "0"
47
47
  type: :runtime
48
- version_requirements: *id002
49
- - !ruby/object:Gem::Dependency
50
- name: activesupport
51
- prerelease: false
52
- requirement: &id003 !ruby/object:Gem::Requirement
53
- none: false
54
- requirements:
55
- - - "="
56
- - !ruby/object:Gem::Version
57
- hash: 21
58
- segments:
59
- - 2
60
- - 3
61
- - 11
62
- version: 2.3.11
63
- type: :development
64
- version_requirements: *id003
65
- - !ruby/object:Gem::Dependency
66
- name: actionpack
67
- prerelease: false
68
- requirement: &id004 !ruby/object:Gem::Requirement
69
- none: false
70
- requirements:
71
- - - "="
72
- - !ruby/object:Gem::Version
73
- hash: 21
74
- segments:
75
- - 2
76
- - 3
77
- - 11
78
- version: 2.3.11
79
- type: :development
80
- version_requirements: *id004
48
+ requirement: *id002
81
49
  - !ruby/object:Gem::Dependency
82
50
  name: mocha
83
51
  prerelease: false
84
- requirement: &id005 !ruby/object:Gem::Requirement
52
+ version_requirements: &id003 !ruby/object:Gem::Requirement
85
53
  none: false
86
54
  requirements:
87
55
  - - ">="
@@ -93,11 +61,11 @@ dependencies:
93
61
  - 12
94
62
  version: 0.9.12
95
63
  type: :development
96
- version_requirements: *id005
64
+ requirement: *id003
97
65
  - !ruby/object:Gem::Dependency
98
66
  name: shoulda
99
67
  prerelease: false
100
- requirement: &id006 !ruby/object:Gem::Requirement
68
+ version_requirements: &id004 !ruby/object:Gem::Requirement
101
69
  none: false
102
70
  requirements:
103
71
  - - ">="
@@ -107,11 +75,11 @@ dependencies:
107
75
  - 0
108
76
  version: "0"
109
77
  type: :development
110
- version_requirements: *id006
78
+ requirement: *id004
111
79
  - !ruby/object:Gem::Dependency
112
80
  name: bundler
113
81
  prerelease: false
114
- requirement: &id007 !ruby/object:Gem::Requirement
82
+ version_requirements: &id005 !ruby/object:Gem::Requirement
115
83
  none: false
116
84
  requirements:
117
85
  - - ~>
@@ -123,11 +91,11 @@ dependencies:
123
91
  - 0
124
92
  version: 1.0.0
125
93
  type: :development
126
- version_requirements: *id007
94
+ requirement: *id005
127
95
  - !ruby/object:Gem::Dependency
128
96
  name: jeweler
129
97
  prerelease: false
130
- requirement: &id008 !ruby/object:Gem::Requirement
98
+ version_requirements: &id006 !ruby/object:Gem::Requirement
131
99
  none: false
132
100
  requirements:
133
101
  - - ~>
@@ -139,11 +107,11 @@ dependencies:
139
107
  - 2
140
108
  version: 1.5.2
141
109
  type: :development
142
- version_requirements: *id008
110
+ requirement: *id006
143
111
  - !ruby/object:Gem::Dependency
144
112
  name: rcov
145
113
  prerelease: false
146
- requirement: &id009 !ruby/object:Gem::Requirement
114
+ version_requirements: &id007 !ruby/object:Gem::Requirement
147
115
  none: false
148
116
  requirements:
149
117
  - - ">="
@@ -153,7 +121,7 @@ dependencies:
153
121
  - 0
154
122
  version: "0"
155
123
  type: :development
156
- version_requirements: *id009
124
+ requirement: *id007
157
125
  description: an extensible developer's status bar to track your current deployed commit & more
158
126
  email: open_source@patientslikeme.com
159
127
  executables: []