安装用于 CLI 的 SoundCloud 2000 客户端时,Ruby 出现 NoMethodError

安装用于 CLI 的 SoundCloud 2000 客户端时,Ruby 出现 NoMethodError

我正在尝试安装SoundCloud2000在运行 Mac OS X 10.8.5 的 MacBook 上。

我安装了 Ruby 2.2.0、mpg123portaudio。将 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/binnano

话虽如此,如果我是你,我会建议避免通过 Homebrew 安装系统级 Ruby 和 Ruby GEM,而是使用RVM(Ruby 版本管理器)相反。Ruby 和 Ruby GEM 实际上在好日子里可能很难处理;在 Mac 上甚至更令人头痛。因此,使用 RVM 可以让您创建特定于用户的独立 Ruby 和 Ruby GEM 安装,以便更轻松地管理。

我从事 Linux 系统管理工作,倾向于升级默认安装的 Ruby 版本,过去我通过源代码或软件包安装程序进行升级。但是,我越是进行 Ruby 设置,就越意识到 RVM 确实是安装、管理和处理 Ruby 设置的最佳方式。首次设置时,学习/理解会有些困难,但在此之后,它将使您的生活(以及系统管理)变得轻松很多。

相关内容