ruby-on-rails - 你如何在 heroku 中运行 "Rails Runner"?

标签 ruby-on-rails ruby heroku

这是我正在尝试做的事情:查找是否有人发布了有关所提供的特定类(class)的推文。如果确实有人发布了关于它的推文,我想将该推文保存到我的推文模型中,然后在相应的类(class)页面中显示该推文。

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

def get_course_tweets
  @courses = Course.all
  @courses.each do |course|
    url = course.url
    tweets = Twitter.search(url, {:rpp => 100, :recent => true, :show_user => true})
    tweets.each do |tweet_info|
      unless Tweet.find_by_tweet_id(tweet_info.id).present?
        tweet = Tweet.new
        tweet.course_id = course.id
        tweet.tweet_id = tweet_info.id
        tweet.tweet_text = tweet_info.text
        tweet.from_user = tweet_info.from_user
        begin
          tweet.save!
        rescue => error
          puts error
        end
      end
    end
  end
end

编辑:

我从 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"

最佳答案

从你的错误可以看出

value "186306985577299969" is out of range for type integer

你需要使用不同的数据类型(对于 tweet_id,我相信),大概是 BIGINT , 范围从 -9223372036854775808 到 9223372036854775807.

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

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

请注意,当您拯救时,您应该始终进行某种记录或报告,否则像这样的错误会变得很难追踪,因为它们会悄无声息地被绕过。

关于ruby-on-rails - 你如何在 heroku 中运行 "Rails Runner"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10055499/

相关文章:

ruby-on-rails - Ruby Devise,SessionsController.create,json - 获取 NameError : undefined 'build_resource' ?

ruby - 如何在 Ruby 中制作 super 简单的 API 包装器?

javascript - Heroku 和 Rails 4 : Heroku isn't finding my nested folder under assets/javascripts

javascript - 在 Rails 中渲染页面后计算值

mysql - 加快 rails 查询速度

Ruby 全局变量

mysql - jruby公共(public)数据库适配器

ruby-on-rails - 自定义函数后的rails事件记录has_many外键

ruby-on-rails - 通过定义虚拟属性在 Rails 表单验证中获取 current_user

java - 我应该如何修复这个由于在 Heroku 上运行而导致的 Java 错误?