NameError: undefined method ‘parse’ for class ‘NilClass’ when doing Time.zone.pa...
source link: https://mensfeld.pl/2019/10/nameerror-undefined-method-parse-for-class-nilclass-when-doing-time-zone-parse/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
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.
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK