Skip to content

Commit 49ae908

Browse files
committed
Serialize recurring task's arguments using a custom coder
That uses Active Job's arguments serializer/deserializer.
1 parent 7e2b5d1 commit 49ae908

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

app/models/solid_queue/recurring_task.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@
22

33
module SolidQueue
44
class RecurringTask < Record
5-
serialize :arguments, coder: JSON
5+
serialize :arguments, coder: Arguments, default: []
66

77
class << self
88
def wrap(args)
99
args.is_a?(self) ? args : from_configuration(args.first, **args.second)
1010
end
1111

1212
def from_configuration(key, **options)
13-
new(key: key, class_name: options[:class], schedule: options[:schedule], arguments: options[:args] || [])
13+
new(key: key, class_name: options[:class], schedule: options[:schedule], arguments: options[:args])
1414
end
1515
end
1616

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
module SolidQueue
2+
class RecurringTask::Arguments
3+
class << self
4+
def load(data)
5+
data.nil? ? [] : ActiveJob::Arguments.deserialize(ActiveSupport::JSON.load(data))
6+
end
7+
8+
def dump(data)
9+
ActiveSupport::JSON.dump(ActiveJob::Arguments.serialize(data)) unless data.nil?
10+
end
11+
end
12+
end
13+
end

0 commit comments

Comments
 (0)