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

Fc819f215064650b8eda065dfbd78958?s=47 rainchen
October 11, 2015

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

我们使用backbone+rails4+grape+phonegap的组合开发了一个任务管理的网站和移动app,在主题里会介绍如何用backbone作为前端MVC框架跟rails的结合,rails怎么配合时下流行的hybrid 技术(phonegap, ionic)怎么做mobile app,以及一些任务分配系统中repeating task、权限处理、消息推送、定时通知等典型场景的实现思路。

(PS. 由于speakerdeck只支持PDF,现场看到的一些过渡特效都被去掉了)

Fc819f215064650b8eda065dfbd78958?s=128

rainchen

October 11, 2015
Tweet

Transcript

  1. 如何用Rails开发一个   任务管理的网站和移动App rain@beansmile

  2.    陈林燏
 RainChen CTO  &  CO-Founder Web  Dev  since  2005

    Use  Ruby  since  2007 of
  3. Rails Web Mobile  App HTML5 Agile Professional Reliable Ruby

  4. 一个任务管理系统的   常见功能点 如何用rails开发一个任务管理的网站和移动app

  5. None
  6. 1.  创建、分配任务 为了提高操作上的用户体验,选用前端SPA+后端API的架构 如何用rails开发一个任务管理的网站和移动app

  7. 1.  创建、分配任务 为了提高操作上的用户体验,选用前端 2.  随时反馈 要手机可用web版,最好有单独的app 如何用rails开发一个任务管理的网站和移动app

  8. 1.  创建、分配任务 为了提高操作上的用户体验,选用前端 2.  随时反馈 要手机可用 3.  通知消息 通知方式可以有多种,如邮件通知、移动app推送 如何用rails开发一个任务管理的网站和移动app

  9. 1.  创建、分配任务 为了提高操作上的用户体验,选用前端 2.  随时反馈 要手机可用 3.  通知消息 通知方式可以有多种,如邮件通知、移动 4.

     重复性的任务 如发项目周报、举行周例会 如何用rails开发一个任务管理的网站和移动app
  10. 1.  创建、分配任务 为了提高操作上的用户体验,选用前端 2.  随时反馈 要手机可用 3.  通知消息 通知方式可以有多种,如邮件通知、移动 4.

     重复性的任务 如发项目周报、举行周例会 5.  权限处理 附件可不可以看、子任务可不可以看等复杂的权限问题 如何用rails开发一个任务管理的网站和移动app
  11. 前后端的架构 如何用rails开发一个任务管理的网站和移动app

  12. + 如何用rails开发一个任务管理的网站和移动app 前后端的架构

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

  14. 1.  最接近rails风格 最初是提取自一个rails项目 2.  上手简单 15分钟入门 3.  扩展丰富 自定义mixin容易 4.

     跟rails  结合异常简单   gem  “backbone-rails” 如何用rails开发一个任务管理的网站和移动app
  15. 如何用rails开发一个任务管理的网站和移动app

  16. 1.  简单、灵活、实用的DSL 2.  直观、灵活、可重用的响应格式 gem  “grape-entity” 如何用rails开发一个任务管理的网站和移动app

  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. 移动端的架构 第1版 如何用rails开发一个任务管理的网站和移动app

  67. + (类似AppPresser的做法)   half-hybrid  app => 移动端的架构 第1版 如何用rails开发一个任务管理的网站和移动app

  68. 1.  一次开发同时得到mobile  web和app 好处 2.  开发快速,调试方便 1.  体验差:所有资源从服务器加载 坏处 2.

     没有native  app的优势 3.  没有推送消息 + 如何用rails开发一个任务管理的网站和移动app
  69. 移动端的架构 第2版 如何用rails开发一个任务管理的网站和移动app

  70. hybrid  app => + = 第2版 移动端的架构 如何用rails开发一个任务管理的网站和移动app

  71. 1.  UI友好:针对移动端优化的UI组件 好处 2.  丰富的native组件:摄像头,上传文件,推送消息 3.  开发快速,调试方便 坏处 1.  上手略难(需要熟悉angularjs)

    2.  性能不如纯native  app(在android上更为明显) 如何用rails开发一个任务管理的网站和移动app
  72. 移动端的架构 第3版 如何用rails开发一个任务管理的网站和移动app  RubyMotion http://rubymotion.com/download

  73. 如何用rails开发一个任务管理的网站和移动app 通知消息

  74. 请注意,前方高能! 如何用rails开发一个任务管理的网站和移动app 一大波代码正在接近…  

  75. 通知消息 ⃇⛡僯䘦 有新任务被指派时,被指派人要能收到邮件通知 如何用rails开发一个任务管理的网站和移动app 第1天

  76. 通知消息 ⃇⛡僯䘦 䰫ク♸ Piece  of  cake啦! 有新任务被指派时,被指派人要能收到邮件通知 如何用rails开发一个任务管理的网站和移动app 第1天

  77. 通知消息代码展示

  78. 通知消息代码展示

  79. 通知消息 ⃇⛡僯䘦 增加一个角色叫订阅者;
 任务改变指派人时要发邮件通知创建者和订阅者 Hold得住! 䰫ク♸ 如何用rails开发一个任务管理的网站和移动app 第2天

  80. 通知消息代码展示

  81. 通知消息代码展示

  82. 通知消息代码展示

  83. 通知消息代码展示

  84. 通知消息 ⃇⛡僯䘦 增加移动端的推送,将来还能支持SMS通知;
 并且用户可设置选择使用邮件、推送或短信
 通知方式   有点压力 䰫ク♸ 如何用rails开发一个任务管理的网站和移动app 第3天

  85. 通知消息代码展示

  86. 通知消息代码展示

  87. 通知消息代码展示

  88. 通知消息代码展示

  89. None
  90. None
  91. None
  92. 通知消息 ⃇⛡僯䘦 更多的通知事件、更多的通知方式、   更复杂的需求… 䰫ク♸ … 如何用rails开发一个任务管理的网站和移动app 第4天

  93. 那么问题来了 如何用rails开发一个任务管理的网站和移动app

  94. 如何实现灵活的通知消息? 如何用rails开发一个任务管理的网站和移动app

  95. 如何实现灵活的通知消息? 1.  使用订阅模式触发通知事件 2.  使用命令模式注册通知服务 让增加通知事件变得简单灵活        

     让增加通知方式变得简单轻松 如何用rails开发一个任务管理的网站和移动app
  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. 1.  无限重复任务 显示是虚数据,访问时才实例化 2.  定时任务 时间到时自动实例化 3.  clone的实现 gem  “deep_cloneable”

    4.  计算重复规则 gem“ice_cube” 5.  周期性任务的通知 使用sidekiq 重复性任务 如何用rails开发一个任务管理的网站和移动app
  138. 权限处理 遇到的问题 如何用rails开发一个任务管理的网站和移动app

  139. 权限处理 遇到的问题 创建者、被指派人、订阅者、父任务、子任务、 任务附件、任务态等等因子 附件可不可以看、子任务可不可以看,有些情况完成状态不能改 1.  权限规则复杂,角色和资源交错 2.  前端有不少访问细节 如何用rails开发一个任务管理的网站和移动app

  140. 权限处理 解决方法 如何用rails开发一个任务管理的网站和移动app

  141. 权限处理 解决方法 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') 如何用rails开发一个任务管理的网站和移动app
  142. 使用cancancan进行权限定义

  143. 使用cancancan进行权限定义

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

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

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

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

  148. API  暴露可用权限集合

  149. API  暴露可用权限集合

  150. backbone  view中对细节权限判断

  151. backbone  view中对细节权限判断

  152. • 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 参考 如何用rails开发一个任务管理的网站和移动app
  153. THANK  YOU 如何用rails开发一个任务管理的网站和移动app

  154. Q  &  A 如何用rails开发一个任务管理的网站和移动app

  155. JOINT  US 如何用rails开发一个任务管理的网站和移动app contact
 rain@beansmile.com