If you get following error when trying to parse time:
Time.zone.parse('2019-01-01 11:11:11') Traceback (most recent call last): 16: from /bundler/friendly_errors.rb:124:in `with_friendly_errors' 15: from /bundle:30:in `block in <top (required)>' 14: from /bundler/cli.rb:18:in `start' 13: from /bundler/vendor/thor/lib/thor/base.rb:466:in `start' 12: from /bundler/cli.rb:27:in `dispatch' 11: from /bundler/vendor/thor/lib/thor.rb:387:in `dispatch' 10: from /bundler/vendor/thor/lib/thor/invocation.rb:126:in `invoke_command' 9: from /bundler/vendor/thor/lib/thor/command.rb:27:in `run' 8: from /bundler/cli.rb:465:in `exec' 7: from /bundler/cli/exec.rb:28:in `run' 6: from /bundler/cli/exec.rb:74:in `kernel_load' 5: from /bundler/cli/exec.rb:74:in `load' 4: from bin/irb:23:in `<top (required)>' 3: from bin/irb:23:in `load' 2: from lib/ruby/gems/2.6.0/gems/irb-1.0.0/exe/irb:11:in `<top (required)>' 1: from (irb):5 NoMethodError (undefined method `parse' for nil:NilClass)
it means you've forgotten to set the timezone:
Time.zone = 'UTC'
Also, keep in mind, that each time you spin up a new thread, it won't have a timezone defined (outside of Rails):
Time.zone = 'UTC' Time.zone.parse('2019-01-01 11:11:11') # works Thread.abort_on_exception = true # fails Thread.new do Time.zone.parse('2019-01-01 11:11:11') end # NoMethodError: undefined method `parse' for nil:NilClass
In order to fix that, you need to set the time zone in each of your newly created threads:
Time.zone = 'UTC' Time.zone.parse('2019-01-01 11:11:11') # works Thread.abort_on_exception = true # works Thread.new do Time.zone = 'UTC' Time.zone.parse('2019-01-01 11:11:11') end
Cover photo by Alex The Shutter on Attribution-NonCommercial 2.0 Generic (CC BY-NC 2.0) license.
March 22, 2024 — 17:28
Hi There,
Many thanks for posting this error, this was a life saver. Albeit this would have been relatively straight forward figure the problem with the aid of a good debugging environment my use case was I was deploying this to a docker container. The api worked no problem when I simulated the api call via the IDE but for the life of me I couldn’t figure why it wouldn’t work on the docker container.
Then this post came to the rescue. I wish you a good day.
Kind Regards,
~Bhréin