CoffeeScriptを使うDrink coffee – do stupid things faster with more energy

アプリケーションのほとんどはCoffeeScriptで記述することも可能です。是非使ってみてください。railwayコマンドのオプションに--coffeeを指定するだけです。

railway init blog --coffee
npm install -l
cd blog
railway g scaffold post title content --coffee

railway servercoffee server.coffeeを実行することによって、3000番ポートでサーバを起動することができます。

以下は、ジェネレイトされたCoffeeScriptで記述されたコントローラです。

before ->
    Post.findById req.params.id, (err, post) =>
        if err or not post
            redirect path_to.posts
        else
            @post = post
            next()
, only: ['show', 'edit', 'update', 'destroy']

# GET /posts/new
action 'new', ->
    @post = new Post
    render
        title: 'New post'

# POST /posts
action 'create', ->
    @post = new Post
    ['title', 'content'].forEach (field) =>
        @post[field] = req.body[field] if req.body[field]?

    @post.save (errors) ->
        if errors
            flash 'error', 'Post can not be created'
            render 'new',
                title: 'New post'
        else
            flash 'info', 'Post created'
            redirect path_to.posts

# GET /posts
action 'index', ->
    Post.find (err, posts) ->
        render
            posts: posts
            title: 'Posts index'

# GET /posts/:id
action 'show', ->
    render
        title: 'Post show'

# GET /posts/:id/edit
action 'edit', ->
    render
        title: 'Post edit'

# PUT /posts/:id
action 'update', ->
    ['title', 'content'].forEach (field) =>
        @post[field] = req.body[field] if req.body[field]?

    @post.save (err) =>
        if not err
            flash 'info', 'Post updated'
            redirect path_to.post(@post)
        else
            flash 'error', 'Post can not be updated'
            render 'edit',
                title: 'Edit post details'

# DELETE /posts/:id
action 'destroy', ->
    @post.remove (error) ->
        if error
            flash 'error', 'Can not destroy post'
        else
            flash 'info', 'Post successfully removed'
        send "'" + path_to.posts + "'"