sinatra/activerecord/grape小试

以下是最近今天学习sinatra等框架的使用笔记。

sinatra

参考文档 http://www.sinatrarb.com/intro.html
个人感觉类似Spring MVC,主要学习了

  • URL映射
  • 参数
  • 静态文件
  • 模板处理(ERB)
  • 变量传递

sinatra很容易上手,helloworld非常快。

获取请求字符串的参数用上下文变量params,比如/foo?id=1中的params['id']
静态文件,默认在同级目录public中,比如你定义这样的模板

这里的main.js为同级目录public/main.js。
模板有很多,这里选择Rails默认的ERB。模板默认位置为views,命名为view_name.erb,比如下面第一段代码对应views/index.erb

代入变量很重要,sinatra这里的语法和rails很像,就是@开始的变量,erb中可以引用。这里的变量数据如果从数据库中取的话,一个简单的网站原型就有了。

activerecord

脱离rails使用activerecord并不是很复杂,有点类似直接用JDBC,基本用法

主要是加载数据库配置,创建连接,定义ORM模型,执行。
唯一有点不明确的是,哪里可以释放连接?

grape

另外一个还学习了的是grape,一个快速创建Restful接口的框架。个人感觉直接用rails也可以,不过对Restful接口来说rails的view层是多余的,裁剪成restful层+数据层差不多。

grape编写和启动与sinatra不同,需要rackup。对于我这个rack外行来说还需要花点时间理解。之后我是参照https://github.com/3scale/sentiment-api-example/tree/master/version_1这里的样子编写的,有一个config.ru。主体部分是一个用上面那段activerecord代码去取的:

config.ru

app.rb

注意下require的ruby代码的路径,虽然有一层app目录,但执行此文件是在根目录。
最后访问http://localhost:9292/v1/users/all应该就可以得到数据。

以上就是最近学习的一点ruby相关的知识。下一步可能会从ruby china上看看基础重新学习。