【问题标题】:Installing unpublished gem results in "no such file to load"安装未发布的 gem 会导致“没有要加载的文件”
【发布时间】:2012-05-20 21:13:30
【问题描述】:

我正在构建一个本地 gem,我希望能够在 pry 中测试和使用它。我正在通过 bundle gem blah 创建我的 gem。

  • gem list 显示宝石。
  • gem contents blah 确认它已安装在我的 GEMPATH 中的某个位置。
  • gem "blah", :path => "path/to/gem" 使其在 Rails 控制台中可用。

但是当我简单地尝试并要求它时,它的内部 require "file" 代码似乎不起作用。我开始了一个具有以下结构的示例 gem:

├── Gemfile
├── LICENSE
├── README.md
├── Rakefile
├── blah.gemspec
├── lib
│   ├── blah
│   │   ├── ugh.rb
│   │   └── version.rb
│   └── blah.rb
└── pkg
    └── blah-0.0.1.gem

/lib/blah.rb 的开头是:

require "blah/version"
require "blah/ugh"

当我尝试在 pry、IRB 或 ruby -rubygems -e 'require "blah"' 中加载它时,我得到:

~/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require': cannot load such file -- blah/ugh (LoadError)

任何想法可能导致这种差异?我觉得我正在按照 Bundler 和其他 gem 建立的做法按顺序做事,但也许我在某个地方出错了。

【问题讨论】:

    标签: ruby rubygems bundler irb


    【解决方案1】:

    直接运行ruby时请尝试指定加载路径。这样可以确保您在 gem 中相对需要的所有文件也能找到。

    所以在 Rails 根目录中调用 ruby​​ 时应该是

    ruby -rubygems -Ilib -e 'require "blah"'

    或在撬的情况下

    pry -I lib ...

    希望对您有所帮助。

    【讨论】:

    • 非常感谢,iltempo。这正是我所需要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-29
    • 1970-01-01
    • 2016-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多