bard-staging_banner 0.1.0 → 0.3.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.
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