Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails “你怎么跑?”;钢轨滑道“;在希罗库?_Ruby On Rails_Ruby_Heroku - Fatal编程技术网

Ruby on rails “你怎么跑?”;钢轨滑道“;在希罗库?

Ruby on rails “你怎么跑?”;钢轨滑道“;在希罗库?,ruby-on-rails,ruby,heroku,Ruby On Rails,Ruby,Heroku,以下是我试图做的事情:查找是否有人在推特上发布了关于提供的特定课程的信息。如果确实有人发过推文,我想将该推文保存到我的推文模型中,然后在相应的课程页面中显示该推文 脚本通过运行rails运行程序get_tweets.rb在本地运行,但在Heroku上,脚本似乎得到了执行,但没有写入数据库。在heroku中,我正在运行heroku run rails runner get_tweets.rb(使用Cedar堆栈) 编辑: 我从rescue得到的当前错误如下: PG::Error: ERROR:

以下是我试图做的事情:查找是否有人在推特上发布了关于提供的特定课程的信息。如果确实有人发过推文,我想将该推文保存到我的推文模型中,然后在相应的课程页面中显示该推文

脚本通过运行
rails运行程序get_tweets.rb在本地运行,但在Heroku上,脚本似乎得到了执行,但没有写入数据库。在heroku中,我正在运行heroku run rails runner get_tweets.rb(使用Cedar堆栈)

编辑:

我从rescue得到的当前错误如下:

PG::Error: ERROR:  value "186306985577299969" is out of range for type integer : INSERT INTO "tweets" ("book_id", "course_id", "created_at", "from_user", "tutorial_id",     "tweet_already_exists", "tweet_id", "tweet_posted_to_reviews", "tweet_text", "updated_at") VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) RETURNING "id"

从你的错误中可以看出

值“186306985577299969”超出整型的范围

您需要使用不同的数据类型(我认为对于tweet\u id
),大概是a,范围从-9223372036854775808到9223372036854775807

要在Rails中执行此操作,您可以在
up
迁移中通过
:limit=>8

change_column :tweets, :tweet_id, :integer, :limit => 8

请注意,当您营救时,您应该总是做一些日志记录或报告,否则像这样的bug会变得很难追踪,因为它们会被悄悄地绕过。

Twitter API实际上会为推特和用户返回两种类型的ID,一种是数字,其中,另一个是数字的字符串表示形式。这是因为这是一个非常现实的可能性,他们将有这么多的推特和用户,ID的可以在不同的实现溢出。如果在插入时使用字符串作为值,则不应再发生这种情况


该字段名为id_str

如果它确实执行了
rescue
操作,也许你应该打印出错误,看看是否有错误发生?嗨,安德鲁,这里是我得到的错误:PG::error:error:value“186306985577299969”超出了整型的范围:插入“tweets”(“book_id”,“course_id”,“created_at”,“from_user”,“tutorial_id”,“tweet_已经存在”、“tweet_id”、“tweet_发布到_评论”、“tweet_文本”、“更新的_at”)值($1、$2、$3、$4、$5、$6、$7、$8、$9、$10)返回“id”“嗨,安德鲁,非常感谢你!下面是我最后做的:
t.column:tweet\u id,:bigint
出于好奇,在这种情况下:limit=>8会做什么?它指示它使用一个8字节的整数,即
bigint
,我没想到
:bigint
会在迁移中作为一种类型工作,因为它似乎在我能找到的任何地方都没有文档记录。太棒了!非常感谢你的帮助,让我开心!
change_column :tweets, :tweet_id, :integer, :limit => 8