1

twitterstream api をヒットし、特定の場所からデータベースにツイートを挿入する rake タスクを実行する必要がある ruby​​ on rails アプリケーションがあります。このために、uncat_tweets というテーブルを作成しました。私のレーキタスクは次のようになります

task :get_uncat_tweets => :environment do
  TweetStream.configure do |c|
    ...
    ...
  end

  puts "#{UncatTweets.count}

  client = TweetStream::Client.new()
  client.locations(coordinates) do |status|
    puts "#{status.text}"
    t = UncatTweets.new()
    t.text = status.text
    t.long = ...
    t.lat = ...
    t.time = ....
    t.save!
  end

私の uncat_tweets モデルは次のようになります。

class UncatTweets < ActiveRecord::Base
  attr_accessible :lat, :long, :text, :time, :user
end

rake get_uncat_tweets を実行すると、つぶやきストリームが機能し、つぶやきを吐き出します。しかし、rake タスクはデータベースにプッシュしていません。ラインputs "#{UncatTweets.count}"が戻ります。Rails コンソールに行き、UncatTweets のダミー値を挿入しようとしたところ、うまくいきました! しかし、rake タスクを実行すると、プログラムはエラーなしで進行しますが、データベースにプッシュすることはありません。ここで何が起こっているのですか?この問題の解決策が見つかりません。私を助けてください

4

1 に答える 1

0

これが Rails 3 であると仮定すると、Rails 3 の方法に従ってこれを行う必要があります。

db/seeds.rbまず、 Rails アプリを開きます。次のように設定します (上記の rake タスクに基づいて):

TweetStream.configure do |c|
  ...
  ...
end

puts "Number of tweets: #{UncatTweets.count}"

client = TweetStream::Client.new()

# Note you will have to define the following variable "coordinates" somewhere
client.locations(coordinates) do |status|
  UncatTweets.create(:text => status.text, :long => ..., :lat => ..., :time => ...)
end

そしてそれを実行して実行しますrake db:seed

于 2012-11-01T22:27:20.740 に答える