letter_opener_web 2.0.0 → 3.0.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: 3b31a75a1e88a4e79a2c79ef92da951522caf6ffbd7ab684b53a46b0982efd85
4
- data.tar.gz: a4f6a87162bdcc3d28632f192f97aaba812939697c08c86904a36aa4ce9b6da8
3
+ metadata.gz: 1b4b9c3cbf353af3ad786e28273e35fc1e0f95e3149fe124776b57e9aa5e641c
4
+ data.tar.gz: 9ffef4bc4d2c6032a5e6939f52a288b389eb91b77be3c269c0f7ece2b3209390
5
5
  SHA512:
6
- metadata.gz: 7c4e1575132e8e895cdd5fdc881516396af19c3efabde95276727c39f106df67d7f0237ae009264f7b31dce15cfd8d83874f0f098fa1145ed2c5d2f4a77fd2d8
7
- data.tar.gz: d3b2d72727adfe59f1c3468d832df6522d7792ee1d7e555a205ec2720a2c34e3ff7689cb38016e0561b89ed04ab94e364cdfca68235c4c0f9c1c1a630db140c5
6
+ metadata.gz: c540e69c8876b53a762299a60d5618245945ddab78795e57ab2749f378585ff97984e033484fa1d2b4dcb6d5c711d862887172810f4293f97568cf1b6d05411b
7
+ data.tar.gz: 6996174460ce15b97c8513df2b6753ca4ef114a6765d9f6276a6e81fbac690176b7a9afc2a906bec0eff592937afd2dde4bfcd3a6a5a0bf6a60a7e151acb248b
@@ -19,19 +19,17 @@ jobs:
19
19
  steps:
20
20
  # Checkout the repository to the GitHub Actions runner
21
21
  - name: Checkout
22
- uses: actions/checkout@v2
22
+ uses: actions/checkout@v4
23
23
 
24
24
  # Customize the ruby version depending on your needs
25
25
  - name: Setup Ruby
26
- uses: actions/setup-ruby@v1
26
+ uses: ruby/setup-ruby@v1
27
27
  with:
28
- ruby-version: '2.7'
28
+ ruby-version: '3.3'
29
29
 
30
30
  - name: Setup Brakeman
31
- env:
32
- BRAKEMAN_VERSION: '4.10' # SARIF support is provided in Brakeman version 4.10+
33
31
  run: |
34
- gem install brakeman --version $BRAKEMAN_VERSION
32
+ gem install brakeman
35
33
 
36
34
  # Execute Brakeman CLI and generate a SARIF output with the security issues identified during the analysis
37
35
  - name: Scan
@@ -41,6 +39,6 @@ jobs:
41
39
 
42
40
  # Upload the SARIF file generated in the previous step
43
41
  - name: Upload SARIF
44
- uses: github/codeql-action/upload-sarif@v1
42
+ uses: github/codeql-action/upload-sarif@v3
45
43
  with:
46
44
  sarif_file: output.sarif.json
@@ -1,22 +1,25 @@
1
+ ---
1
2
  name: Run tests
2
3
 
3
4
  on:
4
5
  push:
5
6
  branches: [ master ]
6
7
  pull_request:
7
- branches: [ master, next ]
8
+ branches: [ master ]
8
9
 
9
10
  jobs:
10
11
  test:
11
-
12
12
  runs-on: ubuntu-latest
13
-
14
13
  strategy:
15
14
  matrix:
16
- ruby-version: [2.7, 3.0]
15
+ ruby-version:
16
+ - "3.1"
17
+ - "3.2"
18
+ - "3.3"
19
+ - truffleruby-head
17
20
 
18
21
  steps:
19
- - uses: actions/checkout@v2
22
+ - uses: actions/checkout@v4
20
23
 
21
24
  - name: Set up Ruby ${{ matrix.ruby-version }}
22
25
  uses: ruby/setup-ruby@v1
@@ -27,8 +30,11 @@ jobs:
27
30
  - name: Install dependencies
28
31
  run: bundle install
29
32
 
33
+ - name: Lint with Rubocop
34
+ run: bin/rubocop
35
+
30
36
  - name: Run tests
31
- run: bundle exec rake
37
+ run: bin/rspec
32
38
 
33
39
  - name: Build gem
34
- run: bundle exec rake build
40
+ run: bin/rake build
@@ -11,12 +11,12 @@ jobs:
11
11
  runs-on: ubuntu-latest
12
12
 
13
13
  steps:
14
- - uses: actions/checkout@v2
14
+ - uses: actions/checkout@v4
15
15
 
16
- - name: Set up Ruby 3.0
16
+ - name: Set up Ruby 3.3
17
17
  uses: ruby/setup-ruby@v1
18
18
  with:
19
- ruby-version: 3.0
19
+ ruby-version: 3.3
20
20
 
21
21
  - run: bundle install
22
22
 
@@ -26,7 +26,7 @@ jobs:
26
26
  touch $HOME/.gem/credentials
27
27
  chmod 0600 $HOME/.gem/credentials
28
28
  printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
29
- bundle exec rake build
29
+ bin/rake build
30
30
  gem push pkg/*.gem
31
31
  env:
32
32
  GEM_HOST_API_KEY: "${{secrets.RUBYGEMS_AUTH_TOKEN}}"
data/.rubocop.yml CHANGED
@@ -3,7 +3,7 @@ inherit_from: .rubocop_todo.yml
3
3
 
4
4
  AllCops:
5
5
  NewCops: enable
6
- TargetRubyVersion: 2.7
6
+ TargetRubyVersion: 3.1
7
7
  Exclude:
8
8
  - "spec/dummy/bin/**/*"
9
9
  - "tmp/**/*"
@@ -15,3 +15,6 @@ Metrics/BlockLength:
15
15
 
16
16
  Layout/LineLength:
17
17
  Max: 120
18
+
19
+ Style/HashSyntax:
20
+ EnforcedShorthandSyntax: either
data/.rubocop_todo.yml CHANGED
@@ -12,8 +12,14 @@ Style/Documentation:
12
12
  Exclude:
13
13
  - 'spec/**/*'
14
14
  - 'test/**/*'
15
+ - 'app/controllers/letter_opener_web/application_controller.rb'
15
16
  - 'app/controllers/letter_opener_web/letters_controller.rb'
17
+ - 'app/controllers/letter_opener_web/application_controller.rb'
16
18
  - 'app/models/letter_opener_web/letter.rb'
17
19
  - 'lib/letter_opener_web.rb'
18
20
  - 'lib/letter_opener_web/delivery_method.rb'
19
21
  - 'lib/letter_opener_web/engine.rb'
22
+
23
+ Metrics/ClassLength:
24
+ Exclude:
25
+ - 'app/models/letter_opener_web/letter.rb'
data/CHANGELOG.md CHANGED
@@ -1,3 +1,17 @@
1
+ ## [Unreleased](https://github.com/fgrehm/letter_opener_web/compare/v3.0.0...master)
2
+
3
+ ## [3.0.0](https://github.com/fgrehm/letter_opener_web/compare/v2.0.0...v3.0.0)
4
+
5
+ ### Breaking
6
+ - Drop EoL'd Rubies and Rails - now requires Ruby 3.1+ and Rails 6.1+.
7
+
8
+ ### Changes
9
+ - Reliably strip Attachment links from the sidebar. [#132](https://github.com/fgrehm/letter_opener_web/pull/134)
10
+
11
+ ### Additions
12
+ - Allow dot (`.`) character in attachment file names. [#131](https://github.com/fgrehm/letter_opener_web/pull/131)
13
+ - Add dark mode. [#119](https://github.com/fgrehm/letter_opener_web/pull/119)
14
+
1
15
  ## [v2.0.0](https://github.com/fgrehm/letter_opener_web/compare/v1.4.1...v2.0.0)
2
16
 
3
17
  - Require Rails >= 5.2, run tests against Rails 6.1 [#113](https://github.com/fgrehm/letter_opener_web/pull/113)
data/Gemfile CHANGED
@@ -7,6 +7,15 @@ source 'http://rubygems.org'
7
7
  # development dependencies will be added by default to the :development group.
8
8
  gemspec
9
9
 
10
- group :test do
11
- gem 'codecov', require: false
10
+ group :development do
11
+ gem 'rails', '~> 6.1'
12
+ gem 'rspec-rails', '~> 5.0'
13
+ gem 'rubocop', '~> 1.22'
14
+ gem 'rubocop-rails', '~> 2.12'
15
+ gem 'rubocop-rspec', '~> 2.5'
16
+ end
17
+
18
+ group :development, :test do
19
+ gem 'pry-byebug'
20
+ gem 'pry-rails'
12
21
  end
data/README.md CHANGED
@@ -15,13 +15,13 @@ First add the gem to your development environment and run the `bundle` command t
15
15
 
16
16
  ```ruby
17
17
  group :development do
18
- gem 'letter_opener_web', '~> 2.0'
18
+ gem 'letter_opener_web', '~> 3.0'
19
19
  end
20
20
  ```
21
21
 
22
22
  ## Usage
23
23
 
24
- Add to your routes.rb:
24
+ Add to your `routes.rb`:
25
25
 
26
26
  ```ruby
27
27
  Your::Application.routes.draw do
@@ -53,7 +53,7 @@ config.action_mailer.delivery_method = :letter_opener_web
53
53
  ```
54
54
 
55
55
  If you're using `:letter_opener_web` as your delivery method, you can change the location of
56
- the letters by adding the following to an initializer (or in development.rb):
56
+ the letters by adding the following to an initializer (or in `development.rb`):
57
57
 
58
58
  ```ruby
59
59
  LetterOpenerWeb.configure do |config|
@@ -106,7 +106,7 @@ few years.
106
106
  ## Contributing
107
107
 
108
108
  1. Fork it and run `bin/setup`
109
- 2. Create your feature branch (`git checkout -b my-new-feature`)
109
+ 2. Create your feature branch (`git switch -c my-new-feature`)
110
110
  3. Commit your changes (`git commit -am 'Add some feature'`)
111
111
  4. Push to the branch (`git push origin my-new-feature`)
112
112
  5. Create new Pull Request
data/Rakefile CHANGED
@@ -1,4 +1,3 @@
1
- #!/usr/bin/env rake
2
1
  # frozen_string_literal: true
3
2
 
4
3
  require 'bundler/gem_tasks'
@@ -15,14 +15,14 @@ module LetterOpenerWeb
15
15
 
16
16
  def show
17
17
  text = @letter.send("#{params[:style]}_text")
18
- .gsub(/"plain\.html"/, "\"#{routes.letter_path(id: @letter.id, style: 'plain')}\"")
19
- .gsub(/"rich\.html"/, "\"#{routes.letter_path(id: @letter.id, style: 'rich')}\"")
18
+ .gsub('"plain.html"', "\"#{routes.letter_path(id: @letter.id, style: 'plain')}\"")
19
+ .gsub('"rich.html"', "\"#{routes.letter_path(id: @letter.id, style: 'rich')}\"")
20
20
 
21
21
  render html: text.html_safe
22
22
  end
23
23
 
24
24
  def attachment
25
- filename = "#{params[:file]}.#{params[:format]}"
25
+ filename = params[:file]
26
26
  file = @letter.attachments[filename]
27
27
 
28
28
  return render plain: 'Attachment not found!', status: 404 unless file.present?
@@ -81,10 +81,13 @@ module LetterOpenerWeb
81
81
 
82
82
  def remove_attachments_link(headers)
83
83
  xml = REXML::Document.new(headers)
84
- if xml.root.elements.size == 10
85
- xml.delete_element('//dd[last()]')
86
- xml.delete_element('//dt[last()]')
84
+ label_element = xml.root.elements.find { |e| e.get_text&.value&.match?(/attachments:/i) }
85
+
86
+ if label_element
87
+ xml.root.delete_element(label_element.next_element) # the list of attachments
88
+ xml.root.delete_element(label_element)
87
89
  end
90
+
88
91
  xml.to_s
89
92
  end
90
93
 
@@ -1,4 +1,13 @@
1
1
  <style>
2
+ @media (prefers-color-scheme: dark) {
3
+ body {
4
+ background-color: black;
5
+ }
6
+ .left, .right {
7
+ filter: invert(1) hue-rotate(180deg);
8
+ }
9
+ }
10
+
2
11
  body {
3
12
  margin: 0
4
13
  }
data/bin/rake ADDED
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ #
5
+ # This file was generated by Bundler.
6
+ #
7
+ # The application 'rake' is installed as part of a gem, and
8
+ # this file is here to facilitate running it.
9
+ #
10
+
11
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__)
12
+
13
+ bundle_binstub = File.expand_path('bundle', __dir__)
14
+
15
+ if File.file?(bundle_binstub)
16
+ if File.read(bundle_binstub, 300).include?('This file was generated by Bundler')
17
+ load(bundle_binstub)
18
+ else
19
+ abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
20
+ Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
21
+ end
22
+ end
23
+
24
+ require 'rubygems'
25
+ require 'bundler/setup'
26
+
27
+ load Gem.bin_path('rake', 'rake')
data/bin/rspec ADDED
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ #
5
+ # This file was generated by Bundler.
6
+ #
7
+ # The application 'rspec' is installed as part of a gem, and
8
+ # this file is here to facilitate running it.
9
+ #
10
+
11
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__)
12
+
13
+ bundle_binstub = File.expand_path('bundle', __dir__)
14
+
15
+ if File.file?(bundle_binstub)
16
+ if File.read(bundle_binstub, 300).include?('This file was generated by Bundler')
17
+ load(bundle_binstub)
18
+ else
19
+ abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
20
+ Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
21
+ end
22
+ end
23
+
24
+ require 'rubygems'
25
+ require 'bundler/setup'
26
+
27
+ load Gem.bin_path('rspec-core', 'rspec')
data/bin/rubocop ADDED
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ #
5
+ # This file was generated by Bundler.
6
+ #
7
+ # The application 'rubocop' is installed as part of a gem, and
8
+ # this file is here to facilitate running it.
9
+ #
10
+
11
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__)
12
+
13
+ bundle_binstub = File.expand_path('bundle', __dir__)
14
+
15
+ if File.file?(bundle_binstub)
16
+ if File.read(bundle_binstub, 300).include?('This file was generated by Bundler')
17
+ load(bundle_binstub)
18
+ else
19
+ abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
20
+ Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
21
+ end
22
+ end
23
+
24
+ require 'rubygems'
25
+ require 'bundler/setup'
26
+
27
+ load Gem.bin_path('rubocop', 'rubocop')
data/config/routes.rb CHANGED
@@ -5,5 +5,5 @@ LetterOpenerWeb::Engine.routes.draw do
5
5
  post 'clear' => 'letters#clear', as: :clear_letters
6
6
  get ':id(/:style)' => 'letters#show', as: :letter
7
7
  post ':id/delete' => 'letters#destroy', as: :delete_letter
8
- get ':id/attachments/:file' => 'letters#attachment'
8
+ get ':id/attachments/:file' => 'letters#attachment', constraints: { file: %r{[^/]+} }
9
9
  end
@@ -13,22 +13,16 @@ Gem::Specification.new do |gem|
13
13
  gem.summary = gem.description
14
14
  gem.homepage = 'https://github.com/fgrehm/letter_opener_web'
15
15
  gem.license = 'MIT'
16
- gem.required_ruby_version = '>= 2.7'
16
+ gem.required_ruby_version = '>= 3.1'
17
17
 
18
18
  gem.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
19
19
  gem.executables = gem.files.grep(%r{^exe/}).map { |f| File.basename(f) }
20
- gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
21
20
  gem.require_paths = ['lib']
22
21
 
23
- gem.add_dependency 'actionmailer', '>= 5.2'
24
- gem.add_dependency 'letter_opener', '~> 1.7'
25
- gem.add_dependency 'railties', '>= 5.2'
22
+ gem.add_dependency 'actionmailer', '>= 6.1'
23
+ gem.add_dependency 'letter_opener', '~> 1.9'
24
+ gem.add_dependency 'railties', '>= 6.1'
26
25
  gem.add_dependency 'rexml'
27
26
 
28
- gem.add_development_dependency 'rails', '~> 6.1'
29
- gem.add_development_dependency 'rspec-rails', '~> 5.0'
30
- gem.add_development_dependency 'rubocop', '~> 1.22'
31
- gem.add_development_dependency 'rubocop-rails', '~> 2.12'
32
- gem.add_development_dependency 'rubocop-rspec', '~> 2.5'
33
- gem.add_development_dependency 'shoulda-matchers', '~> 5.0'
27
+ gem.metadata['rubygems_mfa_required'] = 'true'
34
28
  end
@@ -5,7 +5,7 @@ require 'letter_opener/delivery_method'
5
5
  module LetterOpenerWeb
6
6
  class DeliveryMethod < LetterOpener::DeliveryMethod
7
7
  def deliver!(mail)
8
- original = ENV['LAUNCHY_DRY_RUN']
8
+ original = ENV.fetch('LAUNCHY_DRY_RUN', nil)
9
9
  ENV['LAUNCHY_DRY_RUN'] = 'true'
10
10
 
11
11
  super
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module LetterOpenerWeb
4
- VERSION = '2.0.0'
4
+ VERSION = '3.0.0'
5
5
  end
@@ -87,17 +87,35 @@ RSpec.describe LetterOpenerWeb::LettersController do
87
87
  allow(letter).to receive(:valid?).and_return(true)
88
88
  end
89
89
 
90
- it 'sends the file as an inline attachment' do
91
- allow(controller).to receive(:send_file) { controller.head :ok }
92
- get :attachment, params: { id: id, file: file_name.gsub(/\.\w+/, ''), format: File.extname(file_name)[1..] }
90
+ context 'when the file exists' do
91
+ before do
92
+ # Stub a 200 response b/c `send_file` will 204 when the file doesn't actually exist
93
+ allow(controller).to receive(:send_file) { controller.head :ok }
94
+ end
93
95
 
94
- expect(response.status).to eq(200)
95
- expect(controller).to have_received(:send_file)
96
- .with(attachment_path, filename: file_name, disposition: 'inline')
96
+ it 'sends the file as an inline attachment' do
97
+ get :attachment, params: { id: id, file: file_name }
98
+
99
+ expect(response.status).to eq(200)
100
+ expect(controller).to have_received(:send_file)
101
+ .with(attachment_path, filename: file_name, disposition: 'inline')
102
+ end
103
+
104
+ context 'when file name includes a dot' do
105
+ let(:file_name) { 'image.dot.jpg' }
106
+
107
+ it 'sends the file as an inline attachment' do
108
+ expect(controller).to receive(:send_file).with(attachment_path, filename: file_name,
109
+ disposition: 'inline')
110
+ get :attachment, params: { id: id, file: file_name }
111
+ expect(response.status).to eq(200)
112
+ end
113
+ end
97
114
  end
98
115
 
99
- it "throws a 404 if attachment file can't be found" do
100
- get :attachment, params: { id: id, file: 'unknown', format: 'woot' }
116
+ it "returns a 404 if attachment file can't be found" do
117
+ get :attachment, params: { id: id, file: 'unknown.woot' }
118
+
101
119
  expect(response.status).to eq(404)
102
120
  end
103
121
  end
@@ -84,7 +84,7 @@ Rails.application.configure do
84
84
  config.active_support.disallowed_deprecation_warnings = []
85
85
 
86
86
  # Use default logging formatter so that PID and timestamp are not suppressed.
87
- config.log_formatter = ::Logger::Formatter.new
87
+ config.log_formatter = Logger::Formatter.new
88
88
 
89
89
  # Use a different logger for distributed setups.
90
90
  # require "syslog/logger"
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  # Be sure to restart your server when you modify this file.
3
4
 
4
5
  # ActiveSupport::Reloader.to_prepare do
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  # Be sure to restart your server when you modify this file.
3
4
 
4
5
  # Version of your assets, change this if you want to expire all your assets.
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  # Be sure to restart your server when you modify this file.
3
4
 
4
5
  # Define an application-wide content security policy
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  # Be sure to restart your server when you modify this file.
3
4
 
4
5
  # Add new inflection rules using the following format. Inflections
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  # Be sure to restart your server when you modify this file.
3
4
 
4
5
  # Add new mime types for use in respond_to blocks:
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  # Define an application-wide HTTP permissions policy. For further
3
4
  # information see https://developers.google.com/web/updates/2018/06/feature-policy
4
5
  #
@@ -33,12 +33,10 @@ RSpec.describe LetterOpenerWeb::Letter do
33
33
 
34
34
  %w[1111_1111 2222_2222].each do |folder|
35
35
  FileUtils.mkdir_p("#{location}/#{folder}")
36
- File.open("#{location}/#{folder}/plain.html", 'w') { |f| f.write("Plain text for #{folder}") }
37
- File.open("#{location}/#{folder}/rich.html", 'w') { |f| f.write(rich_text(folder)) }
36
+ File.write("#{location}/#{folder}/plain.html", "Plain text for #{folder}")
37
+ File.write("#{location}/#{folder}/rich.html", rich_text(folder))
38
38
  FileUtils.mkdir_p("#{Rails.root.join('tmp', 'letter_opener')}/#{folder}")
39
- File.open("#{Rails.root.join('tmp', 'letter_opener')}/#{folder}/rich.html", 'w') do |f|
40
- f.write("Rich text for #{folder}")
41
- end
39
+ File.write("#{Rails.root.join('tmp', 'letter_opener')}/#{folder}/rich.html", "Rich text for #{folder}")
42
40
  end
43
41
  end
44
42
 
data/spec/spec_helper.rb CHANGED
@@ -1,15 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'simplecov'
4
- SimpleCov.start
5
-
6
- if ENV.fetch('CI', '') == 'true'
7
- require 'codecov'
8
- SimpleCov.formatter = SimpleCov::Formatter::Codecov
9
- end
10
-
11
- require 'shoulda-matchers'
12
-
13
3
  RSpec.configure do |config|
14
4
  config.filter_run focus: true
15
5
  config.run_all_when_everything_filtered = true
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: letter_opener_web
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fabio Rehm
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-11-06 00:00:00.000000000 Z
12
+ date: 2024-05-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: actionmailer
@@ -17,42 +17,42 @@ dependencies:
17
17
  requirements:
18
18
  - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: '5.2'
20
+ version: '6.1'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - ">="
26
26
  - !ruby/object:Gem::Version
27
- version: '5.2'
27
+ version: '6.1'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: letter_opener
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: '1.7'
34
+ version: '1.9'
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: '1.7'
41
+ version: '1.9'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: railties
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
46
  - - ">="
47
47
  - !ruby/object:Gem::Version
48
- version: '5.2'
48
+ version: '6.1'
49
49
  type: :runtime
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
53
  - - ">="
54
54
  - !ruby/object:Gem::Version
55
- version: '5.2'
55
+ version: '6.1'
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: rexml
58
58
  requirement: !ruby/object:Gem::Requirement
@@ -67,90 +67,6 @@ dependencies:
67
67
  - - ">="
68
68
  - !ruby/object:Gem::Version
69
69
  version: '0'
70
- - !ruby/object:Gem::Dependency
71
- name: rails
72
- requirement: !ruby/object:Gem::Requirement
73
- requirements:
74
- - - "~>"
75
- - !ruby/object:Gem::Version
76
- version: '6.1'
77
- type: :development
78
- prerelease: false
79
- version_requirements: !ruby/object:Gem::Requirement
80
- requirements:
81
- - - "~>"
82
- - !ruby/object:Gem::Version
83
- version: '6.1'
84
- - !ruby/object:Gem::Dependency
85
- name: rspec-rails
86
- requirement: !ruby/object:Gem::Requirement
87
- requirements:
88
- - - "~>"
89
- - !ruby/object:Gem::Version
90
- version: '5.0'
91
- type: :development
92
- prerelease: false
93
- version_requirements: !ruby/object:Gem::Requirement
94
- requirements:
95
- - - "~>"
96
- - !ruby/object:Gem::Version
97
- version: '5.0'
98
- - !ruby/object:Gem::Dependency
99
- name: rubocop
100
- requirement: !ruby/object:Gem::Requirement
101
- requirements:
102
- - - "~>"
103
- - !ruby/object:Gem::Version
104
- version: '1.22'
105
- type: :development
106
- prerelease: false
107
- version_requirements: !ruby/object:Gem::Requirement
108
- requirements:
109
- - - "~>"
110
- - !ruby/object:Gem::Version
111
- version: '1.22'
112
- - !ruby/object:Gem::Dependency
113
- name: rubocop-rails
114
- requirement: !ruby/object:Gem::Requirement
115
- requirements:
116
- - - "~>"
117
- - !ruby/object:Gem::Version
118
- version: '2.12'
119
- type: :development
120
- prerelease: false
121
- version_requirements: !ruby/object:Gem::Requirement
122
- requirements:
123
- - - "~>"
124
- - !ruby/object:Gem::Version
125
- version: '2.12'
126
- - !ruby/object:Gem::Dependency
127
- name: rubocop-rspec
128
- requirement: !ruby/object:Gem::Requirement
129
- requirements:
130
- - - "~>"
131
- - !ruby/object:Gem::Version
132
- version: '2.5'
133
- type: :development
134
- prerelease: false
135
- version_requirements: !ruby/object:Gem::Requirement
136
- requirements:
137
- - - "~>"
138
- - !ruby/object:Gem::Version
139
- version: '2.5'
140
- - !ruby/object:Gem::Dependency
141
- name: shoulda-matchers
142
- requirement: !ruby/object:Gem::Requirement
143
- requirements:
144
- - - "~>"
145
- - !ruby/object:Gem::Version
146
- version: '5.0'
147
- type: :development
148
- prerelease: false
149
- version_requirements: !ruby/object:Gem::Requirement
150
- requirements:
151
- - - "~>"
152
- - !ruby/object:Gem::Version
153
- version: '5.0'
154
70
  description: Gives letter_opener an interface for browsing sent emails
155
71
  email:
156
72
  - fgrehm@gmail.com
@@ -184,6 +100,9 @@ files:
184
100
  - app/views/layouts/letter_opener_web/styles/_letters.html.erb
185
101
  - app/views/letter_opener_web/letters/_item.html.erb
186
102
  - app/views/letter_opener_web/letters/index.html.erb
103
+ - bin/rake
104
+ - bin/rspec
105
+ - bin/rubocop
187
106
  - bin/setup
188
107
  - config/routes.rb
189
108
  - letter_opener_web.gemspec
@@ -249,7 +168,8 @@ files:
249
168
  homepage: https://github.com/fgrehm/letter_opener_web
250
169
  licenses:
251
170
  - MIT
252
- metadata: {}
171
+ metadata:
172
+ rubygems_mfa_required: 'true'
253
173
  post_install_message:
254
174
  rdoc_options: []
255
175
  require_paths:
@@ -258,69 +178,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
258
178
  requirements:
259
179
  - - ">="
260
180
  - !ruby/object:Gem::Version
261
- version: '2.7'
181
+ version: '3.1'
262
182
  required_rubygems_version: !ruby/object:Gem::Requirement
263
183
  requirements:
264
184
  - - ">="
265
185
  - !ruby/object:Gem::Version
266
186
  version: '0'
267
187
  requirements: []
268
- rubygems_version: 3.2.22
188
+ rubygems_version: 3.5.9
269
189
  signing_key:
270
190
  specification_version: 4
271
191
  summary: Gives letter_opener an interface for browsing sent emails
272
- test_files:
273
- - spec/controllers/letter_opener_web/letters_controller_spec.rb
274
- - spec/dummy/Rakefile
275
- - spec/dummy/app/assets/config/manifest.js
276
- - spec/dummy/app/assets/images/.keep
277
- - spec/dummy/app/assets/stylesheets/application.css
278
- - spec/dummy/app/channels/application_cable/channel.rb
279
- - spec/dummy/app/channels/application_cable/connection.rb
280
- - spec/dummy/app/controllers/application_controller.rb
281
- - spec/dummy/app/controllers/concerns/.keep
282
- - spec/dummy/app/helpers/application_helper.rb
283
- - spec/dummy/app/javascript/packs/application.js
284
- - spec/dummy/app/jobs/application_job.rb
285
- - spec/dummy/app/mailers/application_mailer.rb
286
- - spec/dummy/app/models/application_record.rb
287
- - spec/dummy/app/models/concerns/.keep
288
- - spec/dummy/app/views/layouts/application.html.erb
289
- - spec/dummy/app/views/layouts/mailer.html.erb
290
- - spec/dummy/app/views/layouts/mailer.text.erb
291
- - spec/dummy/bin/rails
292
- - spec/dummy/bin/rake
293
- - spec/dummy/bin/setup
294
- - spec/dummy/config.ru
295
- - spec/dummy/config/application.rb
296
- - spec/dummy/config/boot.rb
297
- - spec/dummy/config/environment.rb
298
- - spec/dummy/config/environments/development.rb
299
- - spec/dummy/config/environments/production.rb
300
- - spec/dummy/config/environments/test.rb
301
- - spec/dummy/config/initializers/application_controller_renderer.rb
302
- - spec/dummy/config/initializers/assets.rb
303
- - spec/dummy/config/initializers/backtrace_silencers.rb
304
- - spec/dummy/config/initializers/content_security_policy.rb
305
- - spec/dummy/config/initializers/cookies_serializer.rb
306
- - spec/dummy/config/initializers/filter_parameter_logging.rb
307
- - spec/dummy/config/initializers/inflections.rb
308
- - spec/dummy/config/initializers/mime_types.rb
309
- - spec/dummy/config/initializers/permissions_policy.rb
310
- - spec/dummy/config/initializers/wrap_parameters.rb
311
- - spec/dummy/config/locales/en.yml
312
- - spec/dummy/config/puma.rb
313
- - spec/dummy/config/routes.rb
314
- - spec/dummy/lib/assets/.keep
315
- - spec/dummy/log/.keep
316
- - spec/dummy/public/404.html
317
- - spec/dummy/public/422.html
318
- - spec/dummy/public/500.html
319
- - spec/dummy/public/apple-touch-icon-precomposed.png
320
- - spec/dummy/public/apple-touch-icon.png
321
- - spec/dummy/public/favicon.ico
322
- - spec/dummy/storage/.keep
323
- - spec/letter_opener_web_spec.rb
324
- - spec/models/letter_opener_web/letter_spec.rb
325
- - spec/rails_helper.rb
326
- - spec/spec_helper.rb
192
+ test_files: []