ボクココ

個人開発に関するテックブログ

Node.js , Express Resource , CoffeeScript, Heroku で API作成準備

前回からRailsからNode.jsに移行してきました。
何故かはNode.jsか?何故APIか?は前の記事を読んでください。
Node.js0.6 以降でもHerokuで動かす方法を実施しています。これは海外のサイトを頑張って調べたので、結構有益かも?やり方はHerokuプッシュの部分を見てください。

目標

  • Node.js を Coffee-Scriptで動かす
  • express-resource でAPIを作成
  • Herokuにアップ

環境

  • Node.js インストール済み

 node -v
 v0.6.5

  • npm インストール済み

  npm -v
 1.1.0-alpha-6

  • gem インストール済み

 gem -v
 1.8.24

  • git インストール済み

 git --version
 git version 1.7.4.1
 

coffee-script のインストール

$ sudo npm install -g coffee-script
/usr/bin/env: node: そのようなファイルやディレクトリはありません

いきなりきたぜ・・。ちょっと調べるとこれでいけるらしい


$ /usr/sbin/visudo

Defaults !env_reset
と! をつけてデフォルトでenv_resetが行われないようにする

$ coffee -v
CoffeeScript version 1.4.0

ほんとにこれで出来ちゃったので次いこう。

Express と Express Resource の環境構築


$ cd {開発ディレクトリ}
$ express api
$ cd api/
$ vim package.json

"dependencies": {
"express": "3.0.0rc4",
"express-resource": "latest",
"jade": "*"
}
$ npm install

# APIだからいらないよね!
$ rm -rf public
$ rm -rf views
$ rm -rf routes

とりあえずサンプルコピペ
https://github.com/visionmedia/express-resource/tree/master/examples

CoffeeScript 環境へ

別ターミナルで
$ coffee -w -b -o . -c src/

しつつ、サンプルのJavaScriptをCoffeeScriptに変換。
$ js2coffee controllers/main.js > src/controllers/main.coffee
こんな感じで。
new ってのがキーワードでエラーでたので、そこはいったん他の名前に置き換えて
変換後、元に戻した。

ファイル作った場合はcoffeeコマンドを再度実行しないといけないっぽい。

これ以降はsrcにあるcoffeeファイルを編集して開発を進めていく。

Herokuに上げる

ここまでできたらとりあえず公開してしまおうか。


$ vim Procfile
web: node controllers.js
$ vim package.json
追加

"engines": {
"node": ">=0.4.7 <0.7.0",
"npm": ">=1.0.0"
}
$ npm install
$ vim src/controllers.coffee
修正
app.listen process.env.PORT || 3000
※もちろんcontrollers.jsも変更されていることを確認してね!

$ gem install heroku
$ heroku create kimi-node-api-hoge --stack cedar --buildpack http://github.com/heroku/heroku-buildpack-nodejs.git
$ git init
$ git add .
$ git commit -a -m "first commit"
$ git remote add heroku git@heroku.com:node-api-hoge.git
$ git push heroku master

http://node-api-kimi.herokuapp.com/
http://node-api-kimi.herokuapp.com/forums
http://node-api-kimi.herokuapp.com/forums/new

こんな感じでRESTできてればOK!