私は現在、ルビー用の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をインストールしているかどうかを確認し、そのサービスの使用を許可する方法はありますか?
私が使用しているもの:-Ruby 1.9.3 --Rails 3-Sidekiq 1.2.1
どんな助けでも大歓迎です。