'Exigem': não pode carregar tal arquivo 'jóia' (LoadError)

votos
0

Sei que há uma tonelada de perguntas idênticas aquele no entanto I não tiveram sucesso na fixação meu problema. Eu estou tentando usar o gem 'vpn' e para fins de aprendizagem eu percebi que eu iria abrir um novo projeto. Tendo seguido as instruções de instalação em: https://github.com/ronen/vpn (a gema também está em rubygems.org) e exigindo a jóia no meu código, eu recebo require': cannot load such file -- vpn (LoadError).

Tenho verificado a minha versão. gem env

RubyGems Environment:
  - RUBYGEMS VERSION: 2.7.7
  - RUBY VERSION: 2.5.1 (2018-03-29 patchlevel 57) [x86_64-darwin17]
  - INSTALLATION DIRECTORY: /Users/user/.rvm/gems/ruby-2.5.1
  - USER INSTALLATION DIRECTORY: /Users/user/.gem/ruby/2.5.0
  - RUBY EXECUTABLE: /Users/user/.rvm/rubies/ruby-2.5.1/bin/ruby
  - EXECUTABLE DIRECTORY: /Users/user/.rvm/gems/ruby-2.5.1/bin
  - SPEC CACHE DIRECTORY: /Users/user/.gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /Users/user/.rvm/rubies/ruby-2.5.1/etc
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-17
  - GEM PATHS:
     - /Users/user/.rvm/gems/ruby-2.5.1
     - /Users/user/.rvm/gems/ruby-2.5.1@global
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /Users/user/.rvm/gems/ruby-2.5.1/bin
     - /Users/user/.rvm/gems/ruby-2.5.1@global/bin
     - /Users/user/.rvm/rubies/ruby-2.5.1/bin
     - /Users/user/.rvm/bin
     - /Library/Frameworks/Python.framework/Versions/3.7/bin
     - /Library/Frameworks/Python.framework/Versions/3.7/bin
     - /usr/local/bin
     - /usr/bin
     - /bin
     - /usr/sbin
     - /sbin
     - /Applications/Wireshark.app/Contents/MacOS

ruby --versionruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin17]

No meu arquivo gem tenho gem: 'vpn'

gem list Será que o retorno vpn (0.2.1)

Qualquer ajuda seria muito apreciada. Desde já, obrigado.

O que eu tentei:

PS Eu não tenho um arquivo de rake. Eu não configurar um porque eu não sou muito inteiramente certo que vai resolver o meu problema e eu tive problemas descobrir como criar um.

Publicado 15/09/2018 em 01:12
fonte usuário
Em outras línguas...                            


1 respostas

votos
0

A questão aqui parece ser com a forma como a vpnjóia é estruturado. Gemas modernos têm um padrão:

  • executáveis são colocados dentro dos bin/ exediretórios no gem
  • Código Ruby é colocado em um <gem-name>.rbarquivo dentro de um libdiretório no gem

Assim, quando um usuário chama require <gem-name>, Ruby tenta carregar <gem-name>-<gem-version>/lib/<gem-name>.rbe retorna um LoadErrorse isso não acontecer.
Por exemplo, quando um usuário listou gem 'jekyll', '3.8.0'em sua Gemfile, Ruby vai tentar carregar jekyll-3.8.0/lib/jekyll.rbpela primeira vez por padrão.

Para Ruby para carregar outro diretório em vez de ~/lib/, o <gem-name>.gemspecdeve especificar que através da require_paths=configuração.
Por exemplo, para carregar david.rbarquivo (de gema hipotético chamado david-rbna versão 0.1.0) instalado no ~/gems/david-rb-0.1.0/code/david.rb, o david-rb.gemspecdeve ter o seguinte:

Gem::Specification.new do |s|
  # preceding lines ...

  s.require_paths = ["lib", "code"]

  # following lines ...
end

Agora, quando um consumidor de david-rbjóia chama require 'david', Ruby vai primeiro tentar carregar david.rba partir ~/gems/david-rb-0.1.0/lib/e depois de ~/gems/david-rb-0.1.0/code/sem levantar um erro.

Respondeu 15/09/2018 em 02:44
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more