【问题标题】:Can not find gems running "ruby <my_script>.rb" – but works in IRB找不到运行“ruby <my_script>.rb”的 gem - 但在 IRB 中有效
【发布时间】:2011-07-05 00:24:04
【问题描述】:

我在尝试使用 Ruby 命令运行 .rb 文件以尝试访问 gem 时遇到问题。我尝试使用的 gem 是 Ruby-Whois。我在下面有一个示例脚本,当我尝试通过“ruby whois.rb”执行它时,我收到以下错误消息:

./whois.rb:6: 未初始化的常量 Whois (NameError)

但是,如果我在 IRB 中逐行运行相同的脚本,我会得到预期的结果。是什么原因造成的?

下面是whois.rb

require "rubygems"
require "whois"

domain = "google.com"

c = Whois::Client.new
a = c.query(domain)

puts a

【问题讨论】:

  • 您是否为ruby 可执行文件和irb 可执行文件运行相同版本的ruby?
  • @johusman 我不知道。我该如何检查?这给了我: bash-3.2$ which irb /usr/bin/irb bash-3.2$ which ruby​​ /usr/bin/ruby
  • 回答您的问题:这些可能是符号链接。试试readlink -f $(which irb)readlink -f $(which ruby)。但我相信@jmatraszek 可能会在下面的答案中有所了解。

标签: ruby rubygems require irb


【解决方案1】:

更改您的文件名 - require 'whois' 有歧义,而 ruby​​ 需要您的文件而不是 gem。当您在 irb 中逐行执行时,ruby 知道您究竟想要什么,所以一切正常。

【讨论】:

  • 真好!从来没想过它会在需要 whois 时寻找我自己的 whois.rb。非常感谢!
猜你喜欢
  • 2013-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多