gravity_mailbox 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
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