我再次在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