I\'m currently using Sidekiq in a project and I have the following YAML config file:
:concurrency: 5
:pidfile: /tmp/pids/sidekiq.pid
:logfile: log/sidekiq.log
st
It is actually not sidekiq specific. The colon in front of a key just makes this key a symbol instead of a string:
# example.yml
a:
value: 1
:b:
value: 2
yaml = YAML.load_file('example.yml')
yaml["a"] => { "value" => 1 }
yaml[:b] => { "value" => 1 }
So if your code accesses the config with key symbols, you should either add a colon in front of the key in the yaml file, or use some conversion of keys like #with_indifferent_access
for the result hash (after parsing the yaml file)
YAML keys starting with a colon generate symbolized keys in Ruby, whereas keys without a colon will generate stringified keys:
require 'yaml'
string =<<-END_OF_YAML
:concurrency: 5
:pidfile: /tmp/pids/sidekiq.pid
:logfile: log/sidekiq.log
staging:
:concurrency: 10
production:
:concurrency: 20
queues:
- default
END_OF_YAML
YAML.load(string)
# {
# :concurrency => 5,
# :pidfile => "/tmp/pids/sidekiq.pid",
# :logfile => "log/sidekiq.log",
# "staging" => {
# :concurrency => 10
# },
# "production" => {
# :concurrency => 20
# },
# "queues" => [
# [0] "default"
# ]
# }
Note: If a gem depends on symbolized keys then the stringified keys will not override its defaults.