【发布时间】:2012-10-02 14:04:24
【问题描述】:
我目前正在为 ruby 编写一个 Gem,我想提供的一些东西是对 resque 或 sidekiq 的支持。通常,如果服务(其中一个)不可用,我不希望用户崩溃,所以我只想在用户启动并运行这些 gem 时加载它们。
我尝试了以下方法:
mymod.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 文件的顶部添加“require 'sidekiq'”,这将有效,但这会破坏允许人们使用任一服务的目的。
有没有办法查看用户是否安装了 gem,然后允许他们使用该服务?
我正在使用: - 红宝石 1.9.3 - 导轨 3 - Sidekiq 1.2.1
任何帮助将不胜感激。
【问题讨论】:
标签: ruby ruby-on-rails-3 gem sidekiq