Проблема с RVM и драгоценным камнем, у которого есть исполняемый файл

Недавно я решил использовать RVM в Ubuntu.

Кажется, все прошло как по маслу... кроме одного. Я нахожусь в процессе разработки моего драгоценного камня, у которого есть скрипт, помещенный в его собственный каталог bin/, все спецификации драгоценных камней и другие вещи были сгенерированы Jeweler.

Файл bin/mygem содержит следующий код:

#!/usr/bin/env ruby
begin
  require 'mygem'
rescue LoadError
  require 'rubygems'
  require 'mygem'
end
app = MyGem::Application.new
app.run

Это отлично работало на системной версии Ruby.

Теперь... недавно я перешел на RVM, чтобы немного лучше управлять своими рубиновыми версиями, за исключением того, что теперь мой драгоценный камень, похоже, не работает.

Сначала я делаю это: -

rvm 1.9.2

Затем я делаю это: -

rvm 1.9.2 gem install mygem

Что устанавливается нормально, за исключением... когда я пытаюсь запустить команду для mygem

mygem

Я просто получаю следующее исключение: -

daniel@daniel-VirtualBox:~$ mygem 
<internal:lib/rubygems/custom_require>:29:in `require': no such file to load -- mygem (LoadError)
    from <internal:lib/rubygems/custom_require>:29:in `require'
    from /home/daniel/.rvm/gems/ruby-1.9.2-p136/gems/mygem-0.1.4/bin/mygem:2:in `<top (required)>'
    from /home/daniel/.rvm/gems/ruby-1.9.2-p136/bin/mygem:19:in `load'
    from /home/daniel/.rvm/gems/ruby-1.9.2-p136/bin/mygem:19:in `<main>'mygem

ПРИМЕЧАНИЕ. У меня есть похожая настройка RVM на MAC OSX, и мой гем отлично там работает, поэтому я думаю, что это может быть как-то связано с Ubuntu?


person djhworld    schedule 12.01.2011    source источник
comment
Проверьте rvm info и убедитесь, что вся информация PATH, Ruby и Gem проходит проверку работоспособности.   -  person the Tin Man    schedule 13.01.2011


Ответы (2)


С использованием:

rvm 1.9.2 gem install mygem

отличается от того, как я устанавливаю драгоценные камни внутри RVM.

Пытаться:

rvm 1.9.2
gem install mygem

Вы также можете попробовать выполнить gem pristine mygem, который скажет Gems удалить исполняемый файл и перекомпилировать его для текущего Ruby.

Еще одна мысль: раньше вы использовали Ruby 1.8+ и только что перешли на Ruby 1.9+? В Ruby 1.9 require действует по-другому при загрузке модулей, которые относятся к вызывающему коду, скажем, в дочернем каталоге, потому что '.' был удален с пути поиска. require_relative был добавлен, чтобы дать нам эту возможность.

person the Tin Man    schedule 12.01.2011
comment
Я не думаю, что есть большая разница между семантикой использования команд - обе работают нормально. Однако ваше предложение по require_relative сработало, мне удалось перенастроить свое приложение, чтобы использовать его вместо этого, и теперь оно работает лучше на Ubuntu, спасибо! - person djhworld; 14.01.2011

Помогает ли выполнение export RUBYOPT=rubygems?

person Andrew Grimm    schedule 12.01.2011
comment
К сожалению, похоже, это не имеет значения, я боюсь - person djhworld; 13.01.2011