![安装用于 CLI 的 SoundCloud 2000 客户端时,Ruby 出现 NoMethodError](https://linux22.com/image/1435645/%E5%AE%89%E8%A3%85%E7%94%A8%E4%BA%8E%20CLI%20%E7%9A%84%20SoundCloud%202000%20%E5%AE%A2%E6%88%B7%E7%AB%AF%E6%97%B6%EF%BC%8CRuby%20%E5%87%BA%E7%8E%B0%20NoMethodError.png)
我正在尝试安装SoundCloud2000在运行 Mac OS X 10.8.5 的 MacBook 上。
我安装了 Ruby 2.2.0、mpg123
和portaudio
。将 SoundCloud 2000 安装为 GEM 似乎运行良好:
gem install soundcloud2000
但是当我尝试从命令行使用它时——运行时$soundcloud2000
——我收到以下错误而不是客户端:
/Library/Ruby/Gems/1.8/gems/soundcloud2000-0.1.0/lib/soundcloud2000.rb:1: undefined method `require_relative' for main:Object (NoMethodError)
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `require'
from /Library/Ruby/Gems/1.8/gems/soundcloud2000-0.1.0/bin/soundcloud2000:3
from /usr/bin/soundcloud2000:19:in `load'
from /usr/bin/soundcloud2000:19
我不知道这是什么意思。有谁知道吗?
答案1
您说您安装了 Ruby 2.2.0,但查看错误,所有引用都表示/Library/Ruby/Gems/1.8/gems/
SoundCloud 2000 是作为 Ruby 1.8 GEM 安装的。因此,我猜您安装的是 Ruby 2.2.0,而不是ruby
您从命令行运行的主要版本。您可以通过运行以下命令来确认您在 Mac 上运行的 Ruby 版本:
ruby -v
输出应该是这样的;请注意,我正在运行 Mac OS X 10.9.5,所以我安装的 Ruby 版本将高于 Mac OS X 10.8.5:
ruby 2.0.0p481 (2014-05-08 revision 45883) [universal.x86_64-darwin13]
您还可以通过以下方式查看 Ruby 版本的加载位置which
像这样:
which ruby
输出应该是这样的:
/usr/bin/ruby
该which
工具会准确地告诉您通过该命令调用的二进制文件从哪个路径加载。
因为看起来你正在使用自制要安装较新版本的 Rub,您还需要确保您的用户$PATH
设置为/usr/local/bin
在检查之前先检查/usr/bin
。这通常在.bash_profile
您的主目录中的文件中设置,该文件位于通过~/.bash_profile
。请注意,这些内容也可能设置在名为的文件中,因此如果是这种情况,.bashc
请调整示例以使用.bashc
而不是。.bash_profile
例如,如果我在 Mac OS X 设置上运行以下命令:
cat ~/.bash_profile
我看到这些内容:
export PATH="/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/usr/local/git/bin:/opt/ImageMagick/bin"
可能看起来很复杂,但其实不然。该命令所做的一切基本上就是设置$PATH
您的 shell 环境。引号之间的项目只是用:
字符分隔的目录路径。请注意,与 的顺序/usr/bin
相反/usr/local/bin
;一个在另一个前面。这基本上意味着系统将检查ruby
并/usr/bin
倾向于在它到达ruby
安装的 via之前使用该命令/usr/local/bin
。因此,一个快速解决方法是将其放在通过文本编辑器(如)的/usr/local/bin
前面。然后保存它,退出您的终端会话并打开一个新的。/usr/bin
nano
话虽如此,如果我是你,我会建议避免通过 Homebrew 安装系统级 Ruby 和 Ruby GEM,而是使用RVM(Ruby 版本管理器)相反。Ruby 和 Ruby GEM 实际上在好日子里可能很难处理;在 Mac 上甚至更令人头痛。因此,使用 RVM 可以让您创建特定于用户的独立 Ruby 和 Ruby GEM 安装,以便更轻松地管理。
我从事 Linux 系统管理工作,倾向于升级默认安装的 Ruby 版本,过去我通过源代码或软件包安装程序进行升级。但是,我越是进行 Ruby 设置,就越意识到 RVM 确实是安装、管理和处理 Ruby 设置的最佳方式。首次设置时,学习/理解会有些困难,但在此之后,它将使您的生活(以及系统管理)变得轻松很多。