maily 0.9.0 → 0.9.1
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 +4 -4
- data/CHANGELOG.md +7 -0
- data/app/assets/stylesheets/maily/application.scss +5 -0
- data/app/controllers/maily/emails_controller.rb +5 -2
- data/app/views/maily/emails/index.html.erb +5 -1
- data/app/views/maily/emails/show.html.erb +1 -1
- data/lib/maily.rb +1 -1
- data/lib/maily/version.rb +1 -1
- metadata +3 -118
- data/.gitignore +0 -7
- data/.travis.yml +0 -16
- data/Appraisals +0 -15
- data/Gemfile +0 -3
- data/Rakefile +0 -6
- data/gemfiles/rails_4.2.gemfile +0 -7
- data/gemfiles/rails_5.0.gemfile +0 -7
- data/gemfiles/rails_5.1.gemfile +0 -7
- data/gemfiles/rails_5.2.gemfile +0 -7
- data/maily.gemspec +0 -24
- data/screenshot.png +0 -0
- data/spec/controllers_spec.rb +0 -71
- data/spec/dummy/README.md +0 -9
- data/spec/dummy/Rakefile +0 -6
- data/spec/dummy/app/assets/images/.keep +0 -0
- data/spec/dummy/app/assets/javascripts/application.js +0 -13
- data/spec/dummy/app/assets/stylesheets/application.css +0 -13
- data/spec/dummy/app/controllers/application_controller.rb +0 -5
- data/spec/dummy/app/controllers/concerns/.keep +0 -0
- data/spec/dummy/app/helpers/application_helper.rb +0 -2
- data/spec/dummy/app/mailers/application_mailer.rb +0 -7
- data/spec/dummy/app/mailers/notifier.rb +0 -29
- data/spec/dummy/app/models/.keep +0 -0
- data/spec/dummy/app/models/concerns/.keep +0 -0
- data/spec/dummy/app/views/layouts/application.html.erb +0 -14
- data/spec/dummy/app/views/notifications/recommendation.html.erb +0 -1
- data/spec/dummy/app/views/notifier/generic_welcome.html.erb +0 -1
- data/spec/dummy/app/views/notifier/invitation.html.erb +0 -1
- data/spec/dummy/app/views/notifier/multipart.html.erb +0 -1
- data/spec/dummy/app/views/notifier/multipart.text.erb +0 -1
- data/spec/dummy/app/views/notifier/welcome.html.erb +0 -1
- data/spec/dummy/app/views/notifier/with_slim_template.html.slim +0 -1
- data/spec/dummy/bin/bundle +0 -3
- data/spec/dummy/bin/rails +0 -4
- data/spec/dummy/bin/rake +0 -4
- data/spec/dummy/config.ru +0 -4
- data/spec/dummy/config/application.rb +0 -28
- data/spec/dummy/config/boot.rb +0 -5
- data/spec/dummy/config/environment.rb +0 -5
- data/spec/dummy/config/environments/development.rb +0 -29
- data/spec/dummy/config/environments/production.rb +0 -80
- data/spec/dummy/config/environments/test.rb +0 -36
- data/spec/dummy/config/initializers/backtrace_silencers.rb +0 -7
- data/spec/dummy/config/initializers/filter_parameter_logging.rb +0 -4
- data/spec/dummy/config/initializers/inflections.rb +0 -16
- data/spec/dummy/config/initializers/maily.rb +0 -5
- data/spec/dummy/config/initializers/mime_types.rb +0 -5
- data/spec/dummy/config/initializers/secret_token.rb +0 -12
- data/spec/dummy/config/initializers/session_store.rb +0 -3
- data/spec/dummy/config/initializers/wrap_parameters.rb +0 -14
- data/spec/dummy/config/locales/en.yml +0 -23
- data/spec/dummy/config/routes.rb +0 -56
- data/spec/dummy/lib/maily_hooks.rb +0 -10
- data/spec/dummy/log/.keep +0 -0
- data/spec/dummy/public/404.html +0 -58
- data/spec/dummy/public/422.html +0 -58
- data/spec/dummy/public/500.html +0 -57
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/email_spec.rb +0 -95
- data/spec/generator_spec.rb +0 -14
- data/spec/mailer_spec.rb +0 -41
- data/spec/maily_spec.rb +0 -42
- data/spec/spec_helper.rb +0 -24
data/spec/dummy/config/routes.rb
DELETED
@@ -1,56 +0,0 @@
|
|
1
|
-
Dummy::Application.routes.draw do
|
2
|
-
# The priority is based upon order of creation: first created -> highest priority.
|
3
|
-
# See how all your routes lay out with "rake routes".
|
4
|
-
|
5
|
-
# You can have the root of your site routed with "root"
|
6
|
-
# root 'welcome#index'
|
7
|
-
|
8
|
-
# Example of regular route:
|
9
|
-
# get 'products/:id' => 'catalog#view'
|
10
|
-
|
11
|
-
# Example of named route that can be invoked with purchase_url(id: product.id)
|
12
|
-
# get 'products/:id/purchase' => 'catalog#purchase', as: :purchase
|
13
|
-
|
14
|
-
# Example resource route (maps HTTP verbs to controller actions automatically):
|
15
|
-
# resources :products
|
16
|
-
|
17
|
-
# Example resource route with options:
|
18
|
-
# resources :products do
|
19
|
-
# member do
|
20
|
-
# get 'short'
|
21
|
-
# post 'toggle'
|
22
|
-
# end
|
23
|
-
#
|
24
|
-
# collection do
|
25
|
-
# get 'sold'
|
26
|
-
# end
|
27
|
-
# end
|
28
|
-
|
29
|
-
# Example resource route with sub-resources:
|
30
|
-
# resources :products do
|
31
|
-
# resources :comments, :sales
|
32
|
-
# resource :seller
|
33
|
-
# end
|
34
|
-
|
35
|
-
# Example resource route with more complex sub-resources:
|
36
|
-
# resources :products do
|
37
|
-
# resources :comments
|
38
|
-
# resources :sales do
|
39
|
-
# get 'recent', on: :collection
|
40
|
-
# end
|
41
|
-
# end
|
42
|
-
|
43
|
-
# Example resource route with concerns:
|
44
|
-
# concern :toggleable do
|
45
|
-
# post 'toggle'
|
46
|
-
# end
|
47
|
-
# resources :posts, concerns: :toggleable
|
48
|
-
# resources :photos, concerns: :toggleable
|
49
|
-
|
50
|
-
# Example resource route within a namespace:
|
51
|
-
# namespace :admin do
|
52
|
-
# # Directs /admin/products/* to Admin::ProductsController
|
53
|
-
# # (app/controllers/admin/products_controller.rb)
|
54
|
-
# resources :products
|
55
|
-
# end
|
56
|
-
end
|
@@ -1,10 +0,0 @@
|
|
1
|
-
email = -> { 'foo@foo.com' }
|
2
|
-
|
3
|
-
Maily.hooks_for('Notifier') do |mailer|
|
4
|
-
mailer.register_hook(:invitation, email)
|
5
|
-
mailer.register_hook(:recommendation, template_path: 'notifications', description: 'description')
|
6
|
-
mailer.register_hook(:custom_template_name, template_name: 'invitation')
|
7
|
-
mailer.register_hook(:generic_welcome)
|
8
|
-
|
9
|
-
mailer.hide_email(:hidden)
|
10
|
-
end
|
data/spec/dummy/log/.keep
DELETED
File without changes
|
data/spec/dummy/public/404.html
DELETED
@@ -1,58 +0,0 @@
|
|
1
|
-
<!DOCTYPE html>
|
2
|
-
<html>
|
3
|
-
<head>
|
4
|
-
<title>The page you were looking for doesn't exist (404)</title>
|
5
|
-
<style>
|
6
|
-
body {
|
7
|
-
background-color: #EFEFEF;
|
8
|
-
color: #2E2F30;
|
9
|
-
text-align: center;
|
10
|
-
font-family: arial, sans-serif;
|
11
|
-
}
|
12
|
-
|
13
|
-
div.dialog {
|
14
|
-
width: 25em;
|
15
|
-
margin: 4em auto 0 auto;
|
16
|
-
border: 1px solid #CCC;
|
17
|
-
border-right-color: #999;
|
18
|
-
border-left-color: #999;
|
19
|
-
border-bottom-color: #BBB;
|
20
|
-
border-top: #B00100 solid 4px;
|
21
|
-
border-top-left-radius: 9px;
|
22
|
-
border-top-right-radius: 9px;
|
23
|
-
background-color: white;
|
24
|
-
padding: 7px 4em 0 4em;
|
25
|
-
}
|
26
|
-
|
27
|
-
h1 {
|
28
|
-
font-size: 100%;
|
29
|
-
color: #730E15;
|
30
|
-
line-height: 1.5em;
|
31
|
-
}
|
32
|
-
|
33
|
-
body > p {
|
34
|
-
width: 33em;
|
35
|
-
margin: 0 auto 1em;
|
36
|
-
padding: 1em 0;
|
37
|
-
background-color: #F7F7F7;
|
38
|
-
border: 1px solid #CCC;
|
39
|
-
border-right-color: #999;
|
40
|
-
border-bottom-color: #999;
|
41
|
-
border-bottom-left-radius: 4px;
|
42
|
-
border-bottom-right-radius: 4px;
|
43
|
-
border-top-color: #DADADA;
|
44
|
-
color: #666;
|
45
|
-
box-shadow:0 3px 8px rgba(50, 50, 50, 0.17);
|
46
|
-
}
|
47
|
-
</style>
|
48
|
-
</head>
|
49
|
-
|
50
|
-
<body>
|
51
|
-
<!-- This file lives in public/404.html -->
|
52
|
-
<div class="dialog">
|
53
|
-
<h1>The page you were looking for doesn't exist.</h1>
|
54
|
-
<p>You may have mistyped the address or the page may have moved.</p>
|
55
|
-
</div>
|
56
|
-
<p>If you are the application owner check the logs for more information.</p>
|
57
|
-
</body>
|
58
|
-
</html>
|
data/spec/dummy/public/422.html
DELETED
@@ -1,58 +0,0 @@
|
|
1
|
-
<!DOCTYPE html>
|
2
|
-
<html>
|
3
|
-
<head>
|
4
|
-
<title>The change you wanted was rejected (422)</title>
|
5
|
-
<style>
|
6
|
-
body {
|
7
|
-
background-color: #EFEFEF;
|
8
|
-
color: #2E2F30;
|
9
|
-
text-align: center;
|
10
|
-
font-family: arial, sans-serif;
|
11
|
-
}
|
12
|
-
|
13
|
-
div.dialog {
|
14
|
-
width: 25em;
|
15
|
-
margin: 4em auto 0 auto;
|
16
|
-
border: 1px solid #CCC;
|
17
|
-
border-right-color: #999;
|
18
|
-
border-left-color: #999;
|
19
|
-
border-bottom-color: #BBB;
|
20
|
-
border-top: #B00100 solid 4px;
|
21
|
-
border-top-left-radius: 9px;
|
22
|
-
border-top-right-radius: 9px;
|
23
|
-
background-color: white;
|
24
|
-
padding: 7px 4em 0 4em;
|
25
|
-
}
|
26
|
-
|
27
|
-
h1 {
|
28
|
-
font-size: 100%;
|
29
|
-
color: #730E15;
|
30
|
-
line-height: 1.5em;
|
31
|
-
}
|
32
|
-
|
33
|
-
body > p {
|
34
|
-
width: 33em;
|
35
|
-
margin: 0 auto 1em;
|
36
|
-
padding: 1em 0;
|
37
|
-
background-color: #F7F7F7;
|
38
|
-
border: 1px solid #CCC;
|
39
|
-
border-right-color: #999;
|
40
|
-
border-bottom-color: #999;
|
41
|
-
border-bottom-left-radius: 4px;
|
42
|
-
border-bottom-right-radius: 4px;
|
43
|
-
border-top-color: #DADADA;
|
44
|
-
color: #666;
|
45
|
-
box-shadow:0 3px 8px rgba(50, 50, 50, 0.17);
|
46
|
-
}
|
47
|
-
</style>
|
48
|
-
</head>
|
49
|
-
|
50
|
-
<body>
|
51
|
-
<!-- This file lives in public/422.html -->
|
52
|
-
<div class="dialog">
|
53
|
-
<h1>The change you wanted was rejected.</h1>
|
54
|
-
<p>Maybe you tried to change something you didn't have access to.</p>
|
55
|
-
</div>
|
56
|
-
<p>If you are the application owner check the logs for more information.</p>
|
57
|
-
</body>
|
58
|
-
</html>
|
data/spec/dummy/public/500.html
DELETED
@@ -1,57 +0,0 @@
|
|
1
|
-
<!DOCTYPE html>
|
2
|
-
<html>
|
3
|
-
<head>
|
4
|
-
<title>We're sorry, but something went wrong (500)</title>
|
5
|
-
<style>
|
6
|
-
body {
|
7
|
-
background-color: #EFEFEF;
|
8
|
-
color: #2E2F30;
|
9
|
-
text-align: center;
|
10
|
-
font-family: arial, sans-serif;
|
11
|
-
}
|
12
|
-
|
13
|
-
div.dialog {
|
14
|
-
width: 25em;
|
15
|
-
margin: 4em auto 0 auto;
|
16
|
-
border: 1px solid #CCC;
|
17
|
-
border-right-color: #999;
|
18
|
-
border-left-color: #999;
|
19
|
-
border-bottom-color: #BBB;
|
20
|
-
border-top: #B00100 solid 4px;
|
21
|
-
border-top-left-radius: 9px;
|
22
|
-
border-top-right-radius: 9px;
|
23
|
-
background-color: white;
|
24
|
-
padding: 7px 4em 0 4em;
|
25
|
-
}
|
26
|
-
|
27
|
-
h1 {
|
28
|
-
font-size: 100%;
|
29
|
-
color: #730E15;
|
30
|
-
line-height: 1.5em;
|
31
|
-
}
|
32
|
-
|
33
|
-
body > p {
|
34
|
-
width: 33em;
|
35
|
-
margin: 0 auto 1em;
|
36
|
-
padding: 1em 0;
|
37
|
-
background-color: #F7F7F7;
|
38
|
-
border: 1px solid #CCC;
|
39
|
-
border-right-color: #999;
|
40
|
-
border-bottom-color: #999;
|
41
|
-
border-bottom-left-radius: 4px;
|
42
|
-
border-bottom-right-radius: 4px;
|
43
|
-
border-top-color: #DADADA;
|
44
|
-
color: #666;
|
45
|
-
box-shadow:0 3px 8px rgba(50, 50, 50, 0.17);
|
46
|
-
}
|
47
|
-
</style>
|
48
|
-
</head>
|
49
|
-
|
50
|
-
<body>
|
51
|
-
<!-- This file lives in public/500.html -->
|
52
|
-
<div class="dialog">
|
53
|
-
<h1>We're sorry, but something went wrong.</h1>
|
54
|
-
</div>
|
55
|
-
<p>If you are the application owner check the logs for more information.</p>
|
56
|
-
</body>
|
57
|
-
</html>
|
File without changes
|
data/spec/email_spec.rb
DELETED
@@ -1,95 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Maily::Email do
|
4
|
-
let(:mailer) { Maily::Mailer.find('notifier') }
|
5
|
-
|
6
|
-
context "with no arguments" do
|
7
|
-
let (:email) { mailer.find_email('welcome') }
|
8
|
-
|
9
|
-
it "should not require hook" do
|
10
|
-
expect(email.required_arguments).to be_blank
|
11
|
-
expect(email.require_hook?).to be false
|
12
|
-
end
|
13
|
-
|
14
|
-
it ".call" do
|
15
|
-
expect { email.call }.to_not raise_error
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
context "with arguments" do
|
20
|
-
let (:email) { mailer.find_email('invitation') }
|
21
|
-
|
22
|
-
it "should require hook" do
|
23
|
-
expect(email.required_arguments).to be_present
|
24
|
-
expect(email.require_hook?).to be true
|
25
|
-
end
|
26
|
-
|
27
|
-
it 'should handle lazy arguments successfully' do
|
28
|
-
expect(email.arguments).to be_present
|
29
|
-
expect(email.arguments.size).to eq(email.required_arguments.size)
|
30
|
-
end
|
31
|
-
|
32
|
-
it 'should handle not lazy arguments successfully' do
|
33
|
-
allow(email).to receive(:email).and_return('foo@foo.com')
|
34
|
-
|
35
|
-
expect(email.arguments).to be_present
|
36
|
-
expect(email.arguments.size).to eq(email.required_arguments.size)
|
37
|
-
end
|
38
|
-
|
39
|
-
it ".call" do
|
40
|
-
expect { email.call }.to_not raise_error
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
it "should handle template_path via hook" do
|
45
|
-
email = mailer.find_email('recommendation')
|
46
|
-
|
47
|
-
expect(email.template_path).to eq('notifications')
|
48
|
-
end
|
49
|
-
|
50
|
-
it "should handle template_name via hook" do
|
51
|
-
email = mailer.find_email('custom_template_name')
|
52
|
-
|
53
|
-
expect(email.template_name).to eq('invitation')
|
54
|
-
end
|
55
|
-
|
56
|
-
it "should handle description via hook" do
|
57
|
-
email = mailer.find_email('recommendation')
|
58
|
-
|
59
|
-
expect(email.description).to eq('description')
|
60
|
-
end
|
61
|
-
|
62
|
-
describe '#validate_arguments' do
|
63
|
-
it 'emails with no arguments required' do
|
64
|
-
email = mailer.find_email('welcome')
|
65
|
-
expect(email.validate_arguments).to eq [true, nil]
|
66
|
-
|
67
|
-
email.arguments = ["asd"]
|
68
|
-
expect(email.validate_arguments[1]).to eq("welcome email requires at the most 0 arguments, passed 1")
|
69
|
-
end
|
70
|
-
|
71
|
-
it 'emails with arguments required' do
|
72
|
-
email = mailer.find_email('invitation')
|
73
|
-
expect(email.validate_arguments).to eq [true, nil]
|
74
|
-
|
75
|
-
email = mailer.find_email('recommendation')
|
76
|
-
expect(email.validate_arguments[1]).to eq("recommendation email requires at least 1 arguments, passed 0")
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
describe '#path' do
|
81
|
-
it 'with a multipart email defaults to html' do
|
82
|
-
email = mailer.find_email('multipart')
|
83
|
-
|
84
|
-
expect(email.path).to include('multipart.html.erb')
|
85
|
-
expect(email.path('text')).to include('multipart.text.erb')
|
86
|
-
expect(email.path('foo')).to eq nil
|
87
|
-
end
|
88
|
-
|
89
|
-
it 'with other template engines (e.g. Slim)' do
|
90
|
-
email = mailer.find_email('with_slim_template')
|
91
|
-
|
92
|
-
expect(email.path).to include('with_slim_template.html.slim')
|
93
|
-
end
|
94
|
-
end
|
95
|
-
end
|
data/spec/generator_spec.rb
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Maily::Generator do
|
4
|
-
it '.run generates valid fixtures and hooks for current application' do
|
5
|
-
expect(Maily::Generator.run).to eq <<-HOOKS.strip_heredoc
|
6
|
-
email = ''
|
7
|
-
|
8
|
-
Maily.hooks_for('Notifier') do |mailer|
|
9
|
-
mailer.register_hook(:invitation, email)
|
10
|
-
mailer.register_hook(:recommendation, email)
|
11
|
-
end
|
12
|
-
HOOKS
|
13
|
-
end
|
14
|
-
end
|
data/spec/mailer_spec.rb
DELETED
@@ -1,41 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Maily::Mailer do
|
4
|
-
let(:mailer) { Maily::Mailer.find('notifier') }
|
5
|
-
|
6
|
-
it "should load mailers" do
|
7
|
-
expect(Maily::Mailer.all.keys).to include('application_mailer', 'notifier')
|
8
|
-
end
|
9
|
-
|
10
|
-
it "should build emails" do
|
11
|
-
expect(mailer.emails.size).to eq(7)
|
12
|
-
end
|
13
|
-
|
14
|
-
it "should find mailers by name" do
|
15
|
-
expect(Maily::Mailer.find('notifier').name).to eq('notifier')
|
16
|
-
end
|
17
|
-
|
18
|
-
it "should find emails by name" do
|
19
|
-
expect(mailer.find_email('welcome').name).to eq('welcome')
|
20
|
-
end
|
21
|
-
|
22
|
-
it "allow to add inherited emails via a hook" do
|
23
|
-
expect(mailer.find_email('generic_welcome').name).to eq('generic_welcome')
|
24
|
-
end
|
25
|
-
|
26
|
-
it "allows to hide email" do
|
27
|
-
expect(mailer.find_email('hidden')).to be nil
|
28
|
-
end
|
29
|
-
|
30
|
-
it ".list returns an array with all mailers" do
|
31
|
-
list = Maily::Mailer.list
|
32
|
-
|
33
|
-
expect(list).to be_an_instance_of(Array)
|
34
|
-
expect(list.sample).to be_an_instance_of(Maily::Mailer)
|
35
|
-
end
|
36
|
-
|
37
|
-
it "#emails_list returns an array with all emails" do
|
38
|
-
expect(mailer.emails_list).to be_an_instance_of(Array)
|
39
|
-
expect(mailer.emails_list.sample).to be_an_instance_of(Maily::Email)
|
40
|
-
end
|
41
|
-
end
|
data/spec/maily_spec.rb
DELETED
@@ -1,42 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Maily do
|
4
|
-
it "#setup should initialize with some defaults if no block is provided" do
|
5
|
-
Maily.setup
|
6
|
-
|
7
|
-
expect(Maily.enabled).to be true
|
8
|
-
expect(Maily.allow_edition).to be true
|
9
|
-
expect(Maily.allow_delivery).to be true
|
10
|
-
expect(Maily.available_locales).to eq([:en, :es, :pt, :fr])
|
11
|
-
expect(Maily.base_controller).to eq('ActionController::Base')
|
12
|
-
expect(Maily.http_authorization).to be nil
|
13
|
-
end
|
14
|
-
|
15
|
-
describe '#allowed_action?' do
|
16
|
-
it "should not allow edition if edition is disabled" do
|
17
|
-
Maily.allow_edition = false
|
18
|
-
|
19
|
-
expect(Maily.allowed_action?(:edit)).to be false
|
20
|
-
expect(Maily.allowed_action?(:update)).to be false
|
21
|
-
end
|
22
|
-
|
23
|
-
it "should not allow delivery if delivery is disabled" do
|
24
|
-
Maily.allow_delivery = false
|
25
|
-
|
26
|
-
expect(Maily.allowed_action?(:deliver)).to be false
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
describe '#hooks_for' do
|
31
|
-
it "allows to register external hooks" do
|
32
|
-
class ExternalMailer < ActionMailer::Base
|
33
|
-
def external_email
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
Maily.hooks_for('ExternalMailer')
|
38
|
-
|
39
|
-
expect(Maily::Mailer.find('external_mailer').emails.count).to eq 1
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
data/spec/spec_helper.rb
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
ENV['RAILS_ENV'] = 'test'
|
2
|
-
|
3
|
-
require File.expand_path("../dummy/config/environment.rb", __FILE__)
|
4
|
-
require 'rspec/rails'
|
5
|
-
require 'maily'
|
6
|
-
|
7
|
-
RSpec.configure do |config|
|
8
|
-
config.mock_with :rspec
|
9
|
-
config.order = 'random'
|
10
|
-
end
|
11
|
-
|
12
|
-
# Rails 4.2 call `initialize` inside `recycle!`. However Ruby 2.6 doesn't allow calling `initialize` twice.
|
13
|
-
# More info: https://github.com/rails/rails/issues/34790
|
14
|
-
if RUBY_VERSION >= "2.6.0" && Rails.version < "5"
|
15
|
-
module ActionController
|
16
|
-
class TestResponse < ActionDispatch::TestResponse
|
17
|
-
def recycle!
|
18
|
-
@mon_mutex_owner_object_id = nil
|
19
|
-
@mon_mutex = nil
|
20
|
-
initialize
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|