Невозможно загрузить гем во время выполнения - не удается загрузить такой файл

У меня есть следующее объявление в моем Gemfile

гем 'foo', :git => '[email protected]:bar/foo.git'

После того, как я запустил установку пакета, он может получить драгоценный камень в следующей папке.

$ ls ~/.rvm/gems/ruby-1.9.3-p0@samples/bundler/gems/foo-4dc3d7bf8271

Но использование драгоценного камня в моей программе с использованием require 'foo' и его запуск вызывает следующую проблему.

custom_require.rb:36:in `require': невозможно загрузить такой файл -- foo (LoadError)

Как решить эту проблему?

РЕДАКТИРОВАТЬ

/home/ec2-user/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/site_ruby/1.9.1
/home/ec2-user/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/site_ruby/1.9.1/i686-linu
x
/home/ec2-user/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/site_ruby
/home/ec2-user/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/vendor_ruby/1.9.1
/home/ec2-user/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/vendor_ruby/1.9.1/i686-li
nux
/home/ec2-user/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/vendor_ruby
/home/ec2-user/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1
/home/ec2-user/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/i686-linux
/home/ec2-user/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/site_ruby/1.9.1/rubygems/
custom_require.rb:36:in `require': cannot load such file -- foo (LoadError)
        from /home/ec2-user/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/site_ruby/1.
9.1/rubygems/custom_require.rb:36:in `require'

person priya    schedule 28.03.2012    source источник
comment
хм, обычно мне не требуется драгоценный камень, но еще одна вещь, которую я вижу в приведенном выше, заключается в том, что за именем драгоценного камня должен следовать номер версии. foo-1.3.4, это только из-за твоего примера?   -  person Jason Levens    schedule 28.03.2012
comment
foo-4dc3d7bf8271 — это потому, что я разветвил проект и внес в него некоторые изменения, поэтому я пытаюсь использовать этот драгоценный камень непосредственно из github.   -  person priya    schedule 28.03.2012
comment
Добавьте строку puts $: (или используйте Rails.logger.debug $:, если это приложение Rails) перед вашим требованием и проверьте, есть ли ваш путь к гему в списке или нет. Также проверьте, находится ли файл foo.rb в своем пути, он может иметь немного другое имя.   -  person Nash Bridges    schedule 29.03.2012
comment
@Nash - я получаю указанную выше ошибку, добавленную как часть вопроса, когда пытаюсь запустить пример программы на рубине.   -  person priya    schedule 29.03.2012
comment
Возможно, вам нужно указать, как требовать этот драгоценный камень, например: gem 'dylansm-wirble', :require => 'wirble'   -  person taro    schedule 29.03.2012
comment
@taro Я не думаю, что это проблема. Потому что, если вы посмотрите на LOAD_PATH выше, там есть любой путь к гему, связанный с Rails (active_record и т. д.), что приводит меня к предположению, что упаковщик вообще не запускался (или, может быть, это не приложение Rails)   -  person Nash Bridges    schedule 29.03.2012


Ответы (1)


Убедитесь, что require 'bundler/setup' вызывается, прежде чем вам потребуется какой-либо драгоценный камень из вашего Gemfile. Но в случае с Rails это должно произойти обязательно, потому что rails server вызывает config/boot.rb, который содержит такую ​​строку.

person Nash Bridges    schedule 29.03.2012