未初始化的常量 Twitter (NameError)
Posted
技术标签:
【中文标题】未初始化的常量 Twitter (NameError)【英文标题】:uninitialized constant Twitter (NameError) 【发布时间】:2012-11-08 08:50:02 【问题描述】:大家好,我在使用 twitter gem 时遇到了问题。我有一个包含此内容的文件 (twitter.rb)
require "rubygems"
require "twitter"
puts Twitter.user_timeline("roykasa").first.text
puts Twitter.user("roykasa").location
search = Twitter::Search.new
search.containing("hate").to("StewieJokess").
result_type("recent").each do |r| puts r.text end
当我运行文件时,我得到这个错误: 我在 SO 上的某个地方读到了一个用户遇到类似问题的地方,他通过安装新版本的 ruby 和 rubygems 解决了这个问题,但我遇到的问题是正在运行 suse 12.1,并且正在运行 ruby 和 ruby gems 的最新版本。在任何地方都找不到来自第 3 方的 rpm。至少我已经搜索过了。有人知道另一种方法吗?
【问题讨论】:
【参考方案1】:如果您运行的是 Ruby 1.8.x,您应该能够通过将您自己的脚本重命名为不同于 twitter.rb
的任何名称来解决您的问题。
这是因为twitter
gem 中的主文件的名称与此完全相同,并且您的文件可能会在$LOAD_PATH
命令创建的组合虚拟文件系统中覆盖它。在 Ruby 1.9.x 之前,require
不仅从库目录加载,而且更喜欢加载相对于进程当前工作目录的文件,在这种情况下,是脚本所在的目录。
【讨论】:
不,这无济于事,因为我有另一个名为 followers-location.rb 的文件,当我运行它时也会引发同样的错误。甚至当我在 irb 解释器中逐行运行这个文件时,我在 puts Twitter.user_timeline("roykasa").first.text 的地方得到同样的错误 可能是因为您在与文件相同的工作目录中运行irb
命令? followers-location.rb
也可能位于同一个文件夹中。您的工作目录中的任何文件都不应与您要在脚本中加载的任何 gem 中的任何文件具有相同的相对路径,因为如果这样做,它将不会从 gem 加载,而是从您的工作目录加载。【参考方案2】:
不要将您的文件命名为 twitter.rb,还要确保同一目录中没有其他名称为 twitter.rb
的文件【讨论】:
以上是关于未初始化的常量 Twitter (NameError)的主要内容,如果未能解决你的问题,请参考以下文章