Não é possível acessar gemas depois de instalar ruby e gemas com ansible

1

Estou trabalhando em um script Ansible para instalar meu ambiente de trabalho padrão (Ruby on Rails).

O Ansible é executado sob o sudo, e as gemas que foram instaladas só são acessíveis sob o sudo também. Se eu faço gem env como usuário normal, recebo isto:

$ gem env
/usr/local/lib/ruby/site_ruby/1.8/rubygems.rb:10:in 'require': no such file to load -- rubygems/defaults (LoadError)
    from /usr/local/lib/ruby/site_ruby/1.8/rubygems.rb:10
    from /usr/local/bin/gem:8:in 'require'
    from /usr/local/bin/gem:8

Quando abro o arquivo em questão, vejo o seguinte:

#/usr/local/lib/ruby/site_ruby/1.8/rubygems.rb

# -*- ruby -*-
#--
# Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
# All rights reserved.
# See LICENSE.txt for permissions.
#++

gem_disabled = !defined? Gem

require 'rubygems/defaults'
require 'rbconfig'
require 'thread' # HACK: remove me for 1.5 - this is here just for rails

A linha 10 é a linha require 'rubygems/defaults' .

Fazer sudo gem env mostra o seguinte:

$ sudo gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 1.4.2
  - RUBY VERSION: 1.8.6 (2010-09-02 patchlevel 420) [x86_64-linux]
  - INSTALLATION DIRECTORY: /usr/local/lib/ruby/gems/1.8
  - RUBY EXECUTABLE: /usr/local/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/local/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
     - /usr/local/lib/ruby/gems/1.8
     - /home/max/.gem/ruby/1.8
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
     - "gem" => "--no-document --no-ri --no-rdoc"
  - REMOTE SOURCES:
     - http://rubygems.org/

Alguém pode me dizer o que eu preciso fazer para tornar as gemas acessíveis ao meu usuário normal no modo não-sudo?

EDIT: Um pouco mais de informação. Eu procurei por onde ele deveria estar carregando rubygems/defaults , usando locate :

$ locate rubygems | grep default
/usr/lib/ruby/1.9.1/rubygems/defaults.rb
/usr/local/lib/ruby/gems/1.8/gems/rubygems-update-1.2.0/lib/rubygems/defaults.rb
/usr/local/src/rubygems-1.4.2/lib/rubygems/defaults.rb

Supondo que deveria estar carregando /usr/local/lib/ruby/gems/1.8/gems/rubygems-update-1.2.0/lib/rubygems/defaults.rb , alterei a linha de solicitação para ter o caminho completo para isso:

require '/usr/local/lib/ruby/gems/1.8/gems/rubygems-update-1.2.0/lib/rubygems/defaults'

e isso pareceu funcionar - então ele falhou na linha require 'thread' , a qual eu presumivelmente poderia fazer a mesma coisa.

Então, parece que o Ruby precisa saber para qual pasta iniciar, quando procurar coisas para incluir. Talvez seja isso que eu precise fazer? Eu não sei a melhor maneira de fazer isso ...

    
por Max Williams 04.04.2018 / 10:53

0 respostas