Windows7にhubotをインストールした時のメモ


  • せっかくなのでメモを残しておこう
  • 環境はWindows7 Pro SP1
  • 始めるにあたって、参考にした記事はこれ

この順番にやりゃいい

やったことを詳しく知りたかったら次項以降にやったこと書いてます
1. node.jsをインストール
2. 以降、管理者権限で実行したコマンドプロンプトでコマンドを打ち込む
3. npm install -g hubot coffee-script yo generator-hubot
4. mkdir c:\node\mybot
- 注意!!フォルダ名をhubotにするとインストールに失敗します
5. cd c:\node\mybot
6. yo hubot hubotからの質問は全部Enter
7. bin\hubot.cmd
8. 起動後の動作確認はscripts/example.coffeeに適当に書いて下さい
9. おわり

最初にnode.jsをインストール

記事ではnodistを使っていたが、せっかくなので公式からインストールする。
https://nodejs.org/ja/

この記事を参考にしました。

hubotをインストール

最初に参考にしてたこの記事をまた見直してhubotをインストールする。
ただし、nodistではなく公式のnode.jsを使ったのでフォルダ名を変える。
今回はC:\node\hubotというフォルダを作った。
しかし、このフォルダ名を変える悪手によりすぐ後ではまってしまう・・・

hubotのインストールに失敗

インストール中に下記のエラーが出てしまった。

255 error argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "hubot" "hubot-scripts" "hubot-diagnostics" "hubot-help" "hubot-heroku-keepalive" "hubot-google-images" "hubot-google-translate" "hubot-pugme" "hubot-maps" "hubot-redis-brain" "hubot-rules" "hubot-shipit" "--save"
256 error node v6.9.5
257 error npm  v3.10.10
258 error code ENOSELF
259 error Refusing to install hubot as a dependency of itself
260 error If you need help, you may report this error at:
260 error     <https://github.com/npm/npm/issues>
261 verbose exit [ 1, true ]

適当にググってみたら公式のGitHubにissueがあったので参考にしてnpm install -g node-gypを叩いてnode-gypをインストールしてみたが変わらず。

もうちょっと真面目にググってみて、別の方法を発見
しかし、管理者権限で実行しても無駄。
プロキシなんて元々設定してないから触らないで良い。
で、八方塞がりになってしまった。

さらにググって、このサイトに助けられた。
どうやら可能性2に該当してたっぽい。
フォルダ名がプロジェクト名やらパッケージ名に当てはまるのかよく分からないけど、もしかしてと思ってフォルダ名を変えたらやっとインストール出来た。

hubotの実行に失敗

c:\node\mybot\binに移動後、hubot.cmdと叩いた所、指定されたパスが見付かりませんとのエラーが出てしまった。
そろそろ心折れそう。
環境変数が問題なのかなーと思い、PCを再起動させてみた。
変わらず。。。

ググってもよく分からないので、hubot.cmdの中身を見てみた。

hubot.cmd
@echo off

call npm install
SETLOCAL
SET PATH=node_modules\.bin;node_modules\hubot\node_modules\.bin;%PATH%

node_modules\.bin\hubot.cmd --name "mybot" %* 

ん?相対パスで書いてる。
どうやらc:\node\mybot\binフォルダまで移動して実行していたことが原因だったらしい。
一つ上のフォルダに戻ってbin\hubot.cmdを実行したら無事に動作しました。

動作確認

hubot pingと打ってもPONGと返してくれない。なぜ!!!
どうやら、scripts/example.coffeeが空だから何も動かないっぽい。
なんでだろ。デフォルトで応答用のスクリプトくらい用意しておいてほしいんだけど・・・
というわけで、確認したいのでサンプルを参考にしてスクリプトに手を加えてみた。
保存時はUTF-8で保存するのを忘れずに

example.coffee(13行目あたり)
 robot.hear /unko/i, (res) ->
  res.send "うんこ!!!"

清々しい内容。
一度hubotをexitコマンドで落として再度bin\hubot.cmdで起動。
その後でmybotちゃんにunkoと言うと、ちゃんとうんこ!!!と返してくれて童心に戻れた。

疲れた。Slackで使いたいとかはまた後日やろ。
hubotのインストールに3時間くらいかかったけど、少しは賢くなった気がするからまぁいっか。