在写非 Rails 项目的时候,用 guard-compass 自动重编译 sass 文件
我的解决方法是在服务器上装个 OpenVPN 翻墙 = =!!!
表示找不到我的账号了!!用户名忘了,用 Email 也搜不到 = =
10.04 是当前的 LTS 版本啊,适合服务器使用
#7 楼 @paranoyang Basic Auth 的话,是每次请求的时候都要发送用户名和密码……
思路:
首先划分清楚需要登录的和不需要登录的 API 请求
在 Basic Auth / OAuth / xAuth 中选择一种来实现用户认证
Demo 阶段可以先用 Basic Auth。正式使用时,如果是自己的客户端,推荐用 xAuth,因为对用户来说相对比较友好(OAuth 和 xAuth 的区别可以参考 Twitter 官方文档 http://twitter.com/docs/oauth/xauth
使用 OAuth 或 xAuth 作为认证方式时,网站的后端需要实现一个 OAuth Provider(注意跟 Consumer 的区别)。目前有 oauth-plugin 这个 gem 可用(不过实现 xAuth 需要自己写 patch)。
小广告:我最近用 oauth-plugin 的代码改造出一个小 gem,是专门用于实现 xAuth 的(不支持 OAuth),有兴趣的可以看看(文档暂缺):http://github.com/iwinux/oxit
跟 Django Admin 比就太弱了……(Python 党!!拖出去砍了 >。<)
#12 楼 里那个正则是针对 Compass 写的,在包含所有 css/js/图片 文件的前提下,排除 Compass 的 partials(文件名是下划线开头的,比如 _shared.css.sass)
刚刚摸索出一种比较省事的 config.assets.precompile 的写法,我是看了 sprockets 的 static_compiler.rb 的源码之后才发现的,现在我是这样写的(在 production.rb 里):
def compile_asset?(path)
if File.basename(path) =~ /^[^_].*\.\w+$/
puts "Compiling: #{path}"
true
else
puts "Ignoring: #{path}"
false
end
end
config.assets.precompile = [ method(:compile_asset?).to_proc ]
原理很简单,config.assets.precompile 可接受的类型包括 String,Regexp 和 Proc,但是 Rails 官方文档只提到前两个,还好自己去翻了源码 = =
@hooopo 主要是 ActiveRecord 里用习惯了。其实今天是被迫写这个东西的,因为我用的 oauth-plugin 这个 gem 用了一堆 find_by_xxx 方法,完全没考虑与 Mongoid 兼容,一个个改太蛋疼了,索性给 Mongoid 加上这些方法算了 =。=