使用Rails5构建简单的IM

Rials5带来了很多新的功能,能让我们更加容易地书写web app, json API的接口,但最激动人心的应该是actioncable,长链接websocket变得如此简单,来我们用30分钟来写一个简单的即时通讯的web app,前端用JS,服务端用Ruby。actioncable的外链:(https://github.com/rails/rails/tree/master/actioncable

这个应用的功能是这样的,打开网页,注册,或者已注册用户登录,新建聊天室,或进入已有的聊天室,同一个聊天室容纳多个人,一个聊天室内所有人会收到新的聊天信息的推送。

1. 建立应用,User建模,数据迁移

环境:Ruby Version: 2.3.3,Rails Version: 5.0.2

打开ternimal, cd到相关目录下,建立工程

先不写测试了,所以没有加入自带的测试框架

打开Gemfile

这个Device是用户认证用的,简化注册登录流程,外链:https://github.com/plataformatec/devise

bootstrap主要是样式,scss,面向对象的css,可以嵌套使用,而且默认提供了一部分组件样式。redis内存是数据库,应为instance message需要及时响应,mac上brew install redis,完成以后

增加scss样式表,同时删除原来的css

写入@import “bootstrap”;

User建模

增加约束,进入网站其他页面,必须是认证用户

写入

2. 聊天室

检查chat_room.rb,确认看到belongs_to :user
检查users.rb,确认看到has_many :chat_rooms, dependent: :destroy

聊天室需要一个标题,在用户登录以后,选择聊天室时可见,而且聊天室是由用户创建的,所以和创建他的用户绑定,如果创建他的用户被删除了,那么聊天室的内容也会被删除,类似于SQL中的DELETE CASCADE效果,完了记得映射model到数据库migrate操作。 继续阅读使用Rails5构建简单的IM