Então eu sempre recebo mensagens de erro quando estou instalando novas gemas. Sou novo em Ruby, Rails e RubyGems, o que torna tudo muito frustrante. Não tenho certeza se preciso configurar algo ou se instalei algo incorretamente ... Então, esperamos que você possa ajudar. Aqui estão alguns exemplos dos problemas que estou tendo:
# 1: sudo vs. não usando sudo
Em muitos tutoriais / documentações, eles sempre usam:
gem install gem-name
Para mim, isso quase sempre resulta em algum tipo de erro ... até que eu faça ...
sudo gem install gem-name
... então a gema geralmente é instalada bem. Como as pessoas podem executar gem install
sem começar com sudo
?
Solução:
Sério! Eu gostaria de ter feito isso antes. O Ruby Version Manager possibilita a execução de várias versões do Ruby, cada uma com seu próprio conjunto de gemas, e alterna entre as diferentes versões sem problemas. Além disso, você não precisará mais usar sudo
. Além disso, é super fácil de instalar, então você deve fazer isso!
# 2: "Não é possível encontrar arquivos de cabeçalho"
Às vezes recebo uma mensagem como essa, mesmo quando estou em execução em sudo
...
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb
mkmf.rb can't find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/ruby.h
O que isso significa?
Solução:
O problema é que ele não consegue encontrar o comando make. Ele é instalado automaticamente quando você instala o XCode. E por alguma razão, mesmo tendo o XCode instalado, não consegui encontrá-lo. Eu fiz o download da versão mais recente do XCode e reinstalei. Agora, quando eu executar which make
, ele retorna corretamente /usr/bin/make
.
Usando o Lion com a nova versão do Xcode, faça o download de "Ferramentas de linha de comando para o Xcode", no link .
# 3: "diretório mundial gravável inseguro"
Aqui está um novo.
/Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/source.rb:352: warning: Insecure world writable dir /usr/local/bin in PATH, mode 040777
Isso não parece bom. O que preciso fazer para corrigir isso?
Solução:
Algo que instalei, em algum momento, alterei as permissões no meu diretório /usr/local/bin
(assim como meus diretórios /usr/local
e /usr/local/mysql
). Para mudar isso de volta:
sudo chmod 755 /usr/local/bin
# 4: Não é possível instalar o bcrypt-ruby
Finalmente, estou tentando executar bundle install
no meu novo aplicativo Rails 3.0.0.beta4 e estou recebendo este erro:
Installing bcrypt-ruby (2.1.2) from .gem files at /Users/andrew/.bundle/ruby/1.8/cache with native extensions /Library/Ruby/Site/1.8/rubygems/installer.rb:483:in 'build_extensions': ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError)
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb
mkmf.rb can't find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/ruby.h
Gem files will remain installed in /Users/andrew/.bundle/ruby/1.8/gems/bcrypt-ruby-2.1.2 for inspection.
Results logged to /Users/andrew/.bundle/ruby/1.8/gems/bcrypt-ruby-2.1.2/ext/mri/gem_make.out
from /Library/Ruby/Site/1.8/rubygems/installer.rb:446:in 'each'
from /Library/Ruby/Site/1.8/rubygems/installer.rb:446:in 'build_extensions'
from /Library/Ruby/Site/1.8/rubygems/installer.rb:198:in 'install'
from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/source.rb:170:in 'install'
from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/installer.rb:34:in 'run'
from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/spec_set.rb:12:in 'each'
from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/spec_set.rb:12:in 'each'
from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/installer.rb:21:in 'run'
from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/installer.rb:6:in 'install'
from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/cli.rb:91:in 'install'
from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/vendor/thor/task.rb:33:in 'send'
from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/vendor/thor/task.rb:33:in 'run'
from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/vendor/thor/invocation.rb:109:in 'invoke'
from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/vendor/thor/invocation.rb:116:in 'call'
from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/vendor/thor/invocation.rb:116:in 'invoke'
from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/vendor/thor.rb:137:in 'start'
from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/vendor/thor/base.rb:378:in 'start'
from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/vendor/thor.rb:124:in 'start'
from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/bin/bundle:13
from /usr/bin/bundle:19:in 'load'
from /usr/bin/bundle:19
Parece que bcrypt-ruby
é algum tipo de dependência que está tentando instalar. Então, como faço para que isso funcione? Como posso saber o motivo da falha?
Solução:
Isso foi corrigido ao reinstalar o XCode.
Desculpe pela lista de roupas, mas eu realmente quero me livrar de todos esses problemas!
Obrigado antecipadamente!