undefined method `year' for nil:NilClass
I am facing this error only in Ruby 2.2.0 as I recently upgraded to latest Ruby 2.2.0
Here is the console log
2.2.0 :008 > Time.zone.parse("2014-12-29 20:16:32 -0400") NoMethodError: undefined method `year' for nil:NilClass from /.rvm/gems/ruby-2.2.0/gems/activesupport-3.2.18/lib/active_support/values/time_zone.rb:275:in `parse' from (irb):8 from /.rvm/gems/ruby-2.2.0/gems/railties-3.2.18/lib/rails/commands/console.rb:47:in `start' from /.rvm/gems/ruby-2.2.0/gems/railties-3.2.18/lib/rails/commands/console.rb:8:in `start' from /.rvm/gems/ruby-2.2.0/gems/railties-3.2.18/lib/rails/commands.rb:41:in `<top (required)>'
Whereas same works fine in Ruby 2.1.2
2.1.2 :001 > Time.zone.parse("2014-12-29 20:16:32 -0400") => Tue, 30 Dec 2014 00:16:32 UTC +00:00
Am I doing something wrong here? Do I need to use any other gem to make this work. Some 700 specs fail for my project after upgrading to Ruby 2.2.0 due to this undefined method 'year' errors.
Would highly appreciate your immediate help in this regard. Thanks in advance.
Updated by rohandaxini (Rohan Daxini) over 5 years ago
Hiroshi SHIBATA wrote:
You should report rails/rails repository in github at first
Sorry but I did not know this is Rails issue. As the same code works fine on Ruby 2.1.2 but throws error on Ruby 2.2.0 despite keeping same Active record.
Updated by Anonymous over 5 years ago
Could the behavior of the following code have changed between Ruby 2.1.2 and Ruby 2.2.0?
In the Rails 3.2.21 with Ruby 2.1.2 version of activesupport the following works:
def parse(str, now=now)
With Ruby 2.2.0 it no longer works as the now on the right side is evaluated as nil. In the latest version of activesupport on master on github that line has changed to the following:
def parse(str, now=now())
With 2.2.0 is it now necessary to use the () when referencing a function with the same name a default value assignment?
Updated by nobu (Nobuyoshi Nakada) over 5 years ago
- Description updated (diff)