Ruby

A collection of 4 posts

Apr 29, 2016

Automatic Eager Loading for Mongoid

Even in MongoDB, sometimes your models may still have reference relations. Like ActiveRecord, the popular MongoDB ORM, mongoid, provides #includes method to perform eager loads. Problems However, it is a pain to specify

Mar 19, 2015

Grape自定义参数类型

Grape的params函数是非常方便用于定义API参数的工具. 这次做到一个接口要传入GeoJSON格式的参数. 与世界在接口上直接写了: params do requires :location, type: GeoJSONPoint, desc: "地点" end class GeoJSONPoint attr_accessor :type, :coordinates def initialize(coordinates=[]) @coordinates = coordinates end # always a point def type "Point" end end 不过这样显然是不行的,

Mar 18, 2015

Sorcery + Grape on Rails

最近手头有一个需要快速开发的新Web项目, 于是想了想还是不用sinatra, 直接用RoR来写. 因为需要为手机提供API, 感觉在Rails上面架设sinatra有点自欺欺人的感觉, 于是第一次尝试在Rails上面加一层Grape... 于是问题就来了. Sorcery在Session/Cookies方面的操作完全依赖Rails的API, 以前用sinatra的时候, 基本上没有感觉到什么不适, 这次在Grape上使用Sorcery就爆炸了OTL. Grape::Endpoint.send(:include, Sorcery::Controller)之后就开始各种undefined. 看了看大概都集中在ActionDispatch和ActionController里. 下午大概的做了个hotfix, 可惜因为Grape自用的Cookies和ActionDispatch::Cookies区别实在太大, Grape的remember_me功能在grape上暂时用不了. module API module SorceryAdapter AUTHENTICITY_TOKEN_LENGTH = 32