gravity_mailbox 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
2
  SHA256:
3
- metadata.gz: 72867c424724e7388ae25f6eb519d509cfaf7bc6deb90de35eaa766bd6350e40
4
- data.tar.gz: 4d0a7c8ca000e49aed8a878e5bcc402896ae61a97981acf71fcbdbac29d59bad
3
+ metadata.gz: 570d181cfe915276f4974ccfcf0d3e155201ab1b801ace546f8f3f492072640d
4
+ data.tar.gz: 4bfa2c3ae452251cd56fd5cbcfb8da0dda6b3ec967df6310cb192881dc23c14f
5
5
  SHA512:
6
- metadata.gz: 7b24028b7fc05777f0e727f0f4677c990226c255d705caba4a5bcf108e41ae969628faa0545e2f05c6feaab23452691bf016bab6903eff102463e2e7c5a7be53
7
- data.tar.gz: 8824afef7b5bf9618186afc88371da4d3b3d275bed3d574795aa667745f3ae7fd9bd71d18deee7b86860991e370357f627f5963b5d8e969803296ab951a0801e
6
+ metadata.gz: 38e58ed90b91cd01fd22b4ce0d6643a1a747fc195681c83d43a8831ba73f956ff1fca06c60f197fa38443f6c4cbf0c40c6c2b2dd0de150c8eb9b60e3f9e22a85
7
+ data.tar.gz: 3cb194679c08136d8ab6f4957a5651e346dff20c710b54f28649e9db3d82f4a0080ccd64eddfcc052d71783e49cd2e98b44ea8ec033d5839d28a1d659524279d
data/README.md CHANGED
@@ -1,4 +1,9 @@
1
- # GravityMailbox
1
+ [![Gem Version](https://badge.fury.io/rb/gravity_mailbox.svg)](https://badge.fury.io/rb/gravity_mailbox)
2
+ [![Ruby](https://github.com/petalmd/gravity_mailbox/actions/workflows/main.yml/badge.svg)](https://github.com/petalmd/gravity_mailbox/actions/workflows/main.yml)
3
+
4
+ <p align="center">
5
+ <img src="https://user-images.githubusercontent.com/7858787/213794938-f55aef73-ce49-45b5-a388-d16f2435de15.png" />
6
+ </p>
2
7
 
3
8
  Development tools that aim to make it simple to visualize mail sent by your Rails app directly through your Rails app.
4
9
  It works in development and also in a staging environment by using the `Rails.cache` to store the mails.
@@ -31,7 +36,9 @@ config.action_mailer.perform_deliveries = true
31
36
  * Send mails
32
37
  * Go to http://localhost:3000/gravity_mailbox to see the mails.
33
38
 
34
- <img width="520" alt="image" src="https://user-images.githubusercontent.com/7858787/201705867-74888ae2-fa6d-4678-a911-134ae5527100.png">
39
+ <p align="center">
40
+ <img width="520" alt="image" src="https://user-images.githubusercontent.com/7858787/213796119-a22ac9da-3943-4cd0-95e6-2fb724de999a.png">
41
+ </p>
35
42
 
36
43
  ## Development
37
44
 
@@ -16,6 +16,16 @@ module GravityMailbox
16
16
  render plain: email_body
17
17
  end
18
18
 
19
+ def download_eml
20
+ @mail = RailsCacheDeliveryMethod.mail(params[:id])
21
+ send_data @mail.to_s, filename: "#{@mail.subject}.eml"
22
+ end
23
+
24
+ def delete
25
+ RailsCacheDeliveryMethod.delete(params[:id])
26
+ redirect_to '/gravity_mailbox'
27
+ end
28
+
19
29
  def delete_all
20
30
  RailsCacheDeliveryMethod.delete_all
21
31
  redirect_to '/gravity_mailbox'
@@ -24,6 +24,17 @@ module GravityMailbox
24
24
  end.sort_by(&:date).reverse
25
25
  end
26
26
 
27
+ def self.mail(id)
28
+ Mail.new(Rails.cache.read("#{KEY_PREFIX}#{id}"))
29
+ end
30
+
31
+ def self.delete(id)
32
+ Rails.cache.delete("#{KEY_PREFIX}#{id}")
33
+ actual_list = mail_keys
34
+ actual_list.delete("#{KEY_PREFIX}#{id}")
35
+ Rails.cache.write(MAILS_LIST_KEY, actual_list)
36
+ end
37
+
27
38
  def self.delete_all
28
39
  Rails.cache.delete_matched("#{KEY_PREFIX}*")
29
40
  end
@@ -17,6 +17,8 @@ module GravityMailbox
17
17
  app.routes.prepend do
18
18
  get '/gravity_mailbox' => 'gravity_mailbox/mailbox#index', internal: true
19
19
  post '/gravity_mailbox/delete_all' => 'gravity_mailbox/mailbox#delete_all', internal: true
20
+ get '/gravity_mailbox/download_eml' => 'gravity_mailbox/mailbox#download_eml', internal: true
21
+ post '/gravity_mailbox/delete' => 'gravity_mailbox/mailbox#delete', internal: true
20
22
  end
21
23
  end
22
24
  end
@@ -1,5 +1,51 @@
1
- <div class="box <%= mail.message_id == params[:id] ? 'has-background-success-light' : '' %>">
2
- <strong>Subject: </strong><%= link_to mail.subject, "?id=#{mail.message_id}" %> <br>
3
- <strong>To: </strong><%= mail.to.join(', ') %><br>
4
- <strong>Date: </strong><%= I18n.l(mail.date, format: :long) %><br>
5
- </div>
1
+
2
+ <div class="mail-list-item <%= mail.message_id == params[:id] ? 'selected-mail' : '' %>" data-mail-id="<%= mail.message_id %>">
3
+ <div class="level" style="margin-bottom: 12px">
4
+ <div class="level-left" style="width: 80%">
5
+ <span class="has-text-weight-semibold mail-subject"><%= mail.subject %></span>
6
+ </div>
7
+ <div class="level-right">
8
+ <div class="dropdown is-right">
9
+ <div class="dropdown-trigger" style="width: 24px; height: 24px;">
10
+ <span class="icon">
11
+ <ion-icon name="ellipsis-vertical-outline"></ion-icon>
12
+ </span>
13
+ </div>
14
+ <div class="dropdown-menu" id="dropdown-menu" role="menu">
15
+ <div class="dropdown-content">
16
+ <div class="dropdown-item">
17
+ <%= link_to "/gravity_mailbox/download_eml?id=#{mail.message_id}", class: ['link-button'] do %>
18
+ <span class="icon-text">
19
+ <span class="icon has-text-centered">
20
+ <ion-icon name="download-outline"></ion-icon>
21
+ </span>
22
+ <span>Download .eml</span>
23
+ </span>
24
+ <% end %>
25
+ </div>
26
+
27
+ <div class="dropdown-item">
28
+ <%= button_to "/gravity_mailbox/delete?id=#{mail.message_id}", class: ['link-button'], method: :post do %>
29
+ <span class="icon-text">
30
+ <span class="icon has-text-centered">
31
+ <ion-icon name="trash-outline"></ion-icon>
32
+ </span>
33
+ <span>Delete</span>
34
+ </span>
35
+ <% end %>
36
+ </div>
37
+ </div>
38
+ </div>
39
+ </div>
40
+ </div>
41
+ </div>
42
+
43
+ <% mail.to.each do |email_to| %>
44
+ <%= content_tag(:p, email_to, class: ['has-text-weight-light'], style: "font-size: 0.85rem") %>
45
+ <% end %>
46
+ <div class="has-text-right">
47
+ <span class="is-size-7" title="<%= I18n.l(mail.date, format: :long) %>">
48
+ <%= time_ago_in_words(mail.date) %>
49
+ </span>
50
+ </div>
51
+ </div>
@@ -1,5 +1,5 @@
1
1
  <% content_for :style do %>
2
- body, iframe {
2
+ body, iframe {
3
3
  height: 100vh;
4
4
  }
5
5
 
@@ -7,20 +7,167 @@
7
7
  border: 0;
8
8
  width: 100%;
9
9
  }
10
+
11
+ .navbar {
12
+ background-color: #007bff !important;
13
+ }
14
+
15
+ .navbar-brand > h1 {
16
+ font-family: 'Righteous', cursive !important;
17
+ }
18
+
19
+ .mail-list-column {
20
+ height: 100vh;
21
+ overflow: scroll;
22
+ min-width: 20em;
23
+ }
24
+
25
+ .link-button {
26
+ background: none!important;
27
+ border: none;
28
+ padding: 0!important;
29
+ font-family: arial, sans-serif;
30
+ color: #000;
31
+ cursor: pointer;
32
+ width: 100%;
33
+ text-align: left;
34
+ }
35
+
36
+ .mail-list-item {
37
+ background-color: #fff!important;
38
+ padding: 1rem;
39
+ box-shadow: inset 0 -1px 0 0 rgb(100 121 143 / 12%) !important;
40
+ }
41
+
42
+ .mail-list-item.selected-mail {
43
+ background-color: #ffffff!important;
44
+ border-left: 8px solid #ed900c;
45
+ padding-left: calc(1rem - 8px);
46
+ }
47
+
48
+ .mail-list-item:hover {
49
+ cursor: pointer !important;
50
+ border-left: 8px solid lightgrey;
51
+ padding-left: calc(1rem - 8px);
52
+ }
53
+
54
+ .mail-list-item.selected-mail:hover {
55
+ border-left: 8px solid #ed900c;
56
+ }
57
+
58
+ #iframe-mail-container {
59
+ background-color: whitesmoke !important;
60
+ }
61
+
62
+ .dropdown-trigger:hover {
63
+ cursor: pointer !important;
64
+ }
65
+
66
+ .dropdown-item:hover {
67
+ background-color: whitesmoke !important;
68
+ }
10
69
  <% end %>
11
70
 
12
71
  <div class="columns mb-0 mt-0">
13
- <div class="column is-one-quarter" style="max-height: 100vh; overflow: scroll">
14
- <div class="section" style="padding: 1em;">
15
- <%= button_to 'Delete all', '/gravity_mailbox/delete_all', class: ['button', 'is-danger'], method: :post %>
72
+ <div class="column is-one-quarter pt-0 pr-0 mail-list-column">
73
+ <div class="navbar has-background-info">
74
+ <div class="navbar-brand">
75
+ <h1 class="navbar-item title is-6 has-text-white">GravityMailbox</h1>
76
+ </div>
77
+ <div class="navbar-menu">
78
+ <div class="navbar-end">
79
+ <div class="navbar-item">
80
+ <div class="dropdown is-right" id="toolbar-dropdown">
81
+ <div class="dropdown-trigger" style="width: 24px; height: 24px;">
82
+ <span class="icon has-text-white has-text-centered" aria-controls="dropdown-menu">
83
+ <ion-icon size="large" name="menu-outline"></ion-icon>
84
+ </span>
85
+ </div>
86
+ <div class="dropdown-menu" id="dropdown-menu" role="menu">
87
+ <div class="dropdown-content">
88
+ <div class="dropdown-item">
89
+ <%= button_to '/gravity_mailbox/delete_all', class: ['link-button'], method: :post do %>
90
+ <span class="icon-text">
91
+ <span class="icon has-text-centered">
92
+ <ion-icon name="trash-outline"></ion-icon>
93
+ </span>
94
+ <span>Delete all</span>
95
+ </span>
96
+ <% end %>
97
+ </div>
98
+ </div>
99
+ </div>
100
+ </div>
101
+ </div>
102
+ </div>
103
+ </div>
16
104
  </div>
17
- <% @mails.each do |mail| %>
18
- <%= render partial: 'mail', locals: { mail: mail } %>
105
+
106
+ <% @mails.each_with_index do |mail, index| %>
107
+ <%= render partial: 'mail', locals: { mail: mail, index: index } %>
19
108
  <% end %>
20
109
  </div>
21
- <div class="column pb-0 pt-0">
22
- <% if @mail %>
23
- <iframe seamless name="messageBody" src="?part=true&id=<%= params[:id] %>"></iframe>
24
- <% end %>
110
+ <div class="column pb-0 pt-0 pl-0">
111
+ <iframe id="iframe-mail-container" seamless name="messageBody" src="<%= params[:id] ? "?part=true&id=#{params[:id]}" : '' %>"></iframe>
25
112
  </div>
26
113
  </div>
114
+
115
+ <script>
116
+ function closeAllOtherDropdown(e) {
117
+ document.querySelectorAll(".dropdown").forEach((dropdown) => {
118
+ dropdown.classList.remove('is-active');
119
+ })
120
+ }
121
+
122
+ // Click on mail and change iframe src
123
+ let mailItems = document.querySelectorAll(".mail-list-item")
124
+ mailItems.forEach(mailItem => {
125
+ mailItem.addEventListener("click", () => {
126
+ document.querySelector("#iframe-mail-container").src = "/gravity_mailbox?part=true&id=" + mailItem.dataset.mailId
127
+ mailItems.forEach(mailItem => mailItem.classList.remove("selected-mail"))
128
+ mailItem.classList.add("selected-mail")
129
+ })
130
+ })
131
+
132
+ // Close all dropdowns if the user clicks outside of them
133
+ document.addEventListener("click", (e) => {
134
+ document.querySelectorAll(".dropdown").forEach((dropdown) => {
135
+ dropdown.classList.remove("is-active")
136
+ })
137
+ });
138
+
139
+ // Each mail menu dropdown
140
+ document.querySelectorAll('.dropdown-trigger').forEach((dropdown) => {
141
+ dropdown.addEventListener('click', function (e) {
142
+ closeAllOtherDropdown(e)
143
+ e.target.closest(".dropdown").classList.toggle('is-active');
144
+ e.stopPropagation();
145
+ })
146
+ })
147
+
148
+ function displayAutomaticallyTheFirstEmail() {
149
+ const mailItems = document.querySelectorAll(".mail-list-item");
150
+ if (mailItems.length) {
151
+ const mailItem = mailItems[0];
152
+ document.querySelector("#iframe-mail-container").src = "/gravity_mailbox?part=true&id=" + mailItem.dataset.mailId;
153
+ mailItem.classList.add("selected-mail");
154
+ } else {
155
+ const iframe = document.querySelector("#iframe-mail-container");
156
+
157
+ const iframeBody = iframe.contentDocument.body;
158
+ if (iframeBody) {
159
+ const p = document.createElement('p');
160
+ p.textContent = "No email received yet.";
161
+ p.style.fontFamily = "sans-serif";
162
+ p.style.fontSize = "20px";
163
+ p.style.fontWeight = "100";
164
+ iframeBody.appendChild(p);
165
+ iframeBody.style.display = "flex";
166
+ iframeBody.style.justifyContent = "center";
167
+ iframeBody.style.alignItems = "center";
168
+ }
169
+ }
170
+ }
171
+
172
+ document.addEventListener("DOMContentLoaded", displayAutomaticallyTheFirstEmail);
173
+ </script>
@@ -3,12 +3,16 @@
3
3
  <head>
4
4
  <meta name="viewport" content="width=device-width" />
5
5
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.9.4/css/bulma.min.css">
6
-
6
+ <link rel="preconnect" href="https://fonts.googleapis.com">
7
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
8
+ <link href="https://fonts.googleapis.com/css2?family=Righteous&display=swap" rel="stylesheet">
7
9
  <style>
8
10
  <%= yield :style %>
9
11
  </style>
10
12
  </head>
11
13
  <body>
12
- <%= yield %>
14
+ <%= yield %>
15
+ <script type="module" src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.esm.js"></script>
16
+ <script nomodule src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.js"></script>
13
17
  </body>
14
18
  </html>
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GravityMailbox
4
- VERSION = '0.1.0'
4
+ VERSION = '0.3.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gravity_mailbox
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
  - Jean-Francis Bastien
8
8
  autorequire:
9
- bindir: exe
9
+ bindir: bin
10
10
  cert_chain: []
11
- date: 2022-11-15 00:00:00.000000000 Z
11
+ date: 2023-01-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionmailer
@@ -38,26 +38,18 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '5.2'
41
- description: Write a longer description or delete this line.
41
+ description: Development tools that aim to make it simple to visualize mail sent by
42
+ your Rails app directly through your Rails app.
42
43
  email:
43
44
  - jfbastien@petalmd.com
44
45
  executables: []
45
46
  extensions: []
46
- extra_rdoc_files: []
47
+ extra_rdoc_files:
48
+ - LICENSE.txt
49
+ - README.md
47
50
  files:
48
- - ".github/workflows/main.yml"
49
- - ".gitignore"
50
- - ".rspec"
51
- - ".rubocop.yml"
52
- - CHANGELOG.md
53
- - Gemfile
54
- - Gemfile.lock
55
51
  - LICENSE.txt
56
52
  - README.md
57
- - Rakefile
58
- - bin/console
59
- - bin/setup
60
- - gravity_mailbox.gemspec
61
53
  - lib/gravity_mailbox.rb
62
54
  - lib/gravity_mailbox/mailbox_controller.rb
63
55
  - lib/gravity_mailbox/rails_cache_delivery_method.rb
@@ -71,8 +63,9 @@ licenses:
71
63
  - MIT
72
64
  metadata:
73
65
  homepage_uri: https://github.com/petalmd/gravity_mailbox
74
- source_code_uri: https://github.com/petalmd/gravity_mailbox
75
66
  changelog_uri: https://github.com/petalmd/gravity_mailbox/blob/main/CHANGELOG.md
67
+ source_code_uri: https://github.com/petalmd/gravity_mailbox
68
+ bug_tracker_uri: https://github.com/petalmd/gravity_mailbox/issues
76
69
  rubygems_mfa_required: 'true'
77
70
  post_install_message:
78
71
  rdoc_options: []
@@ -92,5 +85,5 @@ requirements: []
92
85
  rubygems_version: 3.0.3
93
86
  signing_key:
94
87
  specification_version: 4
95
- summary: Write a short summary, because RubyGems requires one.
88
+ summary: Visualize mail sent by your Rails app directly through your Rails app.
96
89
  test_files: []
@@ -1,18 +0,0 @@
1
- name: Ruby
2
-
3
- on: [push,pull_request]
4
-
5
- jobs:
6
- build:
7
- runs-on: ubuntu-latest
8
- steps:
9
- - uses: actions/checkout@v2
10
- - name: Set up Ruby
11
- uses: ruby/setup-ruby@v1
12
- with:
13
- ruby-version: 2.6.6
14
- - name: Run the default task
15
- run: |
16
- gem install bundler -v 2.2.3
17
- bundle install
18
- bundle exec rake
data/.gitignore DELETED
@@ -1,12 +0,0 @@
1
- /.bundle/
2
- /.yardoc
3
- /_yardoc/
4
- /coverage/
5
- /doc/
6
- /pkg/
7
- /spec/reports/
8
- /tmp/
9
-
10
- # rspec failure tracking
11
- .rspec_status
12
- .idea
data/.rspec DELETED
@@ -1,3 +0,0 @@
1
- --format documentation
2
- --color
3
- --require spec_helper
data/.rubocop.yml DELETED
@@ -1,8 +0,0 @@
1
- AllCops:
2
- NewCops: enable
3
-
4
- Layout/LineLength:
5
- Max: 120
6
-
7
- Style/Documentation:
8
- Enabled: false
data/CHANGELOG.md DELETED
@@ -1,7 +0,0 @@
1
- # Change log
2
-
3
- ## main (unreleased)
4
-
5
- ## v0.1.0 (2022-11-15)
6
-
7
- * Initial release
data/Gemfile DELETED
@@ -1,13 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- source 'https://rubygems.org'
4
-
5
- # Specify your gem's dependencies in gravity_mailbox.gemspec
6
- gemspec
7
-
8
- gem 'rake', '~> 13.0'
9
-
10
- group :test do
11
- gem 'rspec'
12
- gem 'rubocop'
13
- end
data/Gemfile.lock DELETED
@@ -1,127 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- gravity_mailbox (0.1.0)
5
- actionmailer (>= 5.2)
6
- railties (>= 5.2)
7
-
8
- GEM
9
- remote: https://rubygems.org/
10
- specs:
11
- actionmailer (6.0.5.1)
12
- actionpack (= 6.0.5.1)
13
- actionview (= 6.0.5.1)
14
- activejob (= 6.0.5.1)
15
- mail (~> 2.5, >= 2.5.4)
16
- rails-dom-testing (~> 2.0)
17
- actionpack (6.0.5.1)
18
- actionview (= 6.0.5.1)
19
- activesupport (= 6.0.5.1)
20
- rack (~> 2.0, >= 2.0.8)
21
- rack-test (>= 0.6.3)
22
- rails-dom-testing (~> 2.0)
23
- rails-html-sanitizer (~> 1.0, >= 1.2.0)
24
- actionview (6.0.5.1)
25
- activesupport (= 6.0.5.1)
26
- builder (~> 3.1)
27
- erubi (~> 1.4)
28
- rails-dom-testing (~> 2.0)
29
- rails-html-sanitizer (~> 1.1, >= 1.2.0)
30
- activejob (6.0.5.1)
31
- activesupport (= 6.0.5.1)
32
- globalid (>= 0.3.6)
33
- activesupport (6.0.5.1)
34
- concurrent-ruby (~> 1.0, >= 1.0.2)
35
- i18n (>= 0.7, < 2)
36
- minitest (~> 5.1)
37
- tzinfo (~> 1.1)
38
- zeitwerk (~> 2.2, >= 2.2.2)
39
- ast (2.4.2)
40
- builder (3.2.4)
41
- concurrent-ruby (1.1.10)
42
- crass (1.0.6)
43
- diff-lcs (1.5.0)
44
- erubi (1.11.0)
45
- globalid (1.0.0)
46
- activesupport (>= 5.0)
47
- i18n (1.12.0)
48
- concurrent-ruby (~> 1.0)
49
- json (2.6.2)
50
- loofah (2.19.0)
51
- crass (~> 1.0.2)
52
- nokogiri (>= 1.5.9)
53
- mail (2.7.1)
54
- mini_mime (>= 0.1.1)
55
- method_source (1.0.0)
56
- mini_mime (1.1.2)
57
- mini_portile2 (2.8.0)
58
- minitest (5.16.3)
59
- nokogiri (1.13.9)
60
- mini_portile2 (~> 2.8.0)
61
- racc (~> 1.4)
62
- parallel (1.22.1)
63
- parser (3.1.2.1)
64
- ast (~> 2.4.1)
65
- racc (1.6.0)
66
- rack (2.2.4)
67
- rack-test (2.0.2)
68
- rack (>= 1.3)
69
- rails-dom-testing (2.0.3)
70
- activesupport (>= 4.2.0)
71
- nokogiri (>= 1.6)
72
- rails-html-sanitizer (1.4.3)
73
- loofah (~> 2.3)
74
- railties (6.0.5.1)
75
- actionpack (= 6.0.5.1)
76
- activesupport (= 6.0.5.1)
77
- method_source
78
- rake (>= 0.8.7)
79
- thor (>= 0.20.3, < 2.0)
80
- rainbow (3.1.1)
81
- rake (13.0.6)
82
- regexp_parser (2.6.0)
83
- rexml (3.2.5)
84
- rspec (3.12.0)
85
- rspec-core (~> 3.12.0)
86
- rspec-expectations (~> 3.12.0)
87
- rspec-mocks (~> 3.12.0)
88
- rspec-core (3.12.0)
89
- rspec-support (~> 3.12.0)
90
- rspec-expectations (3.12.0)
91
- diff-lcs (>= 1.2.0, < 2.0)
92
- rspec-support (~> 3.12.0)
93
- rspec-mocks (3.12.0)
94
- diff-lcs (>= 1.2.0, < 2.0)
95
- rspec-support (~> 3.12.0)
96
- rspec-support (3.12.0)
97
- rubocop (1.38.0)
98
- json (~> 2.3)
99
- parallel (~> 1.10)
100
- parser (>= 3.1.2.1)
101
- rainbow (>= 2.2.2, < 4.0)
102
- regexp_parser (>= 1.8, < 3.0)
103
- rexml (>= 3.2.5, < 4.0)
104
- rubocop-ast (>= 1.23.0, < 2.0)
105
- ruby-progressbar (~> 1.7)
106
- unicode-display_width (>= 1.4.0, < 3.0)
107
- rubocop-ast (1.23.0)
108
- parser (>= 3.1.1.0)
109
- ruby-progressbar (1.11.0)
110
- thor (1.2.1)
111
- thread_safe (0.3.6)
112
- tzinfo (1.2.10)
113
- thread_safe (~> 0.1)
114
- unicode-display_width (2.3.0)
115
- zeitwerk (2.6.6)
116
-
117
- PLATFORMS
118
- -darwin-21
119
-
120
- DEPENDENCIES
121
- gravity_mailbox!
122
- rake (~> 13.0)
123
- rspec
124
- rubocop
125
-
126
- BUNDLED WITH
127
- 2.2.3
data/Rakefile DELETED
@@ -1,12 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'bundler/gem_tasks'
4
- require 'rspec/core/rake_task'
5
-
6
- RSpec::Core::RakeTask.new(:spec)
7
-
8
- require 'rubocop/rake_task'
9
-
10
- RuboCop::RakeTask.new
11
-
12
- task default: %i[spec rubocop]
data/bin/console DELETED
@@ -1,15 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # frozen_string_literal: true
3
-
4
- require 'bundler/setup'
5
- require 'gravity_mailbox'
6
-
7
- # You can add fixtures and/or initialization code here to make experimenting
8
- # with your gem easier. You can also use a different console, if you like.
9
-
10
- # (If you use this, don't forget to add pry to your Gemfile!)
11
- # require "pry"
12
- # Pry.start
13
-
14
- require 'irb'
15
- IRB.start(__FILE__)
data/bin/setup DELETED
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
- IFS=$'\n\t'
4
- set -vx
5
-
6
- bundle install
7
-
8
- # Do any other automated setup that you need to do here
@@ -1,36 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative 'lib/gravity_mailbox/version'
4
-
5
- Gem::Specification.new do |spec|
6
- spec.name = 'gravity_mailbox'
7
- spec.version = GravityMailbox::VERSION
8
- spec.authors = ['Jean-Francis Bastien']
9
- spec.email = ['jfbastien@petalmd.com']
10
-
11
- spec.summary = 'Write a short summary, because RubyGems requires one.'
12
- spec.description = 'Write a longer description or delete this line.'
13
- spec.homepage = 'https://github.com/petalmd/gravity_mailbox'
14
- spec.license = 'MIT'
15
- spec.required_ruby_version = Gem::Requirement.new('>= 2.6.0')
16
-
17
- spec.metadata['homepage_uri'] = spec.homepage
18
- spec.metadata['source_code_uri'] = 'https://github.com/petalmd/gravity_mailbox'
19
- spec.metadata['changelog_uri'] = 'https://github.com/petalmd/gravity_mailbox/blob/main/CHANGELOG.md'
20
-
21
- # Specify which files should be added to the gem when it is released.
22
- # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
23
- spec.files = Dir.chdir(File.expand_path(__dir__)) do
24
- `git ls-files -z`.split("\x0").reject { |f| f.match(%r{\A(?:test|spec|features)/}) }
25
- end
26
- spec.bindir = 'exe'
27
- spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
28
- spec.require_paths = ['lib']
29
-
30
- # Uncomment to register a new dependency of your gem
31
- spec.add_dependency 'actionmailer', '>= 5.2'
32
- spec.add_dependency 'railties', '>= 5.2'
33
- # For more information and examples about making a new gem, checkout our
34
- # guide at: https://bundler.io/guides/creating_gem.html
35
- spec.metadata['rubygems_mfa_required'] = 'true'
36
- end