Путь к файлу Ruby gem

#ruby

#ruby

Вопрос:

Итак, я здесь своего рода подстава, я использую примеры из gem, gem AMQP для ruby здесь, на github, я извлек репозиторий, и в одном из файлов примеров (этом) в нем есть несколько строк, подобных этой:

 $LOAD_PATH.unshift File.expand_path("../../../../lib", __FILE__)

require "amqp"

# [...]
  

Путь загрузки указывает на этот каталог. Итак, мой вопрос в основном заключается в следующем: когда у меня установлен gem и я пытаюсь запустить файл, используя только ruby или даже IRB, он не будет работать за пределами каталога gems examples при обращении к этим файлам lib… почему? даже когда я require "amqp" ?

Любые идеи будут высоко оценены.


Обновление Мне интересно, есть ли два конфликтующих драгоценных камня или библиотеки, например, на которые ссылается библиотека:

 https://github.com/ruby-amqp/amqp
  

Я просто в замешательстве, потому что я не знаю, совпадает ли это с gem «amqp», как я могу сказать, .gemspec и Gemfile мне непонятно, и, похоже, в нем есть другие вещи, такие как:

 custom_gem "amq-client",   :git => "git://github.com/ruby-amqp/amq-client.git",   :branch => "master"
custom_gem "amq-protocol", :git => "git://github.com/ruby-amqp/amq-protocol.git", :branch => "master"
  

И в .gemspec есть:

 s.add_dependency "amq-client"
  

Любая помощь, помогающая мне понять это, была бы такой потрясающей!

Ответ №1:

Предположительно, в него включена эта строка, чтобы вы могли запустить файл примера непосредственно из дерева исходных текстов без установки gem.

Если у вас установлен gem и у вас загружены RubyGems, то вы должны быть в состоянии просто указать require "amqp" , и это будет соответствующим образом необходимо.

Обратите внимание, что вам необходимо загрузить RubyGems для того, require "amqp" чтобы загрузить AMQP gem; вам нужно либо сделать require "rubygems" в начале вашего исходного файла, либо запустить Ruby с -rubygems , либо установить RUBYOPT переменную окружения export RUBYOPT=rubygems . Смотрите руководство RubyGems для получения дополнительной информации.