by agate - Published: 2009-05-13 [1:51 下午] - Category: 程序编码
首先谢谢 wujiang 的推荐, 在详细阅读 Sinatra 的文档和看了 rubyconf 的视频之后, 我举双手认同这个新的 ruby web 框架.
它没有 rails 那样的臃肿(? 之前我们说 rails 多么敏捷轻量阿... ). 它可以十分便捷地将所有现成的东西集成进来. 你不需要做很多的配置, 你只要知道我需要什么, 然后你就用吧.
它十分Restful: GET/POST/PUT/DELETE 都是集成的. 方便将 web 应用写成良好的格式.
它支持多种模板: Haml Erb Sass Builder
它支持多种持久层框架: Datamapper Sequel ActiveRecord
更多的细节可以查阅: Sinatra - The Book (一个十分短小的优质文档)
PS. 我喜欢 Sequel!
by agate - Published: 2008-10-29 [3:39 下午] - Category: 程序编码
很早就在 "Web 开发大全 -- Ruby on Rails 版" 书中看到过 restful_authentication 这个鉴定插件了~ 但是一直都没使用过. 今天看到一个中文的 ROR 视频网站 -- rubycnrails.cn 上面用视频介绍了 restful_authentication 这个插件的使用(但是这位仁兄老是出错... 看着我好着急阿!) 呵呵! 于是我也试着使用了一番, 发现真的满好用的. 这里就记录一下, 顺便说一下需要注意的地方.
github 地址 http://github.com/technoweenie/restful-authentication/tree/master
(rubycnrails.cn 上面那个视频似乎是使用旧的版本... 大概不知道这个插件已经迁移到 github 上面了吧.)
安装:
$cd [your-rails-app]
$./script/plugin install git://github.com/technoweenie/restful-authentication.git
使用:
$./script/generate authenticated Model-Name [Controller-Name]
别忘了 rake 一下, 来建立你的数据库!
结果:
生成对应的 controller / model / view. 添加了对应的 routes: signup / login / logout. 当然, 还添加了
lib/authenticated_system.rb
lib/authenticated_test_helper.rb
这两个才是重要的插件功能! 其中 AuthenticatedSystem 中包含了诸如: logged_in?, current_kid 等重要方法! 到时候我们只需要在需要调用的 controller 中 include AuthenticatedSystem 就好了.
注意:
不要傻乎乎地学 README 中键入: ./script/generate authenticated user sessions 这个 s 最好不要!(不要说我违反了 RESTful 的理念, 我说的是最好不要!) 对于初学者来说先别加这个 s, 因为这个会带来很多配置上的模糊: 比如 routes.rb 中 resource 是定义为 'session', 但是设置具体命名路由的时候使用 controller 参数时又要设置为 'sessions'. 所以, 如果你对这里头的细节不是很清楚的话, 建议你改用单数作为这里控制器的名称:
$./script/generate authenticated user session 我建议这么写
当然! 你清除的话, 或者你不关心这个的话, 那还是写上那个 s 吧! 这样才够 RESTful!
其他很细致的内容还是看看源代码或者看看 Plugin 的 README 吧! 写得很不错!
by agate - Published: 2008-09-07 [5:27 下午] - Category: 程序编码
从 rails 2.x 之后, 常用的 migrate 中就多了一个 references 的属性. 一开始还以为 rails 2.x 牛逼了吧数据库中的 references 都给加上了(就是说那个外键啦!). 结果跑到 sqlite 里头一看米有... 怀疑 sqlite 太差了没有外键功能, 于是换了 mysql 的 InnoDB 结果还是一样... 其实就是根据 references 属性指向的那个 model 找到对应 model_id 填充到数据表中罢了!
奶奶的! 和 integer 一样...
从 rails 2.x 之后, 常用的 migrate 中就多了一个 references 的属性. 一开始还以为 rails 2.x 牛逼了吧数据库中的 references 都给加上了(就是说那个外键啦!). 结果跑到 sqlite 里头一看米有... 怀疑 sqlite 太差了没有外键功能, 于是换了 mysql 的 InnoDB 结果还是一样... 其实就是根据 references 属性指向的那个 model 找到对应 model_id 填充到数据表中罢了!
奶奶的! 和 integer 一样...
引用 Arthur 的观点就是 "xxx:references makes migrations even sexier. To compare, xxx_id:integer is the old way of doing the same thing"
附 generate 用例:
$ ./script/generate model User name:string group:references
by agate - Published: 2008-09-06 [10:03 下午] - Category: 历程, 感想, 程序编码
这两天脑袋瓜有爆炸了~ 好久没有体会到刚刚学 J2EE 时候的那种兴奋和冲进了! 是 rails 给了我重生一样的感觉! 不可否认, 我是一个喜新的人! 我对新技术的饥渴是我周围朋友深知的! 先是 rSpec 指引着的 BDD 然后是熟悉又陌生的 RESTFul, 这么大量的知识点让我既兴奋又喘不过气! 毕竟学 rails 开发是为了下一个项目的应用方向做准备的! 但是如此大量的知识我是否来得及学习和掌握, 最总要的是我能否将其用在未来这个项目上面是我最担心的~
今天在 China on rails 上面习惯性闲逛的时候特地搜了一下 RESTFul 的资源, 看到了一个五步建立一个基于 rails 的 TODO List 应用, 并不因为这个应用有多么强大, 主要的是从这个应用我看到了第一个完整的 rails RESTFul 应用例子!
1. rails todo
2. cd todo
3. rake db:create:all
4. script/generate scaffold Todo title:string body:text done:boolean due:datetime
5. rake db:migrate
然后启动你的 rails 应用并访问 http://localhost:3000/todos 看看一个 RESTFul 的 rails 应用吧!
简简单单的5行命令构建的应用如此深刻地反应了 rails 在其开发中不变的 "灵活", "简单" 的宗旨, 更加坚定了俺 good good study, day day up! 的信心, 好! 下个项目必定 rails!