Skip to content

Commit f171fee

Browse files
authored
Merge pull request sidekiq-cron#221 from ngouy/add_date_as_argument+ngouy
add date_as_argument job new property
2 parents 72f4693 + 92990fe commit f171fee

3 files changed

Lines changed: 30 additions & 0 deletions

File tree

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ _Job properties_:
6161
#OPTIONAL
6262
'queue' => 'name of queue',
6363
'args' => '[Array or Hash] of arguments which will be passed to perform method',
64+
'date_as_argument' => true, # add the time of execution as last argument of the perform method
6465
'active_job' => true, # enqueue job through rails 4.2+ active job interface
6566
'queue_name_prefix' => 'prefix', # rails 4.2+ active job queue with prefix
6667
'queue_name_delimiter' => '.', # rails 4.2+ active job queue with custom delimiter

lib/sidekiq/cron/job.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,7 @@ def initialize input_args = {}
281281

282282
#get right arguments for job
283283
@args = args["args"].nil? ? [] : parse_args( args["args"] )
284+
@args += [Time.now.to_f] if args["date_as_argument"]
284285

285286
@active_job = args["active_job"] == true || ("#{args["active_job"]}" =~ (/^(true|t|yes|y|1)$/i)) == 0 || false
286287
@active_job_queue_name_prefix = args["queue_name_prefix"]

test/unit/job_test.rb

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,34 @@
223223
"class"=>"CronTestClassWithQueue",
224224
"args"=>[]}
225225
end
226+
227+
it "be initialized with 'class' and date_as_argument" do
228+
job = Sidekiq::Cron::Job.new('class' => 'CronTestClassWithQueue', "date_as_argument" => true)
229+
230+
job_message = job.message
231+
job_args = job_message.delete("args")
232+
assert_equal job_message, {"retry"=>false,
233+
"queue"=>:super,
234+
"backtrace"=>true,
235+
"class"=>"CronTestClassWithQueue"}
236+
assert job_args[-1].is_a?(Float)
237+
assert job_args[-1].between?(Time.now.to_f - 1, Time.now.to_f)
238+
end
239+
240+
it "be initialized with 'class', 2 arguments and date_as_argument" do
241+
job = Sidekiq::Cron::Job.new('class' => 'CronTestClassWithQueue', "date_as_argument" => true, "args"=> ["arg1", :arg2])
242+
243+
job_message = job.message
244+
job_args = job_message.delete("args")
245+
assert_equal job_message, {"retry"=>false,
246+
"queue"=>:super,
247+
"backtrace"=>true,
248+
"class"=>"CronTestClassWithQueue"}
249+
assert job_args[-1].is_a?(Float)
250+
assert job_args[-1].between?(Time.now.to_f - 1, Time.now.to_f)
251+
assert_equal job_args[0..-2], ["arg1", :arg2]
252+
end
253+
226254
end
227255

228256
describe "cron test" do

0 commit comments

Comments
 (0)