簡體   English   中英

通過要求gem:path或:git來實現LoadError

[英]LoadError by requiring a gem with :path or :git

我在這里遇到了一個非常奇怪的問題。

我在github上分叉了一個gem進行一些修改,在我的本地機器上克隆了我的repo,進行了更改並更改了另一個項目的Gemfile以從我的本地存儲庫中獲取gem以進行測試。 不幸的是,我在我的ruby腳本中需要gem時遇到了LoadError。

rvm current => ruby-1.9.3-p448
ruby --version => ruby 1.9.3p448 (2013-06-27 revision 41675) [x86_64-linux]
bundle --version => Bundler version 1.3.5

我的Gemfile的內容:

source 'http://rubygems.org

gem 'steps', :path => "/home/benny/workspace/steps"

捆綁輸出:

$ bundle --no-cache
Resolving dependencies...

Using colored (1.2) 
Using highline (1.6.19) 
Using steps (1.0.2) from source at /home/benny/workspaces/steps 
Using bundler (1.3.5) 
Your bundle is complete!
Use `bundle show [gemname]` to see where a bundled gem is installed.


$ bundle show steps
/home/benny/workspaces/steps

通過irb測試工作正常:

$ bundle exec irb
1.9.3-p392 :001 > require 'rubygems'
 => false 
1.9.3-p392 :002 > require 'steps'
 => true

通過腳本測試不起作用:

$ cat test.rb
require 'rubygems'
require 'steps'

$ ruby test.rb
/home/benny/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- steps (LoadError)
from /home/benny/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from test.rb:2:in `<main>'

我現在很困惑。 如果我使用:git而不是:使用本地git repo或github repo的路徑,也會發生同樣的情況。

有任何想法嗎?

在運行test.rb之前,您必須加載bundler環境

bundle exec ruby test.rb

您可以通過以下方式運行bundler環境:

bundle exec ruby script.rb

或者在導致問題的gem之前在腳本中設置bundler設置。

require 'bundler/setup'

我在那里發現的大多數鏈接指向了Bundler網站上的文檔,但不幸的是,大多數鏈接現在已經死了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM