AirJD 焦点
AirJD

没有录音文件
00:00/00:00
加收藏

如何用Rails开发一个任务管理的网站和移动App by 陈林燏

发布者 ruby
发布于 1446427078018  浏览 2254 关键词 Ruby, 创业 
分享到

第1页

如何用Rails开发一个  任务管理的网站和移动App

rain@beansmile



第2页

  陈林燏 RainChen



Web Dev since 2005 Use Ruby since 2007

CTO & CO-Founder of



第3页

Mobile App Agile



HTML5



Rails



Web

Professional



Ruby Reliable



第4页

如何用rails开发一个任务管理的网站和移动app

一个任务管理系统的  常见功能点



第6页

如何用rails开发一个任务管理的网站和移动app

1. 创建、分配任务

为了提高操作上的用户体验,选用前端SPA+后端API的架构



第7页

如何用rails开发一个任务管理的网站和移动app

1. 创建、分配任务

为了提高操作上的用户体验,选用前端

2. 随时反馈

要手机可用web版,最好有单独的app



第8页

如何用rails开发一个任务管理的网站和移动app

1. 创建、分配任务

为了提高操作上的用户体验,选用前端

2. 随时反馈

要手机可用

3. 通知消息

通知方式可以有多种,如邮件通知、移动app推送



第9页

如何用rails开发一个任务管理的网站和移动app

1. 创建、分配任务

为了提高操作上的用户体验,选用前端

2. 随时反馈

要手机可用

3. 通知消息

通知方式可以有多种,如邮件通知、移动

4. 重复性的任务

如发项目周报、举行周例会



第10页

如何用rails开发一个任务管理的网站和移动app

1. 创建、分配任务

为了提高操作上的用户体验,选用前端

2. 随时反馈

要手机可用

3. 通知消息

通知方式可以有多种,如邮件通知、移动

4. 重复性的任务

如发项目周报、举行周例会

5. 权限处理

附件可不可以看、子任务可不可以看等复杂的权限问题



第11页

如何用rails开发一个任务管理的网站和移动app

前后端的架构



第12页

如何用rails开发一个任务管理的网站和移动app

前后端的架构

+



第13页

如何用rails开发一个任务管理的网站和移动app



第14页

如何用rails开发一个任务管理的网站和移动app

1. 最接近rails风格

最初是提取自一个rails项目

2. 上手简单

15分钟入门

3. 扩展丰富

自定义mixin容易

4. 跟rails 结合异常简单 

gem “backbone-rails”



第15页

如何用rails开发一个任务管理的网站和移动app



第16页

如何用rails开发一个任务管理的网站和移动app

1. 简单、灵活、实用的DSL 2. 直观、灵活、可重用的响应格式

gem “grape-entity”



第17页

Grape DSL demo



第18页

Grape DSL demo



第19页

Grape DSL demo



第20页

Grape DSL demo



第21页

Grape DSL demo



第22页

Grape DSL demo



第23页

Grape DSL demo



第24页

Grape DSL demo



第25页

Grape DSL demo



第26页

Grape DSL demo



第27页

Grape DSL demo



第28页

Grape DSL demo



第29页

Grape DSL demo



第30页

Grape DSL demo



第31页

Grape DSL demo



第32页

Grape DSL demo



第33页

Grape DSL demo



第34页

Grape DSL demo



第35页

Grape DSL demo



第36页

Grape API demo



第37页

Grape API demo



第38页

Grape API demo



第39页

Grape API demo



第40页

Grape API demo



第41页

Grape API demo



第42页

Grape API demo



第43页

Grape API demo



第44页

Grape API demo



第45页

Grape API demo



第46页

Grape API demo



第47页

Grape API demo



第48页

Grape API demo



第49页

Grape API demo



第50页

Grape API demo



第51页

Grape API demo



第52页

Grape entity demo



第53页

Grape entity demo



第54页

Grape entity demo



第55页

Grape entity demo



第56页

Grape entity demo



第57页

Grape entity demo



第58页

Grape entity demo



第59页

Grape entity demo



第60页

Grape entity demo



第61页

Grape entity demo



第62页

Grape entity demo



第63页

Grape entity demo



第64页

Grape entity demo



第65页

移动端



第66页

如何用rails开发一个任务管理的网站和移动app

移动端的架构

第1版



第67页

如何用rails开发一个任务管理的网站和移动app

移动端的架构

第1版

+

=> (类似AppPresser的做法)  half-hybrid app



第68页

如何用rails开发一个任务管理的网站和移动app

+

好处 1. 一次开发同时得到mobile web和app 2. 开发快速,调试方便

坏处 1. 体验差:所有资源从服务器加载 2. 没有native app的优势 3. 没有推送消息



第69页

如何用rails开发一个任务管理的网站和移动app

移动端的架构

第2版



第70页

如何用rails开发一个任务管理的网站和移动app

移动端的架构

第2版

=+ => hybrid app



第71页

如何用rails开发一个任务管理的网站和移动app

好处 1. UI友好:针对移动端优化的UI组件 2. 丰富的native组件:摄像头,上传文件,推送消息 3. 开发快速,调试方便

坏处 1. 上手略难(需要熟悉angularjs) 2. 性能不如纯native app(在android上更为明显)



第72页

如何用rails开发一个任务管理的网站和移动app

移动端的架构

第3版  RubyMotion http://rubymotion.com/download



第73页

如何用rails开发一个任务管理的网站和移动app

通知消息



第74页

如何用rails开发一个任务管理的网站和移动app

请注意,前方高能! 一大波代码正在接近… 



第75页

如何用rails开发一个任务管理的网站和移动app

通知消息

第1天

有新任务被指派时,被指派人要能收到邮件通知



第76页

如何用rails开发一个任务管理的网站和移动app

通知消息

第1天 有新任务被指派时,被指派人要能收到邮件通知

Piece of cake啦!😁



第77页

通知消息代码展示



第78页

通知消息代码展示



第79页

如何用rails开发一个任务管理的网站和移动app

通知消息

第2天 增加一个角色叫订阅者; 任务改变指派人时要发邮件通知创建者和订阅者

Hold得住!😊



第80页

通知消息代码展示



第81页

通知消息代码展示



第82页

通知消息代码展示



第83页

通知消息代码展示



第84页

如何用rails开发一个任务管理的网站和移动app

通知消息

第3天

增加移动端的推送,将来还能支持SMS通知; 并且用户可设置选择使用邮件、推送或短信 通知方式 

有点压力😥



第85页

通知消息代码展示



第86页

通知消息代码展示



第87页

通知消息代码展示



第88页

通知消息代码展示



第92页

如何用rails开发一个任务管理的网站和移动app

通知消息

第4天

更多的通知事件、更多的通知方式、  更复杂的需求…

… 😱



第93页

如何用rails开发一个任务管理的网站和移动app

那么问题来了



第94页

如何用rails开发一个任务管理的网站和移动app

如何实现灵活的通知消息?



第95页

如何用rails开发一个任务管理的网站和移动app

如何实现灵活的通知消息?

1. 使用订阅模式触发通知事件 让增加通知事件变得简单灵活

2. 使用命令模式注册通知服务      让增加通知方式变得简单轻松



第96页

如何用rails开发一个任务管理的网站和移动app

进行代码重构



第97页

使用订阅模式触发通知事件



第98页

使用订阅模式触发通知事件



第99页

使用订阅模式触发通知事件



第100页

使用订阅模式触发通知事件



第101页

使用订阅模式触发通知事件



第102页

使用订阅模式触发通知事件



第103页

使用订阅模式触发通知事件



第104页

使用订阅模式触发通知事件



第105页

使用订阅模式触发通知事件



第106页

使用订阅模式触发通知事件

#可按需要增加广播事件



第107页

使用订阅模式触发通知事件

# app/listeners/assigned_listener.rb

添加事件订阅者, 在订阅者中发送通知



第108页

使用订阅模式触发通知事件

#设置事件被触发时的响应逻辑



第109页

使用订阅模式触发通知事件



第110页

使用订阅模式触发通知事件



第111页

使用订阅模式触发通知事件

#告知通知中心发送对应的消息



第112页

使用订阅模式触发通知事件



第113页

使用订阅模式触发通知事件



第114页

使用订阅模式触发通知事件

#注册订阅者



第115页

使用订阅模式触发通知事件



第116页

使用命令模式注册通知服务



第117页

使用命令模式注册通知服务

第一步 1. 定义统一的Notifier入口 2. 定义消息发送基类



第118页

使⽤用命令模式注册通知服务



第119页

使⽤用命令模式注册通知服务

#定义统一的Notifier入口



第120页

使⽤用命令模式注册通知服务



第121页

使⽤用命令模式注册通知服务



第122页

使⽤用命令模式注册通知服务

#定义消息发送基类



第123页

使⽤用命令模式注册通知服务



第124页

使用命令模式注册通知服务

第二步 1. 实现邮件发送的具体逻辑  2. 注册邮件通知服务



第125页

使⽤用命令模式注册通知服务



第126页

使⽤用命令模式注册通知服务



第127页

使⽤用命令模式注册通知服务



第128页

使⽤用命令模式注册通知服务



第129页

使⽤用命令模式注册通知服务



第130页

使⽤用命令模式注册通知服务



第131页

使⽤用命令模式注册通知服务



第132页

使⽤用命令模式注册通知服务



第133页

使⽤用命令模式注册通知服务



第134页

如何用rails开发一个任务管理的网站和移动app

代码重构完成!



第135页

如何用rails开发一个任务管理的网站和移动app

通知消息

更多的通知事件、更多的通知方式、  更复杂的需求…

冇问题啦!😉



第136页

如何用rails开发一个任务管理的网站和移动app

重复性任务



第137页

如何用rails开发一个任务管理的网站和移动app

重复性任务

1. 无限重复任务

显示是虚数据,访问时才实例化

2. 定时任务

时间到时自动实例化

3. clone的实现

gem “deep_cloneable”

4. 计算重复规则

gem“ice_cube”

5. 周期性任务的通知

使用sidekiq



第138页

如何用rails开发一个任务管理的网站和移动app

权限处理

遇到的问题



第139页

如何用rails开发一个任务管理的网站和移动app

权限处理

遇到的问题

1. 权限规则复杂,角色和资源交错

创建者、被指派人、订阅者、父任务、子任务、 任务附件、任务态等等因子

2. 前端有不少访问细节

附件可不可以看、子任务可不可以看,有些情况完成状态不能改



第140页

如何用rails开发一个任务管理的网站和移动app

权限处理

解决方法



第141页

如何用rails开发一个任务管理的网站和移动app

权限处理

解决方法 1. gem “cancancan”

可读、好维护、灵活的DSL

2. 给CanCan::ModelAdapters打补丁让can方法           可使用query scope

can :index, Task, Task.where(…)

3. API 输出资源的可用权限集合

expose :abilities

4. Backbone自定义mixin

currentRole.can('create', 'User')



第142页

使用cancancan进行权限定义



第143页

使用cancancan进行权限定义



第144页

在资源中定义出可用权限集合



第145页

在资源中定义出可用权限集合



第146页

在资源中定义出可用权限集合



第147页

在资源中定义出可用权限集合



第148页

API 暴露可用权限集合



第149页

API 暴露可用权限集合



第150页

backbone view中对细节权限判断



第151页

backbone view中对细节权限判断



第152页

如何用rails开发一个任务管理的网站和移动app

参考

• https://github.com/intridea/grape  • https://github.com/ruby-grape/grape-entity  • http://backbonejs.org/  • https://github.com/codebrew/backbone-rails  • http://phonegap.com/  • http://ionicframework.com/  • https://github.com/CanCanCommunity/cancancan



第153页

如何用rails开发一个任务管理的网站和移动app

THANK YOU



第154页

如何用rails开发一个任务管理的网站和移动app

Q & A



第155页

如何用rails开发一个任务管理的网站和移动app

JOINT US

contact rain@beansmile.com



支持文件格式:*.ppt, *.pptx, *.pdf
上传最后阶段需要进行在线转换,可能需要1~2分钟,请耐心等待。