我再次在Rails中苦苦挣扎日期格式。我试图比较一个从ActiveRecord的日期到在cron rake中创建推文的日期,但是我收到了我不明白的错误。长期解析Twitter日期为整数
"Wed Feb 02 23:04:18 +0000 2011"
1296687858
2009-08-31 07:00:00 UTC
1251698400
survived
"Wed Feb 02 22:31:33 +0000 2011"
1296685893
2009-08-31 07:00:00 UTC
1251698400
survived
"Wed Feb 02 22:24:00 +0000 2011"
1296685440
2009-08-31 07:00:00 UTC
1251698400
survived
"Wed Feb 02 20:40:57 +0000 2011"
1296679257
2009-08-31 07:00:00 UTC
1251698400
survived
"Fri Jan 28 22:17:23 +0000 2011"
1296253043
2009-08-31 07:00:00 UTC
1251698400
survived
rake aborted!
can't convert String into Integer
/Users/phil/Sites/travlrapp.com/lib/tasks/cron.rake:29:in `[]'
/Users/phil/Sites/travlrapp.com/lib/tasks/cron.rake:29:in `fetch_tweets'
/Users/phil/Sites/travlrapp.com/lib/tasks/cron.rake:27:in `each'
/Users/phil/Sites/travlrapp.com/lib/tasks/cron.rake:27:in `fetch_tweets'
/Users/phil/Sites/travlrapp.com/lib/tasks/cron.rake:12:in `each'
/Users/phil/Sites/travlrapp.com/lib/tasks/cron.rake:12:in `fetch_tweets'
/Users/phil/Sites/travlrapp.com/lib/tasks/cron.rake:160
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in `call'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in `execute'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:631:in `each'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:631:in `execute'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:597:in `invoke_with_call_chain'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/monitor.rb:242:in `synchronize'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:590:in `invoke_with_call_chain'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:583:in `invoke'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2051:in `invoke_task'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `top_level'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `each'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `top_level'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2023:in `top_level'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2001:in `run'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:1998:in `run'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/bin/rake:31
/usr/bin/rake:19:in `load'
/usr/bin/rake:19
这行29放鸣叫[“created_at”]。检查,但如果我删除,这将在不久后谈到的if语句致命错误。
desc "Automated Tasks"
task :cron => :environment do
# TASK FUNCTIONS
def fetch_tweets
users = User.find(
:all,
:include => [ :authentications, :current_trip ],
:conditions => 'trips.id > 0'
)
users.each do |user|
auth = user.authentications.find(:first, :conditions => { :provider => 'twitter' })
# Only bother if they are connected to twitter
if user.current_trip and auth and auth['token'] and auth['secret'] then
# Exchange our oauth_token and oauth_token secret for the AccessToken instance.
access_token = Twitter.connect(auth['token'], auth['secret'])
# use the access token as an agent to get the home timeline
response = access_token.request(:get, "http://api.twitter.com/1/statuses/user_timeline.json")
tweets = ActiveSupport::JSON.decode(response.body)
tweets.each do |tweet|
puts tweet['created_at'].inspect
puts Chronic::parse(tweet['created_at']).to_i
puts ''
puts user.current_trip.start_date
puts Chronic::parse(user.current_trip.start_date).to_i
# has coordinates and was tweeted since the start date
if tweet['coordinates'] != nil and (Chronic::parse(tweet['created_at']).to_i) >= (Chronic::parse(user.current_trip.start_date).to_i)
coords = tweet['coordinates']['coordinates'];
entry = Entry.new
entry.text = tweet['text']
entry.resource = "http://twitter.com/#{tweet['user']['screen_name']}/status/#{tweet['id']}"
entry.source = 'twitter'
entry.user_id = user.id
entry.trip_id = user.current_trip.id
entry.latitude = coords[1]
entry.longitude = coords[0]
entry.published_at = tweet['created_at']
entry.unique = 'twitter-' + (tweet['id']).to_s
puts entry.inspect if entry.save
end
puts 'survived'
puts ''
end
end
end # users.each
end
现在我觉得奇怪的是,它似乎完全转换两个日期,然后显示unix时间进行比较。那么,为什么在某个时候它是致命的错误?
所有鸣叫的“哈希”,并有两个项目分别是“阵列”。 http://d.pr/xrhc我试过“下一个如果tweet.class =='阵列'”,但没有奏效。 – 2011-02-06 20:33:44