当我尝试在命令行中包含一个库时,我收到 LoadError 消息

$ ruby -v
ruby 1.8.7 (2012-06-29 patchlevel 370)

$ gem list | grep coderay_bash
coderay_bash (1.0.2)

$ ruby -rcoderay_bash /bin/coderay -v
ruby: no such file to load -- coderay_bash (LoadError)

$ ruby -rubygems -rcoderay_bash /bin/coderay -v
ruby: no such file to load -- coderay_bash (LoadError)

它看起来适用于 ruby​​ 1.9.2
$ ruby -v
ruby 1.9.2p290 (2011-07-09)

$ ruby -rcoderay_bash /bin/coderay -v
CodeRay 1.0.7

最佳答案

在 Ruby 1.8 中,除非您使用 require ,否则无法访问随 RubyGems 安装的任何您想要 require 'rubygems' 的内容。 1.9 删除了此要求。

为此,您有多种选择:

  • 只需将 require 'rubygems' 放在文件的顶部。这对 1.9 来说是无害的,而且可能是最简单的事情,因为它在代码中,使用您的应用程序的人无需记住任何内容
  • 将您的 shebang 行更改为 #!/usr/bin/env ruby -rubygems 这告诉 Ruby 解释器需要 ruby​​gems,但允许用户通过将您的文件直接发送到 ruby 来避免这种情况,如果他们因某种原因被 RubyGems 冒犯
  • 始终使用 ruby 运行并使用 -rubygems ,例如ruby -rubygems my_app.rb 这在你的代码中没有对 RubyGems 的依赖,并且可以工作,但是你必须记住每次都这样做,这有点痛苦。
  • 关于ruby 命令行加载错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11496924/

    10-13 05:08