我目前正在为 ruby 编写 Gem,并且我想提供的一些东西是对 resque 或 sidekiq 的支持。通常,如果服务(其中一个)不可用,我不希望用户崩溃,所以我只想在用户启动并运行这些 gem 时加载它们。
我尝试了以下方法:
我的mod.rb
module Mymod
# Code code code
end
require "mymod/railtie" if defined?(Rails)
require "mymod/sidekiqworker" if defined?(Sidekiq)
mymod/sidekiqworker.rb
module mymod
class Sidekiqworker
include Sidekiq::Worker
sidekiq_options :queue => :default
def perform(path)
end
end
end
但是当我加载 gem 并启动服务器时,类不包括在内(看起来 sidekiq 没有定义)。
如果我在 sidekiqworker 文件的顶部添加“需要'sidekiq'”,这将有效,但这会破坏允许人们使用任一服务的目的。
有没有办法查看用户是否安装了 gem,然后允许他们使用该服务?
我正在使用: - Ruby 1.9.3 - Rails 3 - Sidekiq 1.2.1
任何帮助将不胜感激。