可以说是最完善的 Grape 框架的脚手架
不同于 Rails,使用纯 Ruby 构建的脚手架项目,仅使用 Bundler 和 Rack 运行服务器,非常地轻量。
脚手架包含的组件:
- 纯 Grape 实现,完全脱离 Rails
- 支持自动生成 Swagger 文档
- 单元测试
rake db:setup
、rake db:migrate
等- ActiveRecord
- pundit:权限验证
- overcommit 和 RuboCop:代码质量保证
- 一个类似于
rails console
的交互式环境 - ……
- Ruby: 推荐 2.6.x 版本
- SQLite3 的开发包: 版本不低于 3.8,编译方式可以查看文档编译和构建 SQLite3.
全局安装:
gem install overcommit -v 0.52.1
初始化一个 Git 仓库(如果已存在 ./.git
目录请忽略):
git init
在项目内初始化:
overcommit --install
可设置 bundle 命令安装的路径(此步骤亦可忽略):
bundle config set path './vendor/bundle'
安装 Gems:
bundle
如果是在生产环境,应使用如下命令,它不会安装 development 和 test 环境的 gems:
bundle --without development test
首先,确认 db/schema.rb
文件是否已创建。如果没有创建,执行如下命令:
bin/rake db:migrate
bin/rake db:seeds
如果已经创建,只需要执行:
bin/rake db:setup
生产环境的正确执行步骤是:
bin/rake db:create
bin/rake db:schema:load
bin/test
bundle exec rackup -p 9292
为了较完整地演示 grape 框架的能力,项目实现了一套 API 接口,这套接口模拟了博客系统提供的 API 服务:
-
登录
POST /logins
: 登录获取 token
-
用户
GET /users
: 查看所有用户信息POST /users
: 注册用户GET /user
: 查看我的信息PUT /user
: 更新我的信息
-
博文
GET /posts
: 查看我的所有的博文GET /users/:user_id/posts
: 查看某用户的所有博文POST /posts
: 创建新博文GET /posts/:id
: 查看单个博文PUT /posts/:id
: 更新博文DELETE /posts/:id
: 删除某博文
脚手架内嵌了我认为好用的很多 gems,如 ActiveRecord、pundit 等;并且封装了很多便捷的命令。这些内容,请移步到组件的详细页面:
另外,由于集成了 overcommit 和 RuboCop,而很多新手对此不太熟悉,特写了一篇针对新手的存活指南:
本脚手架只在 Linux 环境下得到测试,Mac 和 Windows 环境并未全面测过。Mac 与 Linux 同属于 Unix 环境,上手应该很直接。而 Windows 下恐怕要做较大改动才可完整使用。
兼容性要考虑到以下几个问题:
- 项目代码如何运行,这包括 gems 的安装、服务器的启动等?
- bin 目录下的命令如何运行?
- overcommit 中的命令如何运行?
对于一个常年在 Windows 环境下捯饬 Ruby 的开发者来说,问题 1 应该不是问题。如果这成为问题,那应该考虑更换 Ruby 开发的环境,如 Linux.
主要的问题在于 bin 目录下的脚本和 overcommit 中的自动化命令,这些我都是以 Linux 的 Bash 环境为参照编写的。但只要阅读其中的代码和配置,改写为 Windows 下的形式,也就 ok 了。脚本的命令大部分都很简单,很容易就能提取出 Windows 下的调用方式。