【问题标题】:How do I fix the search discrepancy between local stack (Ruby 1.9.2, Rails 3, MySQL) and Heroku's stack (Ruby 1.9.2, Rails 3, PostgreSQL)?如何修复本地堆栈(Ruby 1.9.2、Rails 3、MySQL)和 Heroku 的堆栈(Ruby 1.9.2、Rails 3、PostgreSQL)之间的搜索差异?
【发布时间】:2011-10-01 21:55:31
【问题描述】:

我很难从本地 (MySQL-Rails3) 堆栈迁移到 Heroku (PostgreSQL) 堆栈。该代码在本地机器上运行良好,但在 Heroku 上会产生不需要的结果。

在我的本地机器上:

tickets = Ticket.where(:created_at => (Time.now.midnight.utc)..(Time.now.end_of_day.utc))  

例如,如果现在的时间是 2011 年 7 月 9 日上午 10:10(当地时间),上述代码将返回今天(UTC 时间 2011 年 7 月 9 日 05:00 至 UTC 时间 2011 年 7 月 10 日 05:00 之间)创建的所有工单。

但在 Heroku 上,无论时间如何,相同的代码都会返回 2011 年 7 月 9 日 UTC 创建的票证。因此将包括 2011 年 7 月 9 日 00:10 UTC 创建的票(即昨天的票)。

我的理解是代码应该适用于 PostgreSQL(显然它不适用)。如何修复它以使搜索条件包括 PostgreSQL 上的时间?

【问题讨论】:

    标签: ruby-on-rails-3 postgresql heroku


    【解决方案1】:

    您会遇到时区问题吗?我猜 Heroku 实例默认以 UTC 运行,因为这确实是唯一合理的默认设置。你可以试试change你的Heroku timezone

    $ heroku config:add TZ=where_ever/you_are
    

    还请查看您的 config.time_zone 设置。

    您还应该将开发环境切换到 PostgreSQL 以匹配您的部署环境。

    【讨论】:

    • 感谢您的回复。我能够设置我的本地机器堆栈以匹配heroku(PostgreSQL)。该代码在本地运行良好。但是在 Heroku 上,它有点不对劲。我会看看 config.time_zone 设置。
    猜你喜欢
    • 2011-06-13
    • 2011-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-22
    • 2011-08-27
    • 2011-07-04
    相关资源
    最近更新 更多