Blog

用 Rails 重写 Tweets Page

今天我用 Rails 重写了 Tweets Page 程序。这算是我的第一个正式的 Rails 程序。

写这个程序的目的就是为了真正的用 Rails 来写一个小网站。这个程序的作用仅仅是保存 Twitter 上我的内容到自己的数据库里,然后可以在自己的网站上访问,这样在国内不需要翻墙也可以访问我的 Twitter 页面。它比一个博客程序可简单多了,所以我挺早之前就计划用它来练手了。

最近因为看了一些 RubyConf 上的视频,也更加的激发了我使用 Ruby 和 Rails 的兴趣。一个这么活跃的社区被展现在了我的面前,而我却不得而入,是一件非常讨厌的事情。面对这么活跃的社区,不说可以切身参与进去,至少看别人的演讲可以激发起共鸣才行。

其中有一个视频我特别喜欢,我把它下载下来看了很多次。题目是 The Ruby Code Review, a play in three acts。其中 Jim Weirich 和 Chris Nelson 模拟了一个咨询的过程,Chris 代表咨询人,Jim 作为服务人员帮助 Chris 给他们的程序解决问题。其中 Chris 展示了一些让人忍俊不禁的错误,把 Jim 给逗的没脾气。不过视频中确实展示了 Rails 的很多方便的地方,尤其是对于数据库操作的封装,简直不需要程序员去构思那些 SQL 语句,用 Ruby 的语法自然而然的就操纵了。

我用 Rails 写这个 Tweets Page 程序其中的一个问题就是数据库的操作。我首先需要把数据给导入到数据库中去,怎样完成,我需要考察,如何能从外部导入到数据库中,而让 Rails 也识别出来,是我要解决的。

下午我打算去超市买西瓜,但我都穿好衣服了,但头发因为刚睡起来而一直翘着,怎么弄都弄不平,我怎么好意思就这么出门呢?于是我只好弄条毛巾压在头上一会,好把头发压平。因为没事做我干脆坐下来研究程序,听着 John Mayer 的 Friends, Lovers, or Nothing,不知不觉间就把程序给写成了。

我找到了在 Rails 环境下执行程序的方法,在 Rails 3 中,运行 rails r my_script.rb 就可以了。我很快把我旧的导入程序改了一下,就可以运行了。从这里我很深刻的感受到 Rails 的方便。我的旧程序中使用了 Sequel 来操作数据库,在这里完全不需要,通过 ActiveRecord 可以非常方便的用 Ruby 来操纵数据库,一点 SQL 都不需要,程序简短清晰了许多。

导入数据之后是更新。Ruby 的 Twitter 库升级后给我带来了一些麻烦。我的旧程序中用的是 2.3.0,需要后去 tweets 直接拿就可以了,反正我只要公开的数据;而现在的 Twitter 库版本为 4.7.0,要获取数据必须要认证,明明这些数据都是公开的麻。结果没办法,只好在 Twitter 注册了一个 app,获取了 OAuth 数据,才让我正常获取数据。讽刺的是旧版本的程序运行的好好的,如果用旧版本的 Twitter 库什么问题都没有。不过新版本的程序多了 6 行代码,也就罢了。

到这里程序在本地运行没问题了。我依旧没有实现分页功能,等之后找资料再看吧。我目前导入的 tweet 条目有 11000 多行,因此一下子全部显示出来非常的慢。

之后就是在服务器上部署了。我用的是 Apache+Passenger 来做,不过在根域名下运行正常,而我想把程序部署到子目录下就出问题了,浏览器显示 403 错误,查看 Apache 的错误记录说是没有访问链接的权限。这方面我还没有照到资料,只好日后再试验了。

后来我发现 Rails 的 ID 字段的长度不够,在这里找到了解决方案。

这个程序一点都不复杂,不过作为我的第一个比较正式的 Rails 程序,让我一下子有了种豁然开朗的感觉,我突然对 Rails 有信心了,默认的程序我也敢于自己动手改改了,不错。

1 comment

  1. 找回旧日的记忆 | 我的空想特摄 - pingback on 2013/06/06/ 18:45
    沙发

Leave a Reply