letter_opener_web 2.0.0 → 3.0.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: 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: []