Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
299a213a
R
rails
项目概览
张重言
/
rails
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rails
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
299a213a
编写于
12月 05, 2018
作者:
R
Rafael França
提交者:
GitHub
12月 05, 2018
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #33992 from kirs/enqueue-return-false
Make AJ::Base#enqueue return false if the job wasn't enqueued
上级
64766511
ee9fc120
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
56 addition
and
1 deletion
+56
-1
activejob/lib/active_job/callbacks.rb
activejob/lib/active_job/callbacks.rb
+3
-0
activejob/lib/active_job/enqueuing.rb
activejob/lib/active_job/enqueuing.rb
+12
-1
activejob/test/cases/callbacks_test.rb
activejob/test/cases/callbacks_test.rb
+29
-0
activejob/test/jobs/abort_before_enqueue_job.rb
activejob/test/jobs/abort_before_enqueue_job.rb
+9
-0
railties/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_6_0.rb.tt
...ates/config/initializers/new_framework_defaults_6_0.rb.tt
+3
-0
未找到文件。
activejob/lib/active_job/callbacks.rb
浏览文件 @
299a213a
...
...
@@ -29,6 +29,9 @@ class << self
included
do
define_callbacks
:perform
define_callbacks
:enqueue
class_attribute
:return_false_on_aborted_enqueue
,
instance_accessor:
false
,
instance_predicate:
false
self
.
return_false_on_aborted_enqueue
=
false
end
# These methods will be included into any Active Job object, adding
...
...
activejob/lib/active_job/enqueuing.rb
浏览文件 @
299a213a
...
...
@@ -48,14 +48,25 @@ def enqueue(options = {})
self
.
scheduled_at
=
options
[
:wait_until
].
to_f
if
options
[
:wait_until
]
self
.
queue_name
=
self
.
class
.
queue_name_from_part
(
options
[
:queue
])
if
options
[
:queue
]
self
.
priority
=
options
[
:priority
].
to_i
if
options
[
:priority
]
successfully_enqueued
=
false
run_callbacks
:enqueue
do
if
scheduled_at
self
.
class
.
queue_adapter
.
enqueue_at
self
,
scheduled_at
else
self
.
class
.
queue_adapter
.
enqueue
self
end
successfully_enqueued
=
true
end
if
successfully_enqueued
self
else
if
self
.
class
.
return_false_on_aborted_enqueue
false
else
ActiveSupport
::
Deprecation
.
warn
"this will return false, set config.active_job.return_false_on_aborted_enqueue = true to remove deprecation."
self
end
end
self
end
end
end
activejob/test/cases/callbacks_test.rb
浏览文件 @
299a213a
...
...
@@ -2,6 +2,7 @@
require
"helper"
require
"jobs/callback_job"
require
"jobs/abort_before_enqueue_job"
require
"active_support/core_ext/object/inclusion"
...
...
@@ -22,4 +23,32 @@ class CallbacksTest < ActiveSupport::TestCase
assert
"CallbackJob ran around_enqueue_start"
.
in?
enqueued_callback_job
.
history
assert
"CallbackJob ran around_enqueue_stop"
.
in?
enqueued_callback_job
.
history
end
test
"#enqueue returns false when before_enqueue aborts callback chain and return_false_on_aborted_enqueue = true"
do
begin
prev
=
ActiveJob
::
Base
.
return_false_on_aborted_enqueue
ActiveJob
::
Base
.
return_false_on_aborted_enqueue
=
true
assert_equal
false
,
AbortBeforeEnqueueJob
.
new
.
enqueue
ensure
ActiveJob
::
Base
.
return_false_on_aborted_enqueue
=
prev
end
end
test
"#enqueue returns self when before_enqueue aborts callback chain and return_false_on_aborted_enqueue = false"
do
begin
prev
=
ActiveJob
::
Base
.
return_false_on_aborted_enqueue
ActiveJob
::
Base
.
return_false_on_aborted_enqueue
=
false
job
=
AbortBeforeEnqueueJob
.
new
assert_deprecated
do
assert_equal
job
,
job
.
enqueue
end
ensure
ActiveJob
::
Base
.
return_false_on_aborted_enqueue
=
prev
end
end
test
"#enqueue returns self when the job was enqueued"
do
job
=
CallbackJob
.
new
assert_equal
job
,
job
.
enqueue
end
end
activejob/test/jobs/abort_before_enqueue_job.rb
0 → 100644
浏览文件 @
299a213a
# frozen_string_literal: true
class
AbortBeforeEnqueueJob
<
ActiveJob
::
Base
before_enqueue
{
throw
(
:abort
)
}
def
perform
raise
"This should never be called"
end
end
railties/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_6_0.rb.tt
浏览文件 @
299a213a
...
...
@@ -15,3 +15,6 @@
# This option is not backwards compatible with earlier Rails versions.
# It's best enabled when your entire app is migrated and stable on 6.0.
# Rails.application.config.action_dispatch.use_cookies_with_metadata = true
# Return false instead of self when #enqueue method was aborted from the callback
Rails.application.config.active_job.return_false_on_aborted_enqueue = true
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录