Ruby version: 2.4.0
Sidekiq / Pro / Enterprise version(s):
Sidekiq
Please include your initializer and any error message with the full backtrace.
I am moving from Delayed Job to Sidekiq in a Rails 5.1 project. I have a sidekiq.yml configuration file with the following contents:
:concurrency: 5
:queues:
— mailers
- default
This matches the expected format documented at https://github.com/mperham/sidekiq/wiki/Advanced-Options
However, when Sidekiq starts (e.g., locally with bundle exec sidekiq), it fails with this stack trace:
undefined method `each' for "— [mailers, 2] - [default, 2]":String
/Users/Will/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/sidekiq-5.0.0/lib/sidekiq/cli.rb:403:in `parse_queues'
/Users/Will/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/sidekiq-5.0.0/lib/sidekiq/cli.rb:388:in `parse_config'
/Users/Will/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/sidekiq-5.0.0/lib/sidekiq/cli.rb:222:in `setup_options'
/Users/Will/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/sidekiq-5.0.0/lib/sidekiq/cli.rb:39:in `parse'
/Users/Will/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/sidekiq-5.0.0/bin/sidekiq:11:in `<top (required)>'
/Users/Will/.rbenv/versions/2.4.0/bin/sidekiq:22:in `load'
/Users/Will/.rbenv/versions/2.4.0/bin/sidekiq:22:in `<top (required)>'
/Users/Will/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.14.6/lib/bundler/cli/exec.rb:74:in `load'
/Users/Will/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.14.6/lib/bundler/cli/exec.rb:74:in `kernel_load'
/Users/Will/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.14.6/lib/bundler/cli/exec.rb:27:in `run'
/Users/Will/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.14.6/lib/bundler/cli.rb:335:in `exec'
/Users/Will/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.14.6/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/Users/Will/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.14.6/lib/bundler/vendor/thor/lib/thor/invocation.rb:126:in `invoke_command'
/Users/Will/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.14.6/lib/bundler/vendor/thor/lib/thor.rb:359:in `dispatch'
/Users/Will/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.14.6/lib/bundler/cli.rb:20:in `dispatch'
/Users/Will/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.14.6/lib/bundler/vendor/thor/lib/thor/base.rb:440:in `start'
/Users/Will/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.14.6/lib/bundler/cli.rb:11:in `start'
/Users/Will/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.14.6/exe/bundle:32:in `block in <top (required)>'
/Users/Will/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.14.6/lib/bundler/friendly_errors.rb:121:in `with_friendly_errors'
/Users/Will/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.14.6/exe/bundle:24:in `<top (required)>'
/Users/Will/.rbenv/versions/2.4.0/bin/bundle:22:in `load'
/Users/Will/.rbenv/versions/2.4.0/bin/bundle:22:in `<main>'
My initializer:
# config/initializers/sidekiq.rb
# See https://medium.com/@benhansen/setting-up-sidekiq-redis-on-aws-elastic-beanstalk-with-elasticache-2efeb32935fe
rails_root = Rails.root || File.dirname(__FILE__) + '/../..'
rails_env = Rails.env || 'development'
redis_config = YAML.load_file(rails_root.to_s + '/config/redis.yml')
redis_config.merge! redis_config.fetch(rails_env, {})
redis_config.symbolize_keys!
Sidekiq.configure_server do |config|
config.redis = { url: "redis://#{redis_config[:host]}:#{redis_config[:port]}/12" }
end
Sidekiq.configure_client do |config|
config.redis = { url: "redis://#{redis_config[:host]}:#{redis_config[:port]}/12" }
end)
Are you using an old version? No.
Have you checked the changelog to see if your issue has been fixed in a later version?
Yes
Invalid yaml. I'd guess a tabs/spaces issue.
On May 3, 2017, at 10:14 PM, Will Friedman notifications@github.com wrote:
Ruby version: 2.4.0
Sidekiq / Pro / Enterprise version(s):
Sidekiq
Please include your initializer and any error message with the full backtrace.I am moving from Delayed Job to Sidekiq in a Rails 5.1 project. I have a sidekiq.yml configuration file with the following contents:
:concurrency: 5
:queues:
— mailers
- default
This matches the expected format documented at https://github.com/mperham/sidekiq/wiki/Advanced-OptionsHowever, when Sidekiq starts (e.g., locally with bundle exec sidekiq), it fails with this stack trace:
undefined method
each' for "— [mailers, 2] - [default, 2]":String /Users/Will/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/sidekiq-5.0.0/lib/sidekiq/cli.rb:403:inparse_queues'
/Users/Will/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/sidekiq-5.0.0/lib/sidekiq/cli.rb:388:inparse_config' /Users/Will/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/sidekiq-5.0.0/lib/sidekiq/cli.rb:222:insetup_options'
/Users/Will/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/sidekiq-5.0.0/lib/sidekiq/cli.rb:39:inparse' /Users/Will/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/sidekiq-5.0.0/bin/sidekiq:11:in/Users/Will/.rbenv/versions/2.4.0/bin/sidekiq:22:in load' /Users/Will/.rbenv/versions/2.4.0/bin/sidekiq:22:in/Users/Will/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.14.6/lib/bundler/cli/exec.rb:74:in load' /Users/Will/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.14.6/lib/bundler/cli/exec.rb:74:inkernel_load'
/Users/Will/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.14.6/lib/bundler/cli/exec.rb:27:inrun' /Users/Will/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.14.6/lib/bundler/cli.rb:335:inexec'
/Users/Will/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.14.6/lib/bundler/vendor/thor/lib/thor/command.rb:27:inrun' /Users/Will/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.14.6/lib/bundler/vendor/thor/lib/thor/invocation.rb:126:ininvoke_command'
/Users/Will/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.14.6/lib/bundler/vendor/thor/lib/thor.rb:359:indispatch' /Users/Will/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.14.6/lib/bundler/cli.rb:20:indispatch'
/Users/Will/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.14.6/lib/bundler/vendor/thor/lib/thor/base.rb:440:instart' /Users/Will/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.14.6/lib/bundler/cli.rb:11:instart'
/Users/Will/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.14.6/exe/bundle:32:inblock in <top (required)>' /Users/Will/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.14.6/lib/bundler/friendly_errors.rb:121:inwith_friendly_errors'
/Users/Will/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.14.6/exe/bundle:24:in<top (required)>' /Users/Will/.rbenv/versions/2.4.0/bin/bundle:22:inload'
/Users/Will/.rbenv/versions/2.4.0/bin/bundle:22:in `'
My initializer:config/initializers/sidekiq.rb
See https://medium.com/@benhansen/setting-up-sidekiq-redis-on-aws-elastic-beanstalk-with-elasticache-2efeb32935fe
rails_root = Rails.root || File.dirname(__FILE__) + '/../..'
rails_env = Rails.env || 'development'
redis_config = YAML.load_file(rails_root.to_s + '/config/redis.yml')
redis_config.merge! redis_config.fetch(rails_env, {})
redis_config.symbolize_keys!
Sidekiq.configure_server do |config|
config.redis = { url: "redis://#{redis_config[:host]}:#{redis_config[:port]}/12" }
end
Sidekiq.configure_client do |config|
config.redis = { url: "redis://#{redis_config[:host]}:#{redis_config[:port]}/12" }
end)
Are you using an old version? No.
Have you checked the changelog to see if your issue has been fixed in a later version?
Yeshttps://github.com/mperham/sidekiq/blob/master/Changes.md
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.
Thanks for your quick response, and for a great product. I know YAML needs spaces not tabs. I am using Sublime 3 with translate_tabs_to_spaces set on, and I've confirmed that these are spaces. I'm doing the same thing here that I'm doing in my other YAML files and I don't have an issue with them. When I cut and paste my file into http://www.yamllint.com/, it says it is valid YAML.
If you have any ideas please let me know. Thanks for your time.
That dash in front of "mailers" isn't ASCII.
Wow, good catch. Thanks!
Most helpful comment
That dash in front of "mailers" isn't ASCII.