【问题标题】:Heroku can't find SecureRandomHeroku 找不到 SecureRandom
【发布时间】:2015-01-11 14:33:02
【问题描述】:

我的 heroku 应用程序崩溃了,因为它找不到模块“SecureRandom”。我在 gemfile 中指定了我的 Ruby 版本,我的计算机、gemfile 和 Heroku 似乎都与 Ruby 版本号匹配,尽管不是补丁号。

其他帖子建议将 usr/bin/heroku 指向特定的 Ruby 文件,但我不知道该怎么做(我的应用程序中没有 Heroku bin)。这似乎是一个 Ruby 版本错误。我该如何解决这个问题?

class OrderItem < ActiveRecord::Base
  require 'SecureRandom'

  ...
end

Heroku 日志:

/app/vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.3/lib/active_support/dependencies.rb:229:in `require': No such file to load -- SecureRandom (LoadError)

宝石文件:

source 'https://rubygems.org'
ruby '2.0.0'

命令行:

/ $ heroku run ruby -v
Running `ruby -v` attached to terminal... up, run.9318
ruby 2.0.0p481 (2014-05-08 revision 45883) [x86_64-linux]

/ $ ruby -v
ruby 2.0.0p451 (2014-02-24 revision 45167) [x86_64-darwin12.5.0]

提前致谢。

【问题讨论】:

  • 我的印象是模块和类是混合大小写声明的,如以下网站所述:itsignals.cascadia.com.au/?p=7。但显然,不包括混合大小写的它们,因为这已经解决了这个问题。谢谢!
  • 文件总是小写,类总是驼峰化
  • 你为什么还要尝试要求 SecureRandom?各种 Rails already depend on SecureRandom 并需要它。
  • @apneadiving 这不是真的,通常的约定是使用所有小写的文件名(无论是使用破折号还是下划线(或根本不使用)来标记内部 majuscule 似乎是......未定义......);并且 Ruby 类/模块的 only 要求是开头的大写字母。
  • @DMKE,简短的回答是我不知道,只是检查了一下,你是对的。谢谢你的澄清。

标签: ruby-on-rails ruby heroku


【解决方案1】:

实际名称为securerandom,全部小写。 Linux 文件系统通常区分大小写。

因此,将您的要求更改为:

require 'securerandom'

【讨论】:

  • 我们应该尊重一个事实:骆驼喜欢骆驼化
  • 成功了,谢谢!看起来 Heroku 在 Linux 上,而我在本地 Unix 上,所以这可能就是为什么它只是在我推送时失败的原因。任何想法为什么模块以混合大小写声明并且需要小写?
  • ruby 中的类和模块名称应始终以驼峰形式声明,但您不需要该类,您需要声明该类的文件。实际文件名应该是secure_random,但出于某种原因,他们决定使用securerandom
  • 还有@apneadiving,这会让我变成骆驼吗?
  • 骆驼是骆驼吗? :) 实际上我太有偏见了,我没有注意到你实际上是一只长颈鹿!
猜你喜欢
  • 2017-09-30
  • 1970-01-01
  • 2011-07-14
  • 2018-06-26
  • 2012-09-29
  • 2016-04-18
  • 2015-09-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多