在我当地的环境中一切正常。当我上传到我的服务器时,我不断收到内部服务器错误。我已经注释掉了我的代码,直到找到了令人讨厌的行:
dateObj = dateObj.next_month #Problem Child
以下是完整的代码:
def makeCal(dateObj)
cal = Hash.new
months = 0
while months < 12
# #pass dateobj to build array
array = buildArray(dateObj)
# #save array to hash with month key
monthName = Date::MONTHNAMES[dateObj.mon]
cal[monthName] = array
# #create new date object using month and set it to the first
date = dateObj.month.to_s + '/' + 1.to_s + '/' + dateObj.year.to_s
dateObj = Date.strptime(date, "%m/%d/%Y")
puts dateObj.kind_of? Date
dateObj = dateObj.next_month #Problem Child
months = months + 1
end
cal
end
ruby -v local:
ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin10.8.0]
和ruby -v远程:
ruby 1.9.2p290 (2011-07-09 revision 32553) [i686-linux]
关于如何解决这个问题的任何想法?
更新
173.26.190.206 - - [03 / Sep / 2011 10:40:17]“POST / calendar”500 30 0.0020
那是来自nginx
这是堆栈跟踪:
NoMethodError - undefined method `next_month' for #<Date: 4911549/2,0,2299161>:
./main.rb:82:in `makeCal'
./main.rb:120:in `POST /calendar'
我插入了一行:puts dateObj.kind_of?日期
我完全正确。所以我的dateObj是亲切的日期
答案 0 :(得分:1)
似乎你缺乏
require 'active_support'
顺便说一句,如果你需要的只是next_month
,你可以使用
date_obj >>= 1
因为Date#>>
是核心库的一部分。
编辑:
要获得本月的第一天,您可以使用:
Date.new(date_obj.year, date_obj.month)