Pergunta

Ok, eu só passei as 4 horas tentando descobrir isso sem sucesso. Eu tentei todos os suspeitos do costume e pesquisei cada combinação de Ruby 1.9.1, caminho de carga, gemas, Mac OS X, FreeBSD, camarão e outras coisas. A linha de fundo é esta:

Quando eu compilar ruby1.9.1-P129 a partir de fontes no Mac OS X 10.5, o caminho de carga padrão ($ :) I get é:

ruby -e "puts $:"
/usr/local/lib/ruby/gems
/usr/local/lib/ruby/site_ruby/1.9.1
/usr/local/lib/ruby/site_ruby/1.9.1/i386-darwin9.7.0
/usr/local/lib/ruby/site_ruby
/usr/local/lib/ruby/vendor_ruby/1.9.1
/usr/local/lib/ruby/vendor_ruby/1.9.1/i386-darwin9.7.0
/usr/local/lib/ruby/vendor_ruby
/usr/local/lib/ruby/1.9.1
/usr/local/lib/ruby/1.9.1/i386-darwin9.7.0
.

quando eu instalar a gem de camarão, por exemplo, eu recebo:

gem which prawn
(checking gem prawn-0.5.0.1 for prawn)
/prawn.rb

e quando tento para exigir que eu recebo:

ruby -e "require 'prawn'"
-e:1:in `require': no such file to load -- prawn (LoadError)
    from -e:1:in `'

A única maneira que eu fui capaz de resolver isso é fazer algo estúpido como isto:

$: << "/usr/local/lib/ruby/gems/1.9.1/gems/prawn-0.5.0.1/lib"

que, naturalmente, é absolutamente ridículo. Então a questão é como faço para obter o Ruby 1.9.1 para reconhecer e seguir o caminho gemas correto? Eu nunca tive esse problema com o 1.8.7, então eu estou supondo que 1.9.1 específico. Eu sinto que estou perdendo algo completamente óbvio aqui e qualquer ajuda seria muito apreciada!

Foi útil?

Solução

configuração GEM_PATH = / usr / local / lib / ruby ??/ gems / 1.9.1

resolveu o problema. Eu sabia que era algo simples. Apenas me agrava que levou o dia todo para descobrir !! Isto é devido a não ter este problema com 1.8.7 e, claro, não RTFM !!

Outras dicas

mesmo problema no Kubuntu cármica.

instalação:

$ sudo apt-get install build-essential ruby1.9.1-full libsqlite3 libsqlite3-dev rubygems1.9
$ sudo gem install sqlite3-ruby rails thin --no-rdoc --no-ri

resultado:

$ ruby -e "require 'rubygems'; require 'sqlite3'" 
-e:1:in `require': no such file to load -- sqlite3 (LoadError)
        from -e:1:in `<main>'   

Solução:

$ export GEM_PATH=/usr/lib/ruby1.9.1/gems/1.9.1/
require 'rubygems'
require 'prawn'

A menos que as coisas mudaram em 1,9 que você não precisa mais para exigir rubygems primeiro.

Da próxima vez que você tem um problema, não se esqueça de executar gem env a partir da linha de comando. Isto é o que acontece no Windows, mas o princípio é o mesmo:

C:\Documents and Settings\a.grimm>gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 1.3.5
  - RUBY VERSION: 1.9.1 (2010-01-10 patchlevel 378) [i386-mingw32]
  - INSTALLATION DIRECTORY: C:/Ruby19/lib/ruby/gems/1.9.1
  - RUBY EXECUTABLE: C:/Ruby19/bin/ruby.exe
  - EXECUTABLE DIRECTORY: C:/Ruby19/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-mingw32
  - GEM PATHS:
     - C:/Ruby19/lib/ruby/gems/1.9.1
     - C:/Documents and Settings/a.grimm/.gem/ruby/1.9.1
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - http://gems.rubyforge.org/

Eu estou procurando uma resposta diferente para o mesmo problema. Em algumas situações (ie. Sistema de arranque de tarefas) definir variáveis ??de ambiente antes de rubi funciona é impossível.

Existe alguma maneira na execução de Ruby (v> = 1.9.1) código para exigir gemas? Sem definir GEM_PATH?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top