【问题标题】:Rails 4 - "No Implicit Conversion of Fixnum into String" - Error only occurs in productionRails 4 - “没有将 Fixnum 隐式转换为字符串” - 错误只发生在生产中
【发布时间】:2023-03-30 19:41:01
【问题描述】:

在生产环境中运行我的 Rails 4.1 项目时出现以下错误:

ActionView::Template::Error (no implicit conversion of Fixnum into String):
 8:     %meta{content: "", name: "description"}/
 9:     %meta{content: "", name: "author"}/
10:     = stylesheet_link_tag    'application', media: 'all'
11:     = csrf_meta_tags
12:   %body
13:     .header.navbar.navbar-inverse
14:       = render 'layouts/header'

对我来说没有任何意义的是在开发中一切正常,上面的错误确实让我不知道实际错误是什么(没有特定的行号),并且 HAML 模板中没有任何内容出现在我。

当我的 UsersController 中的以下代码运行时,我也会遇到类似的错误:

@user = User.last

同样,在开发中工作得很好,但在生产中它告诉我 TypeError(没有将 Fixnum 隐式转换为字符串)

我是否忽略了什么?我没有看到任何需要类型转换的东西。

注释掉我提到的最后一行不会影响其他错误。

【问题讨论】:

  • 您是否在启动服务器或尝试访问特定网页时收到此错误?
  • 可能是您的预编译资产中出现了一些问题。你可以尝试用rake assets:precompile 重建那些。请记住,在生产模式下,您必须touch tmp/restart.txt 才能使任何更改生效,甚至是视图。

标签: ruby-on-rails ruby types runtime-error production


【解决方案1】:

这是我自己想出来的。

我在secrets.yml 中为生产制作的secret_key_base 只包含数字;显然 YAML(或 Ruby 的实现)会自动将其解释为整数,并且 secret_key_base 必须是字符串。也许密钥库也必须是字母数字。我不确定。

我希望 Rails 只是对 secret_key_base 进行类型转换,这样我就不必浪费半天的工作时间来解决问题。至少,最好有一个相关的警告,而不是一个不指向任何方向的神秘错误。

【讨论】:

    【解决方案2】:

    对于未来的谷歌员工:我通过在 .yml 文件中的数值周围加上双引号解决了类似的问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 2017-01-19
      相关资源
      最近更新 更多