Skip to content

Commit c915561

Browse files
committed
Don't fail when recurring tasks are defined for another environment
For example, `production` only, and the configuration is being loaded for `development`. In this case, we can't take the env key as the task definition, failing to load Solid Queue at all. Fixes #468
1 parent e0921d2 commit c915561

File tree

3 files changed

+12
-2
lines changed

3 files changed

+12
-2
lines changed

lib/solid_queue/configuration.rb

+2-2
Original file line numberDiff line numberDiff line change
@@ -141,8 +141,8 @@ def dispatchers_options
141141

142142
def recurring_tasks
143143
@recurring_tasks ||= recurring_tasks_config.map do |id, options|
144-
RecurringTask.from_configuration(id, **options)
145-
end
144+
RecurringTask.from_configuration(id, **options) if options.has_key?(:schedule)
145+
end.compact
146146
end
147147

148148
def processes_config
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
production:
2+
periodic_store_result:
3+
class: StoreResultJob
4+
queue: default
5+
args: [ 42, { status: "custom_status" } ]
6+
schedule: every second

test/unit/configuration_test.rb

+4
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,10 @@ class ConfigurationTest < ActiveSupport::TestCase
9999
assert SolidQueue::Configuration.new(recurring_schedule_file: config_file_path(:empty_recurring)).valid?
100100
assert SolidQueue::Configuration.new(skip_recurring: true).valid?
101101

102+
configuration = SolidQueue::Configuration.new(recurring_schedule_file: config_file_path(:recurring_with_production_only))
103+
assert configuration.valid?
104+
assert_processes configuration, :scheduler, 0
105+
102106
# No processes
103107
configuration = SolidQueue::Configuration.new(skip_recurring: true, dispatchers: [], workers: [])
104108
assert_not configuration.valid?

0 commit comments

Comments
 (0)