0

私はローカルの宝石を構築しています.pryでテストして使用できるようにしたいと考えています。経由で宝石を作成していbundle gem blahます。

  • 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 によって確立された慣行を使用して、順序どおりに作業を行っているように感じますが、どこかで間違っている可能性があります。

4

1 に答える 1

2

ruby を直接実行する場合はロードパスを指定してみてください。これにより、gem で相対的に必要なすべてのファイルも確実に検出されます。

したがって、Railsルートディレクトリでrubyを呼び出すときは、次のようにする必要があります

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

またはこじ開けの場合

pry -I lib ...

それが役立つことを願っています。

于 2012-05-20T22:01:36.497 に答える