Проблема с .next_month в Ruby - PullRequest
       52

Проблема с .next_month в Ruby

0 голосов
/ 03 сентября 2011

В моей местной среде все работает отлично.Когда я загружаю на свой сервер, я продолжаю получать внутреннюю ошибку сервера.Я закомментировал свой код, пока не нашел ошибочную строку:

 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 локально:

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'

Я вставил строку: ставит dateObj.kind_of?Дата

и я все понимаю.Так что мой dateObj имеет вид Date

1 Ответ

1 голос
/ 03 сентября 2011

Кажется, вам не хватает

require 'active_support'

Кстати, если все, что вам нужно, это next_month, вы можете использовать

date_obj >>= 1

как Date#>> является частью базовой библиотеки.

Edit:

Для получения первого числа месяца вы можете использовать:

Date.new(date_obj.year, date_obj.month)
...