Я решаю эту проблему, но до сих пор не знаю, почему.
После некоторых попыток в консоли heroku (консоли запуска heroku) я обнаружил, что ошибка не вызвана моим методом add_post. На самом деле это было вызвано моим MicroPost.new:
post = MicroPost.new(..., :pub_date => rss_item.pubDate)
Как показывает код, MicroPost имеет столбец datetime, который называет pub_date, и это поле взято из элемента RSS pubDate, и этот код приведет к появлению ошибки, показанной ниже (на героку):
irb(main):020:0> post=MicroPost.new(:description=>"none", :url=>'url',:title=>"title",:pub_date=>item.pubDate,:tag=>"tag")
ArgumentError: wrong number of arguments (1 for 0)
from /usr/local/lib/ruby/1.9.1/time.rb:454:in `rfc2822'
from /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.1.3/lib/active_support/time_with_zone.rb:168:in `to_s'
from /app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.1.3/lib/active_record/base.rb:1785:in `attribute_for_inspect'
После некоторого поиска, я нашел решение: http://www.spacebabies.nl/2008/06/16/rails-2-and-rss-parsing-gives-weird-errors/
Хотя это Rails2, он все еще работает для меня. просто измените item.pubDate на item.pubDate.to_s
Опять же, кто-нибудь может объяснить, что здесь произошло?
ps, item.pubDate не неправильный, в консоли я могу его распечатать, т.е.:
item.pubDate.class => Time