使用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

制作并发布自己的Gem

我要写一个demo小工具来记录gem的开发过程,

工具的作用:遍历本地的git仓库,并且更新它们到最新的代码,也就是每个仓库进行git pull操作,很简单吧,demo就是要简单嘛

mac下的gem开发环境:

ruby –version, 2.2.2
gem –version, 2.6.1
bundle –version, 1.11.2
rake –version, 10.4.2

屏幕快照 2016-03-27 下午8.30.41

继续阅读制作并发布自己的Gem