Sinatra 我的 Sinatra 实践

gazeldx · January 24, 2016 · Last by aidewoode replied at January 26, 2016 · 9741 hits

一直以来,我都在社区积极地实践 Sinatra。这次正好在我发起的“公益读书”活动项目中完整的实践了一次。以前自己的 Sinatra 项目好多都是Classic style,这一次用Modular Application,并且目录结构和 Rails 的目录结构也很像。

Sinatra 做项目的特别之处在于,您的代码都是您可以掌控的,不会像 Rails 那样一下子引入那么多的 gem,而且好多并不是您需要的。因此用 Sinatra 对您的 DIY 能力是种考验。

美德公益读书活动

公益读书活动详情 源代码在 https://github.com/gazeldx/meidebook

功能展示

包含“注册、登录、搜索图书、查看图书信息、评论图书、发表读书心得、上传图片、验证码等”功能。

请访问美德公益图书 - 首页体验相关功能(更侧重手机访问体验)。

安装本项目

采用Sinatra架构搭建本项目,数据库操作用Sequel,数据库用SQLite,界面用WeUI

安装 Ruby

安装rbenv

相比 RVM,我更喜欢 rbenv。RVM 中我想要的功能,rbenv 都有。用了 rbenv,你会发现一些 RVM 的不便之处。

安装rbenv-gemset

安装其它软件

ImageMagick 用于图片处理。

安装本程序

$ git clone [email protected]:gazeldx/meidebook.git
$ cd /path/to/meidebook
$ gem install bundler
$ bundle install
$ sequel -m db/migrations sqlite://db/book_development.db -E # 创建数据库
$ puma # 启动项目,这时可以访问 http://localhost:9292/ 了

代码说明

./config.ru是第一个被加载的文件,./controllers/application_controller.rb是一个很重要的文件。

安装 Nginx 并运行程序在 80 端口

详见./deploy/README.md

其它使用帮助见Wiki

做到后面就变成 rails 啦

@zgm 我以前也是这般想法,但现在倒比较倾向组合一些小工具和框架。诚然 Rails 是一个很完善的全栈框架,但现实中的需求各有千秋,开发者的审美也各有不同。没有一套框架可以适应所有应用场景。这种情况下组合一些各个领域做得好的类库或框架,不仅可以根据项目和个人的情况选择更适合的工具,而且替换零部件的成本也更小。

想尝试下 sinatra

如果是写 API 用 sinatra 很方便,如果有前端页面的话,用 padrino 会省去很多事情

#4 楼 @pobing 请问您是否用 padrino 写过完整的项目?

如果你觉得 rails 太重,然后又嫌 sinatra 太散,太灵活的话,padrino 是一个好的选择,如果用 sinatra 写比较大的项目的话,就不可避免的要去组织 sinatra 的代码,但是 padrino 就帮你做好了这一点,就可以免去这种麻烦。

#6 楼 @aidewoode 也请问您是否用 padrino 写过完整的项目?

@gazeldx 我写过,但不能算是个完整的项目,就自己写着玩的。

You need to Sign in before reply, if you don't have an account, please Sign up first.