私は制御不能なヤクの毛刈りの発作で、自分のライブラリを作成することになりました。デーモン キットは正しい一般的なアイデアでしたが、私のニーズには重すぎました。デーモンごとに完全な Rails アプリのように見えるものは必要ありません。最終的に少なくとも 3 つのデーモンが存在することになり、それはディレクトリの巨大な混乱になるでしょう。Daemons gem には恐ろしい API があり、それを抽象化したくなりましたが、フォークを自分で管理する方がおそらく簡単であることに気付いたので、そうしました。
API は次のようになります。
require "rubygems"
require "chaingang"
class Worker
def setup
# Set up connections here
end
def teardown
# Tear down connections here
end
def call
# Do some work
sleep 1
end
end
ChainGang.prepare(Worker.new)
そして、付属のrakeタスクを使用して、開始/停止/再起動またはステータスを確認します. Rack プレイブックから 1 ページを引用しました。このcall
メソッドを実装するものはすべて、ChainGang.prepare および ChainGang.work メソッドの引数としてフェア ゲームであるため、aProc
は有効なワーカー オブジェクトです。
他のものを使用するよりも構築に時間がかかりましたが、長期的には報われるのではないかと漠然とした疑いがあります.