bard-staging_banner 0.1.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 3cea06ef3032012d955c2564856635c3cf1b9bcb
4
- data.tar.gz: 58c35d7019a04c6dce4831453f17e84454c4c5a7
2
+ SHA256:
3
+ metadata.gz: 2575c1a7289bff8ecb865ed511d0a6f8bb3bdf0648aee3cf4f64b2b7d0840542
4
+ data.tar.gz: 1448e0ae9c1d8fcdbcbd5eb6cc65efb5210f15c36884b4f568675e156659047d
5
5
  SHA512:
6
- metadata.gz: cf858ac4b951ef3dee086ee0c45499dc0124fb3d7a93dfb2656b49f95c3ba190f91ef231b755521e7bd6a2273f4694e423802b0f78eeb096cffd353b3da0c169
7
- data.tar.gz: 2b0f4195bf65b92868a7c76e38684e8e98f0309fb71f89700b57a52f33a29a5f71f1367d8aae55ce29441eae62c75e38b9a3757a531283a2e5c7a04c23984408
6
+ metadata.gz: 29ad9d47cdbf3ed0e72b05aa4042af9560ecd7a14ac00990c22ce96f7fbb598a9a81f36f46840702db364aba9f97156d68b828a3863627a6357618f38da5a8f5
7
+ data.tar.gz: 5347e2b4cc34326830526d030c2444ab3b17d8ff5493f35fd4d9b116aa5fa27d5d59290fdaf43870673b81421a4fbccb0831bc78fe059dab5a71d3e3ffe4b20f
data/.gitignore CHANGED
@@ -15,3 +15,4 @@ spec/reports
15
15
  test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
+ .ruby-version
@@ -15,5 +15,7 @@ Gem::Specification.new do |gem|
15
15
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
16
16
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
17
17
  gem.require_paths = ["lib"]
18
+
19
+ gem.add_dependency "letter_opener_web"
18
20
  end
19
21
 
@@ -7,7 +7,7 @@ module Bard
7
7
 
8
8
  def call env
9
9
  @status, @headers, @body = @app.call(env)
10
- return [@status, @headers, @body] unless html?
10
+ return [@status, @headers, @body] unless html? && !letter_opener_web?(env)
11
11
 
12
12
  response = Rack::Response.new([], @status, @headers)
13
13
  @body.each do |fragment|
@@ -24,8 +24,66 @@ module Bard
24
24
  @headers["Content-Type"] =~ /html/
25
25
  end
26
26
 
27
+ def letter_opener_web? env
28
+ env["SCRIPT_NAME"].start_with?("/mails")
29
+ end
30
+
31
+ def mail_count
32
+ LetterOpenerWeb::Letter.search.length
33
+ end
34
+
27
35
  def inject response
28
- markup = %(<div id="staging-banner" style="background: yellow; color: black; position: fixed; bottom: 0; left: 0; width: 100%; font: bold 16pt Arial; line-height: 1.5em; text-align: center; z-index: 999;">You are on the Staging Site</div>)
36
+ count = mail_count
37
+ mail_link = %(<a href="/mails">(#{mail_count})</a>) if count > 0
38
+ html = %w[upper-left upper-right bottom-left bottom-right].map do |corner|
39
+ %(<div class="staging-banner" id="#{corner}">Staging #{mail_link}</div>)
40
+ end.join("\n")
41
+
42
+ markup = html + <<~CSS
43
+ <style>
44
+ .staging-banner {
45
+ display: flex;
46
+ justify-content: center;
47
+ align-items: flex-end;
48
+ padding: 30px 0 10px;
49
+ width: 200px;
50
+ background: yellow;
51
+ color: #0f0f0f;
52
+ position: fixed;
53
+ z-index: 99999;
54
+ font-weight: 900;
55
+ font-size: 1.2em;
56
+ text-transform: uppercase;
57
+ text-align: center;
58
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.25);
59
+ transform-origin: 50% 50%;
60
+ }
61
+
62
+ #upper-left {
63
+ top: 0;
64
+ left: 0;
65
+ transform: rotate(-45deg) translate(-52px, -60px);
66
+ }
67
+
68
+ #upper-right {
69
+ top: 0;
70
+ right: 0;
71
+ transform: rotate(45deg) translate(52px, -60px);
72
+ }
73
+
74
+ #bottom-left {
75
+ bottom: 0;
76
+ left: 0;
77
+ transform: rotate(225deg) translate(52px, -60px);
78
+ }
79
+
80
+ #bottom-right {
81
+ bottom: 0;
82
+ right: 0;
83
+ transform: rotate(-225deg) translate(-52px, -60px);
84
+ }
85
+ </style>
86
+ CSS
29
87
  response.gsub(%r{</body>}, "#{markup}</body>")
30
88
  end
31
89
  end
@@ -1,5 +1,5 @@
1
1
  module Bard
2
2
  module StagingBanner
3
- VERSION = "0.1.0"
3
+ VERSION = "0.3.0"
4
4
  end
5
5
  end
@@ -1,10 +1,22 @@
1
1
  require "bard/staging_banner/version"
2
2
  require "bard/staging_banner/middleware"
3
+ require "letter_opener_web"
3
4
 
4
5
  module Bard
5
6
  module StagingBanner
6
7
  class Engine < ::Rails::Engine
7
- config.app_middleware.use Middleware if Rails.env.staging?
8
+ if Rails.env.staging?
9
+ config.app_middleware.use Middleware
10
+ end
11
+
12
+ if !Rails.env.production?
13
+ config.action_mailer.delivery_method = :letter_opener
14
+ initializer "bard-staging_banner.mount_letter_opener_web" do |app|
15
+ app.routes.append do
16
+ mount LetterOpenerWeb::Engine, at: "/mails"
17
+ end
18
+ end
19
+ end
8
20
  end
9
21
  end
10
22
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bard-staging_banner
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Micah Geisel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-12 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2022-12-29 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: letter_opener_web
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  description: Middleware to inject an annoying banner on every page in the staging
14
28
  environment
15
29
  email:
@@ -18,7 +32,7 @@ executables: []
18
32
  extensions: []
19
33
  extra_rdoc_files: []
20
34
  files:
21
- - .gitignore
35
+ - ".gitignore"
22
36
  - Gemfile
23
37
  - LICENSE.txt
24
38
  - README.md
@@ -37,17 +51,16 @@ require_paths:
37
51
  - lib
38
52
  required_ruby_version: !ruby/object:Gem::Requirement
39
53
  requirements:
40
- - - '>='
54
+ - - ">="
41
55
  - !ruby/object:Gem::Version
42
56
  version: '0'
43
57
  required_rubygems_version: !ruby/object:Gem::Requirement
44
58
  requirements:
45
- - - '>='
59
+ - - ">="
46
60
  - !ruby/object:Gem::Version
47
61
  version: '0'
48
62
  requirements: []
49
- rubyforge_project:
50
- rubygems_version: 2.1.10
63
+ rubygems_version: 3.1.6
51
64
  signing_key:
52
65
  specification_version: 4
53
66
  summary: Middleware to inject an annoying banner on every page in the staging environment