rack-dev-mark 0.5.1 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NDI0NDVjZGE2NGU1YzViZTZiM2IxM2U0NzEwNmFiMGNmYzVjN2UzNg==
4
+ MzFjOWI5ZjJlNDdiODE0ZWY3NDM3NzE2NjdkODk2OGI3MWNiZDBiOQ==
5
5
  data.tar.gz: !binary |-
6
- YTEyOTVhMWEzZDg1ZGE2OWM1ZGUxMDk3MGJiMTIyMzM3NzVlY2NmOA==
6
+ YmZkNjY3MjZlMmRiZTk3NTU4N2Q5YzMyYWNlNWIwM2U4ZTg1MzQ1NQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NjVhODM5ZThiOGUzMjE2MjYzZWY4NjgzMGFmYWY5YjEyODcxZDRhODdjYzJk
10
- NTBjMTdlMDU4MmViNThiZTU4NGIxZWE2NDdjY2IxYmE1NTdmMWUyM2U4N2Qw
11
- Njk2YWQxOGQzZDJjYjEyYTNlMmRmMjYzMmQxYTZhNTk4YTQwOTQ=
9
+ YjM4ZDUzM2Y1N2FmMDJlYjBkNzQ3MjkyY2U3NzVlZDZiOWJiZTQzOTU1ZjIy
10
+ ZTgwNjgxNmVkYmU2ZTI3ZTZhMmZhY2FjYzE0ZWM1Nzc2M2NiYTlmZjUyNTI1
11
+ NDE4OTVhZWQwMDdhOWY3YWJhZGQ3ODE5MmU5NzYyZDNhNGRmMTc=
12
12
  data.tar.gz: !binary |-
13
- ZmRiMjhlMDVmOGQ5MzM0N2ZjMTQ5YjAzNjM3MTY2M2NkNGMyMTc1OTdlYjFj
14
- YWY3MzczNjAwNDAxOWZkOWRhODgxOTUwNTJmMjUyZTNmNWZiMzllNzU2MWNl
15
- OTRkOGYwMDcxYjE1ZTM5ZmY5ZTgyMzVlZmQxOTc2NmZlYzFmYmQ=
13
+ ZWI3Mzc0NTk3M2VlNzhjNmM1MDJjNTA5NzJhZjEzYzI2ZDBkNjYzMzkyMzI2
14
+ NDg2MjlkZDNmMzY3NzYyMWM3YjEzYjcwOGRjZTZlNDEzNzU4YTk2ZmVjYzU4
15
+ MjhlNTg2YTc2NGM2YzYzMTgyMjM3MDg0YjNhODNkMmM4MTgxYjA=
data/README.md CHANGED
@@ -1,9 +1,13 @@
1
1
  # rack-dev-mark
2
2
 
3
- [![Gem Version](https://badge.fury.io/rb/rack-dev-mark.svg)](http://badge.fury.io/rb/rack-dev-mark) [![Build Status](https://secure.travis-ci.org/dtaniwaki/rack-dev-mark.png)](http://travis-ci.org/dtaniwaki/rack-dev-mark) [![Coverage Status](https://coveralls.io/repos/dtaniwaki/rack-dev-mark/badge.png)](https://coveralls.io/r/dtaniwaki/rack-dev-mark) [![Code Climate](https://codeclimate.com/github/dtaniwaki/rack-dev-mark.png)](https://codeclimate.com/github/dtaniwaki/rack-dev-mark)
3
+ [![Gem Version][gem-image]][gem-link]
4
+ [![Dependency Status][deps-image]][deps-link]
5
+ [![Build Status][build-image]][build-link]
6
+ [![Coverage Status][cov-image]][cov-link]
7
+ [![Code Climate][gpa-image]][gpa-link]
4
8
 
5
9
  Differentiate development environment from production.
6
- You can choose [themes](lib/rack/dev-mark/theme/README.md) to differentiate the page.
10
+ You can choose [themes](THEME.md) to differentiate the page.
7
11
 
8
12
  ## Screenshot
9
13
 
@@ -140,7 +144,7 @@ module MyApp
140
144
  end
141
145
  ```
142
146
 
143
- You can add any combination of themes. See more about [themes](lib/rack/dev-mark/theme/README.md).
147
+ You can add any combination of themes. See more about [themes](THEME.md).
144
148
 
145
149
  ## Contributing
146
150
 
@@ -153,3 +157,18 @@ You can add any combination of themes. See more about [themes](lib/rack/dev-mark
153
157
  ## Copyright
154
158
 
155
159
  Copyright (c) 2014 Daisuke Taniwaki. See [LICENSE](LICENSE) for details.
160
+
161
+
162
+
163
+
164
+ [gem-image]: https://badge.fury.io/rb/rack-dev-mark.svg
165
+ [gem-link]: http://badge.fury.io/rb/rack-dev-mark
166
+ [build-image]: https://secure.travis-ci.org/dtaniwaki/rack-dev-mark.png
167
+ [build-link]: http://travis-ci.org/dtaniwaki/rack-dev-mark
168
+ [deps-image]: https://gemnasium.com/dtaniwaki/rack-dev-mark.svg
169
+ [deps-link]: https://gemnasium.com/dtaniwaki/rack-dev-mark
170
+ [cov-image]: https://coveralls.io/repos/dtaniwaki/rack-dev-mark/badge.png
171
+ [cov-link]: https://coveralls.io/r/dtaniwaki/rack-dev-mark
172
+ [gpa-image]: https://codeclimate.com/github/dtaniwaki/rack-dev-mark.png
173
+ [gpa-link]: https://codeclimate.com/github/dtaniwaki/rack-dev-mark
174
+
@@ -24,9 +24,19 @@ end
24
24
 
25
25
  Insert the environment string into tags or attributes.
26
26
 
27
- e.g.
27
+ ### e.g.
28
28
 
29
- `<div data-title="foo">foo</div>` can be `<div data-title="(env) foo">foo</div>`
29
+ #### by tag name
30
+
31
+ `Rack::DevMark::Theme::Tag.new(attribute: 'data-title')`
32
+
33
+ `<div data-title="foo">foo</div>` will be `<div data-title="(env) foo">foo</div>`
34
+
35
+ #### by attribute
36
+
37
+ `Rack::DevMark::Theme::Tag.new(name: 'h1')`
38
+
39
+ `<h1>foo</h1>` will be `<h1="foo">(env) foo</h1>`
30
40
 
31
41
  ### options
32
42
 
@@ -40,13 +50,11 @@ e.g.
40
50
 
41
51
  ## title
42
52
 
43
- Just add the environment string into the page title.
44
-
45
- e.g.
53
+ Subclass of tag theme specifically made for title tag. It just adds the environment string into the page title.
46
54
 
47
55
  `My Homepage` on development env will be `(development) My Homepage`
48
56
 
49
- options are the same as tag theme.
57
+ ![title](misc/theme/title.png)
50
58
 
51
59
  ### options
52
60
 
@@ -58,7 +66,15 @@ options are the same as tag theme.
58
66
 
59
67
  ["Fork Me on GitHub" like ribbon](https://github.com/simonwhitaker/github-fork-ribbon-css) originally created by [simonwhitaker](https://github.com/simonwhitaker)
60
68
 
61
- ![github_fork_ribbon](screenshots/github_fork_ribbon.png)
69
+ It shows a banner of the environment on the ribbon.
70
+
71
+ ![github_fork_ribbon](misc/theme/github_fork_ribbon.png)
72
+
73
+ It also shows deployment revision and timestamp on the tooltip if available.
74
+
75
+ ![github_fork_ribbon tooltip](misc/theme/github_fork_ribbon_tooltip.png)
76
+
77
+ Click the banner to remove it temporarily.
62
78
 
63
79
  ### options
64
80
 
@@ -22,6 +22,14 @@ module Rack
22
22
  def self.revision=(revision)
23
23
  @revision = revision
24
24
  end
25
+
26
+ def self.timestamp
27
+ @timestamp ||= (::File.open('REVISION') { |f| f.ctime } rescue nil)
28
+ end
29
+
30
+ def self.timestamp=(timestamp)
31
+ @timestamp = timestamp
32
+ end
25
33
  end
26
34
  end
27
35
 
@@ -8,7 +8,7 @@ module Rack
8
8
  @app = app
9
9
  @themes = [themes].flatten.map do |theme|
10
10
  theme = theme.is_a?(Symbol) ? Rack::DevMark::Theme.const_get(camelize(theme.to_s)).new : theme
11
- theme.setup Rack::DevMark.env, Rack::DevMark.revision
11
+ theme.setup Rack::DevMark.env, Rack::DevMark.revision, Rack::DevMark.timestamp
12
12
  theme
13
13
  end
14
14
  end
@@ -2,15 +2,16 @@ module Rack
2
2
  module DevMark
3
3
  module Theme
4
4
  class Base
5
- attr_reader :env, :revision
5
+ attr_reader :env, :revision, :timestamp
6
6
 
7
7
  def initialize(*args)
8
8
  raise RuntimeError, 'Abstract class can not be instantiated' if self.class == Rack::DevMark::Theme::Base
9
9
  end
10
10
 
11
- def setup(env, revision)
11
+ def setup(env, revision, timestamp)
12
12
  @env = env
13
13
  @revision = revision
14
+ @timestamp = timestamp
14
15
  end
15
16
 
16
17
  def insert_into(html)
@@ -7,18 +7,23 @@ module Rack
7
7
  class GithubForkRibbon < Base
8
8
  def initialize(options = {})
9
9
  @options = options
10
+ super
10
11
  end
11
12
 
12
13
  def insert_into(html)
13
14
  position = @options[:position] || 'left'
14
15
  color = @options[:color] || 'red'
15
16
  fixed = @options[:fixed] ? ' fixed' : ''
17
+ title = []
18
+ title << revision if revision.to_s != ''
19
+ title << timestamp if timestamp.to_s != ''
20
+ title = title.join("&#10;")
16
21
  s = <<-EOS
17
22
  #{stylesheet_link_tag "github-fork-ribbon-css/gh-fork-ribbon.css"}
18
23
  <!--[if lt IE 9]>
19
24
  #{stylesheet_link_tag "github-fork-ribbon-css/gh-fork-ribbon.ie.css"}
20
25
  <![endif]-->
21
- <div class="github-fork-ribbon-wrapper #{position}#{fixed}" onClick="this.style.display='none'" title="#{revision}"><div class="github-fork-ribbon #{color}"><span class="github-fork-ribbon-text">#{env}</span></div></div>
26
+ <div class="github-fork-ribbon-wrapper #{position}#{fixed}" onClick="this.style.display='none'" title="#{title}"><div class="github-fork-ribbon #{color}"><span class="github-fork-ribbon-text">#{env}</span></div></div>
22
27
  EOS
23
28
  html.sub %r{(<body[^>]*>)}i, "\\1#{s.strip}"
24
29
  end
@@ -6,6 +6,7 @@ module Rack
6
6
  class Tag < Base
7
7
  def initialize(options = {})
8
8
  @options = options
9
+ super
9
10
  end
10
11
 
11
12
  def insert_into(html)
@@ -1,5 +1,5 @@
1
1
  module Rack
2
2
  module DevMark
3
- VERSION = '0.5.1'
3
+ VERSION = '0.6.0'
4
4
  end
5
5
  end
Binary file
@@ -9,7 +9,7 @@ describe Rack::DevMark::Theme::Base do
9
9
  describe "subclass" do
10
10
  subject { Class.new(Rack::DevMark::Theme::Base).new }
11
11
  it "sets up" do
12
- subject.setup 'env', 'rev'
12
+ subject.setup 'env', 'rev', 'time'
13
13
  expect(subject.env).to eq('env')
14
14
  expect(subject.revision).to eq('rev')
15
15
  end
@@ -26,6 +26,13 @@ describe Rack::DevMark::Theme::Base do
26
26
  expect(subject.send(:gsub_tag_content, input, 'a', &lambda{ |v| 'replaced' })).to eq(output)
27
27
  end
28
28
  end
29
+ context "for nested tags" do
30
+ let(:input) { %Q|<body><h1>head</h1><a href="something"><span>x</span></a><span>y</span></div>| }
31
+ let(:output) { %Q|<body><h1>head</h1><a href="something"><span>x</span></a><span>y</span></div>| }
32
+ it "does not replace a string" do
33
+ expect(subject.send(:gsub_tag_content, input, 'a', &lambda{ |v| 'replaced' })).to eq(output)
34
+ end
35
+ end
29
36
  end
30
37
  describe "#gsub_tag_attribute" do
31
38
  let(:input) { %Q|<body><h1>head</h1><a href="something" data-title="x" data-body="x">x</a><span data-title="y">y</span></div>| }
@@ -9,7 +9,7 @@ describe Rack::DevMark::Theme::GithubForkRibbon do
9
9
  <!--[if lt IE 9]>
10
10
  <style>#{read_stylesheet "github-fork-ribbon-css/gh-fork-ribbon.ie.css"}</style>
11
11
  <![endif]-->
12
- <div class="github-fork-ribbon-wrapper left" onClick="this.style.display='none'" title="rev"><div class="github-fork-ribbon red"><span class="github-fork-ribbon-text">env</span></div></div>body</body></html>
12
+ <div class="github-fork-ribbon-wrapper left" onClick="this.style.display='none'" title="rev&#10;time"><div class="github-fork-ribbon red"><span class="github-fork-ribbon-text">env</span></div></div>body</body></html>
13
13
  EOS
14
14
  s.strip
15
15
  end
@@ -24,7 +24,7 @@ describe Rack::DevMark::Theme::GithubForkRibbon do
24
24
  <!--[if lt IE 9]>
25
25
  <style>#{read_stylesheet "github-fork-ribbon-css/gh-fork-ribbon.ie.css"}</style>
26
26
  <![endif]-->
27
- <div class="github-fork-ribbon-wrapper right" onClick="this.style.display='none'" title="rev"><div class="github-fork-ribbon red"><span class="github-fork-ribbon-text">env</span></div></div>body</body></html>
27
+ <div class="github-fork-ribbon-wrapper right" onClick="this.style.display='none'" title="rev&#10;time"><div class="github-fork-ribbon red"><span class="github-fork-ribbon-text">env</span></div></div>body</body></html>
28
28
  EOS
29
29
  s.strip
30
30
  end
@@ -40,7 +40,7 @@ describe Rack::DevMark::Theme::GithubForkRibbon do
40
40
  <!--[if lt IE 9]>
41
41
  <style>#{read_stylesheet "github-fork-ribbon-css/gh-fork-ribbon.ie.css"}</style>
42
42
  <![endif]-->
43
- <div class="github-fork-ribbon-wrapper left" onClick="this.style.display='none'" title="rev"><div class="github-fork-ribbon orange"><span class="github-fork-ribbon-text">env</span></div></div>body</body></html>
43
+ <div class="github-fork-ribbon-wrapper left" onClick="this.style.display='none'" title="rev&#10;time"><div class="github-fork-ribbon orange"><span class="github-fork-ribbon-text">env</span></div></div>body</body></html>
44
44
  EOS
45
45
  s.strip
46
46
  end
@@ -56,7 +56,7 @@ describe Rack::DevMark::Theme::GithubForkRibbon do
56
56
  <!--[if lt IE 9]>
57
57
  <style>#{read_stylesheet "github-fork-ribbon-css/gh-fork-ribbon.ie.css"}</style>
58
58
  <![endif]-->
59
- <div class="github-fork-ribbon-wrapper left fixed" onClick="this.style.display='none'" title="rev"><div class="github-fork-ribbon red"><span class="github-fork-ribbon-text">env</span></div></div>body</body></html>
59
+ <div class="github-fork-ribbon-wrapper left fixed" onClick="this.style.display='none'" title="rev&#10;time"><div class="github-fork-ribbon red"><span class="github-fork-ribbon-text">env</span></div></div>body</body></html>
60
60
  EOS
61
61
  s.strip
62
62
  end
@@ -4,7 +4,7 @@ RSpec.shared_context "theme context" do
4
4
  end
5
5
 
6
6
  before do
7
- subject.setup 'env', 'rev'
7
+ subject.setup 'env', 'rev', 'time'
8
8
  end
9
9
  end
10
10
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-dev-mark
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daisuke Taniwaki
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-02 00:00:00.000000000 Z
11
+ date: 2014-07-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack
@@ -79,6 +79,7 @@ files:
79
79
  - LICENSE
80
80
  - README.md
81
81
  - Rakefile
82
+ - THEME.md
82
83
  - gemfiles/gemfile
83
84
  - gemfiles/rack.1.1.x.gemfile
84
85
  - gemfiles/rack.1.2.x.gemfile
@@ -94,10 +95,8 @@ files:
94
95
  - lib/rack/dev-mark/middleware.rb
95
96
  - lib/rack/dev-mark/railtie.rb
96
97
  - lib/rack/dev-mark/theme.rb
97
- - lib/rack/dev-mark/theme/README.md
98
98
  - lib/rack/dev-mark/theme/base.rb
99
99
  - lib/rack/dev-mark/theme/github_fork_ribbon.rb
100
- - lib/rack/dev-mark/theme/screenshots/github_fork_ribbon.png
101
100
  - lib/rack/dev-mark/theme/tag.rb
102
101
  - lib/rack/dev-mark/theme/title.rb
103
102
  - lib/rack/dev-mark/utils.rb
@@ -105,6 +104,9 @@ files:
105
104
  - misc/screenshot-development.png
106
105
  - misc/screenshot-production.png
107
106
  - misc/screenshot.gif
107
+ - misc/theme/github_fork_ribbon.png
108
+ - misc/theme/github_fork_ribbon_tooltip.png
109
+ - misc/theme/title.png
108
110
  - rack-dev-mark.gemspec
109
111
  - spec/generators/rack/dev-mark/install_generator_spec.rb
110
112
  - spec/rack/dev-mark/middleware_spec.rb