読者です 読者をやめる 読者になる 読者になる

プログラミング 美徳の不幸

Ruby, Rails, JavaScriptなどのプログラミングまとめ、解説、備忘録。

RailwayJSのセットアップ

※すでにnpmやmongodbの設定は済んでいるものとする。

nodejsのサンプルがみんなオレオレコードばっかりで、どういうデザインパターンがいいのか悩んでいたら、Rails風のMVCを提供するフレームワークを見つけました。
一つがRailwayJSで、もう一つがTower.js。後者のほうが後発で機能は多い印象だけど、その分リソースが圧倒的に少なかったし、
実際にインスコしていじってみても、クライアント側のMVCとサーバ側のMVCの関連性がさっぱり。
それに、nodejsでフルスタックをアピールするのって、なんか玄人からは馬鹿にされそう笑

RailwayJSは標準テンプレートがejsで基本的にコードは.jsなので、カスタマイズが必要です。

今回の構成は
◯Viewテンプレート Jade
◯モデルのドライバ mongoose
◯記述言語 coffeescript
です。
テスティングフレームワークにJasmineを使いたかったんだけど、これはまた今度ということで。

npm install railway -g

railway init blog --coffee && cd blog
#=>coffeeで作成する

npm install -l

coffee server
#=>起動することを確認。

次に標準テンプレートをjadeにする
◯config/environment.coffee

app.configure ->
    cwd = process.cwd()
    
    app.set 'view engine', 'jade' #=>ここを変更
    app.set 'view options', complexNames: true
    app.enable 'coffee'

◯npmfile.coffee

require 'ejs-ext'
require 'jugglingdb'
require 'seedjs'
require 'jade-ext' #=>追加

◯package.json

, "dependencies":
  { "ejs":              "*"
  , "ejs-ext":          "*"
  , "jade":             "*" #=>追加
  , "jade-ext":         "*" #=>追加
  , "express":          "~2.x"

で、次にscaffold。

railway  g scaffold post title content --coffee
#=>coffeescriptでgenerateする

これで確認すると、ヘッダーが少し出力が異なっていると思います。
その点は、initした際にできるapp/views/layouts/application_layout.ejsがjadeになっていないためです。
記述をapp/views/layouts/posts_layout.jadeに移すとよいでしょう。