【问题标题】:How to get rid of postgresql but still use ActiveRecord::RecordNotFound on heroku when using mongohq?使用mongohq时如何摆脱postgresql但仍然在heroku上使用ActiveRecord::RecordNotFound?
【发布时间】:2012-12-03 12:34:27
【问题描述】:

编辑:

如何使用 ActiveRecord::RecordNotFound 异常让 Rails 响应标准的 404?许多地方建议的基本方法是将config/application.rb 修改为不是require "rails/all",而是查看文件:railties/lib/rails/all.rb 并选择您想要/需要的内容。但是,如果你只是省略了关于 active_record 的部分,那么你就不能使用 ActiveRecord::RecordNotFound (显然使用固定装置也可能有问题,我不知道,因为我不使用它们)。如何解决这个问题?

这个问题的旧解释不是很相关,但是,我把它留在这里供下面的 cmets 参考和上下文..

旧解释: 所以这是交易。我们有一个使用 MongoHQ 作为数据库的 Rails 应用程序。在本地,事情运行顺利,没有任何问题,但在生产和登台环境中,Heroku 似乎坚持我们必须设置/安装 postgresql 数据库和 gems。我试图删除插件和相关的配置变量,但它不会这样做。这很烦人,因为现在免费的 postgresql 会导致问题,因为如果我们启动 dynos,它将很快耗尽连接(20 个连接限制)。然而,当数据库有 0 个表时,升级到更生产级别的 postgresql 似乎是一件非常愚蠢的事情。使用 MongoHQ 的其他人是如何管理这个的?尽管我认为这是每个使用 MongoHQ 和 Heroku 的人都会面临的明显问题,但我似乎无法找到任何相关信息?

【问题讨论】:

  • ActiveRecord 是否仍然启用?
  • 这也是我的赌注(ActiveRecord 或 Rails 中的东西),因为使用 Sinatra Ruby 应用程序,我默认运行时没有 postgres。
  • 我看到这个问题实际上可能是无效的。我认为最初的问题与这位博主遇到的问题相同(想对 404 使用 ActiveRecord::RecordNotFound 异常):benjaminoakes.com/2011/09/15/… 因为这导致了问题,所以我们配置了一些东西,以便生产和登台服务器需要 rails/all where on开发和测试环境,我们只需要正常功能所需的轨道,从而避免在本地设置上需要 postgresql 和 database.yml。

标签: ruby-on-rails postgresql heroku mongoid


【解决方案1】:

关键的想法是我们仍然可以require "activer_record",但是让我们省略相应的railtie。这就是我最终放入我的config/application.rb

require "rails"
frameworks = %w(action_controller action_mailer active_resource rails/test_unit)
frameworks.each { |framework| require "#{framework}/railtie" }

# For errors like ActiveRecord::RecordNotFound
require "active_record"

这个想法的功劳归于先生。本杰明奥克斯: http://www.benjaminoakes.com/2011/09/15/activerecordconnectionnotestablished-in-rails-3-1-on-heroku/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 2013-01-22
    • 2011-11-26
    • 1970-01-01
    • 1970-01-01
    • 2019-09-13
    • 1970-01-01
    相关资源
    最近更新 更多