NoMethodError com Ruby ao instalar o cliente SoundCloud 2000 para CLI

1

Estou tentando instalar o SoundCloud2000 no meu MacBook executando o Mac OS X 10.8.5.

Eu tenho o Ruby 2.2.0, mpg123 e portaudio instalado. Instalar o SoundCloud 2000 como um GEM parece funcionar bem:

gem install soundcloud2000

Mas quando eu tento usá-lo na linha de comando quando eu corro - $soundcloud2000 - obtenho o seguinte erro em vez do cliente:

/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

Eu não sei o que isso significa. Alguém mais sabe?

    
por Alison 31.12.2014 / 17:00

1 resposta

0

Você diz que tem o Ruby 2.2.0 instalado, mas olhando para o erro, todas as referências são para /Library/Ruby/Gems/1.8/gems/ , o que significa que o SoundCloud 2000 é instalado como um Ruby 1.8 GEM. Então, meu palpite é que você instalou o Ruby 2.2.0 que não é o principal ruby que você está executando na linha de comando. Você pode confirmar com a versão do Ruby que você está rodando no seu Mac executando este comando:

ruby -v

A saída deve ser algo assim; Observe que estou executando o Mac OS X 10.9.5, portanto, minha versão instalada do Ruby será maior do que o Mac OS X 10.8.5:

ruby 2.0.0p481 (2014-05-08 revision 45883) [universal.x86_64-darwin13]

Você também pode ver onde sua versão do Ruby está sendo carregada de which assim:

which ruby

A saída deve ser algo assim:

/usr/bin/ruby

A ferramenta which informa exatamente a que caminho o binário que você está chamando por esse comando está sendo carregado.

Como parece que você está usando o Homebrew para instalar uma versão mais recente do Rub, também é necessário garantir que o $PATH de seu usuário está definido para verificar /usr/local/bin antes de verificar /usr/bin . Isso geralmente é definido no arquivo .bash_profile em seu diretório inicial, localizado por meio de ~/.bash_profile . Apenas observe que esse material também pode ser definido em um arquivo chamado .bashc , portanto, ajuste os exemplos para usar .bashc em vez de .bash_profile se for esse o caso.

Por exemplo, se eu executar o seguinte comando na configuração do Mac OS X:

cat ~/.bash_profile

Eu vejo estes conteúdos:

export PATH="/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/usr/local/git/bin:/opt/ImageMagick/bin"

Pode parecer complexo, mas não é. Tudo o que o comando faz é basicamente definir as configurações $PATH para o seu ambiente shell. E os itens entre aspas são apenas caminhos de diretório separados por : caracteres. De nota para você esta a ordem de /usr/bin versus /usr/local/bin ; um vem na frente do outro. O que basicamente significa que o sistema irá verificar por ruby em /usr/bin e prefere usar esse antes mesmo de alcançar o ruby instalado via /usr/local/bin . Então, uma solução rápida para você seria pegar /usr/local/bin e colocá-lo na frente de /usr/bin através de um editor de texto como nano . Em seguida, salve-o, saia da sessão do Terminal e abra um novo.

Dito isto, se eu fosse você, eu recomendaria evitar instalações de Ruby e Ruby GEM no nível do sistema via Homebrew e usar RVM (Ruby Version Manager) em vez de. Ruby e Ruby GEMs podem realmente ser uma dor para lidar em um bom dia; e até uma dor de cabeça pior em um Mac. Portanto, o uso do RVM pode permitir que você crie instalações Ruby e Ruby GEM isoladas, específicas para o usuário, mais fáceis de gerenciar.

Eu faço administração de sistemas Linux e tento querer atualizar a versão do Ruby instalada por padrão e costumava fazer isso via instaladores de fontes ou pacotes. Mas quanto mais trabalho eu faço nas configurações do Ruby, mais eu percebi que o RVM é realmente a melhor maneira de instalar, gerenciar e lidar com as configurações do Ruby. Curva de aprendizado / compreensão leve quando você o configura, mas que tornará sua vida - e o gerenciamento do sistema - muito mais fácil.

    
por 31.12.2014 / 17:35