2013-05-09 2 views
1

я сделал некоторые исследования, и ничего совершенно не наткнется на мой вопрос ...рубин требуют не находя все файлы

Я строю камень поэтому у меня есть структура каталогов, как этот

root/ - lib/ - mygem/ - cli.rb 
         - version.rb 
         - xmltemplates.rb 
      - mygem.rb 
     - bin/ 

Это приложение thor так в cli.rb у меня есть:

require 'thor' 
require 'mygem/version' 
require 'mygem/xmltemplates' 

module MyGem 
    #STUFF 
end 

И в vesrion.rb:

module MyGem 
    VERSION = '0.1.0' 
end 

и xmltemplates.rb:

module MyGem 
    MY_TEMPLATE = 'TEST' 
end 

Я получаю ошибки при попытке компиляции с как камень, так что я решил играть с ним в IRB.

Итак, для этого теста я сделал cd lib, чтобы сделать себя локальным в каталоге lib.

1.9.3-p392 :001 > require 'rubygems' 
=> false 
1.9.3-p392 :003 > require 'mygem' 
=> true 
1.9.3-p392 :005 > require 'mygem/cli' 
LoadError: cannot load such file -- mygem/xmltemplates 
    from /Users/user/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require' 
    from /Users/user/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require' 
    from /Users/user/.rvm/gems/ruby-1.9.3-p392/gems/mygem-0.1.0/lib/mygem/cli.rb:3:in `<top (required)>' 
    from /Users/user/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require' 
    from /Users/user/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require' 
    from (irb):5 
    from /Users/user/.rvm/rubies/ruby-1.9.3-p392/bin/irb:16:in `<main>' 
1.9.3-p392 :007 > require 'mygem/xmltemplates' 
LoadError: cannot load such file -- mygem/xmltemplates 
    from /Users/user/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require' 
    from /Users/user/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require' 
    from (irb):7 
    from /Users/user/.rvm/rubies/ruby-1.9.3-p392/bin/irb:16:in `<main>' 
1.9.3-p392 :009 > require 'mygem/version' 
=> true 
1.9.3-p392 :010 > MyGem::VERSION 
=> "0.1.0" 

Так что сводится к следующему: Есть ли какая-либо причина, что mygem/version нагрузили бы найти и mygem.xmltemplates не будут? Я также проверял разрешения на файлы, и они все одинаковы.

Некоторые из предыдущих постов я прочитал упомянутый require_relative, но это не работает для меня, и кажется, что если бы это был я не был бы в состоянии загрузить cli.rb или version.rb.

ответ

0

При работе с драгоценными камнями важно, чтобы ваш файл .gemspec был в курсе последних событий. Gem loader использует это для поиска файлов. Возможно, вы еще не добавили xmltemplates?

Если вы пытаетесь диагностировать проблемы с загрузкой, всегда проверяйте $LOAD_PATH, чтобы убедиться, что у вас lib/. Если это не так, вы получите LoadError исключения из-за недостающих файлов.

+1

Мои gemspec показывает: 's.require_paths = [ 'Lib']' Вы были на него, хотя !!! Просто понял, что у меня также было это: 's.files = 'git ls-files'.split (" \ n ")'. Это была работа с копией, поэтому я не думал ее менять. Наверное, мне пришлось «git add», чтобы он работал. Спасибо за точку в правильном направлении! – IamTheFij

+0

Это точно. Если что-то не указано в манифесте, оно не входит в комплект и не устанавливается. – tadman

Смежные вопросы