#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 для получения дополнительной информации.