PythonかRubyのスクリプトを常駐させたかったので調べてみたらRubyの方が簡単そうだったので試してみた。

環境

OS:Windows 7
ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32]
gem 1.3.4

Portableバージョンを使ってます。

Win32-Serviceのインストール

するだけです。

ただうちの環境ではこんなエラーが出てしまいました。

うわー、意味ワカンネー。

それっぽい所にある “MSC version unmatch” でぐぐってみると、このエラーは使っているコンパイラがruby本体に使われたものと違ったら起きるものらしい。

本当はruby本体に使われたコンパイラを調べて、それと同じものを用意しないといけないけども、「コンパイラが新しい分には大丈夫だろ」と言う事で

にある config.h をひらいて

に修正。直してからもう一度

すればインストールが最後まで終わりました。

実際にサービスで動かせるか確認

実際にデーモン化できるかどうかを確認するために以下のスクリプトをコピペして好きな場所に好きな名前で保存。

俺は P:\Dropbox\servicetest.rb に保存しました。

てっきりこれを

すれば良いと思ったのに、やってみると

なエラーが帰ってきてしまいました。

サービスとして使うために、事前にサービスとして登録しないと動かないらしいので

“rubyservice”になってるサービス名は何でも良いです、適当に好きな名前にしてください。binPath で指定するruby.exe の場所とサービス化したい .rb ファイルの場所はフルパスで記入してください。 PATHを通してても無視されます。

サービスが登録されたら起動します。

上手くいってたら、これで3秒毎に “C:\test.log” に “service is running” と書き込み続けるサービスが作成されているはずです。

このまま放置しとくと邪魔なので、使わないサービスは

で削除しておきましょう。次回Windows起動時に削除されます。

require ‘rubygems’ が抜けてしまっていたので追記

参考サイト

Win32-Serviceが欲しかったのでRubyGemsをインストール
http://projectzero-swb.blogspot.com/2009/08/win32-servicerubygems.html

RubyでWindowsのサービスを作る
http://projectzero-swb.blogspot.com/2009/08/rubywindows.html

[ruby] Windowsでgem install jsonでエラー
http://www.pistolfly.jp/weblog/2008/03/windowsgem-install-json.html

File: daemon.txt
http://rubyforge.org/docman/view.php/85/596/daemon.html


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Post Navigation