Heroku 上有语法错误,但本地服务器上没有(postgresql 相关?)

发布于 2024-10-09 08:51:22 字数 598 浏览 1 评论 0原文

我正在尝试在 Heroku (rails 3) 上部署我的第一个应用程序。它在我的本地服务器上运行良好,但是当我将它推送到 Heroku 并运行它时,它崩溃了,并给出了许多语法错误。这些与我使用的一系列范围有关,如下所示:

  scope :scored, lambda { |score = nil|       
    score.nil? ? {} : where('products.votes_count >= ?', score)
  }

它会产生以下形式的错误:

“语法错误,意外的“=”,需要“|” ”

“语法错误,意外的 '}',需要 kEND”

为什么这种语法会让 Heroku 感到窒息,我该如何纠正它?谢谢!

编辑:我在本地计算机上使用 sqlite,但 Heroku 不支持。尝试确保 PG 的数据库配置正确。我相信我已经通过在 gemfile 中指定 sqlite 仅用于开发来做到这一点。然而我仍然遇到这些语法错误,甚至中断了 db:migrate。

编辑:所以现在看来​​我的范围语法更有可能在 postgreSQL 中不起作用。有谁知道如何正确转换它?

I'm trying to deploy my first app on Heroku (rails 3). It works fine on my local server, but when I pushed it to Heroku and ran it, it crashes, giving a number of syntax errors. These are related to a collection of scopes I use like the one below:

  scope :scored, lambda { |score = nil|       
    score.nil? ? {} : where('products.votes_count >= ?', score)
  }

it produces errors of this form:

"syntax error, unexpected '=', expecting '|' "

"syntax error, unexpected '}', expecting kEND"

Why is this syntax making Heroku choke and how can I correct it? Thanks!

EDIT: I was using sqlite on my local machine and Heroku does not support that. Trying to make sure the db is properly configured for PG. I believe I have done that by specifying in the gemfile that sqlite only be used in development. Yet I still get these syntax errors, that interrupt even the db:migrate.

EDIT: So now it seems more likely that my scope syntax doesn't work in postgreSQL. Does anyone know how to convert this properly?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

美羊羊 2024-10-16 08:51:22

Ruby 1.9 中引入了块参数的默认值功能。如果您使用此功能,Ruby 1.8 将无法加载您的应用程序。

Heroku 上的默认 Ruby 是 1.8.7。您在本地计算机上使用 Ruby 1.9,在 Heroku 上使用 Ruby 1.8 吗?

您可以通过以下方式了解 Heroku 应用程序当前正在哪个堆栈上运行:

$ heroku stack

您可以通过以下方式切换到 Heroku 上的 Ruby 1.9 堆栈:

$ heroku stack:migrate bamboo-mri-1.9.2
$ git push heroku --force

Heroku Docs 站点提供有关堆栈和堆栈迁移的更多信息。

The default-values-for-block-parameters feature was introduced in Ruby 1.9. Ruby 1.8 will not be able to load your application if you use this feature.

The default Ruby on Heroku is 1.8.7. Are you using Ruby 1.9 on your local machine, and Ruby 1.8 on Heroku?

You can find out which stack your Heroku application is currently running on via:

$ heroku stack

You can switch to the Ruby 1.9 stack on Heroku via:

$ heroku stack:migrate bamboo-mri-1.9.2
$ git push heroku --force

The Heroku Docs site has more information on stacks and stack migration.

枕花眠 2024-10-16 08:51:22

对我来说,这些语法错误看起来不像 postgresql 错误。奇怪的是,您的本地服务器上的所有内容都具有相同的版本,并且您将其推送到哪里?

Those syntax errors don't look like postgresql errors to me. Odd, you've got the same versions of everything on your local server and where you're pushing it to?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文