zoukankan      html  css  js  c++  java
  • [转载]Rails 4的一些新功能

    http://www.tuicool.com/articles/eQfYbm

    总体

    1. 支持Ruby 2.0

    不支持Ruby1.8系了,最低也得1.9.3。

    2. 动态查找器没有了

    这个东西太灵活了,代码可能少敲两个字母,外人看来容易引起迷惑。 
    原来是 find_by_name ‘aaa’ 
    现在是 find_by name:’aaa’

    3. routing里禁止了裸match

    即如果用match的话就必须给:via选项。

    否则的话默认开启了GET和POST等,容易导致CSRF攻击。 
    请直接用协议,比如 
    post ‘controller/action’ => ‘controller#action’

    4. 增加concerns目录

    为了解决业务逻辑无处可写的窘境,在controller和model各添加了标准的concerns目录,这里的文件都是autoload的。

    5. 用bin目录代替script目录

    不多说,rails,rake,bundle都放这里。

    6. 可以在浏览器上浏览route设置。

    之前需要通过rake routes命令,现在可以在浏览器通过路径/rails/info/routes来确认了。

    Modle相关

    7. 增加where.not

    如何在sql里查找不属于某个人的东西? 
    where name <> ‘user abc’ 
    在rails4里可以User.where.not(name: name)

    8. pluck可以接受多个列

    最初为啥不设计成这样呢? 
    现在可以Book.where(???).pluck(:title,:price)

    9. update_columns

    不调用验证方法和callback,速度很快。 
    同时废弃了update_column方法

    10. update_attributes变味update方法了

    名字长度减了一半。

    11. 加强对PostgreSQL的支持

    mysql真是江河日下啊。 
    增加了hstore(无schema),UUID,range,inet,cidr等。

    ActionPack的变更点

    12. PUT变PATCH

    谁没事老翻旧帐?反正是因为PUT不准确,以后都用PATCH了。 
    我觉得POST应该一块改CREATE得了。

    13. before_filter 改为before_action

    我觉得还是原来的名字好。。。

    14. routing改善

    后段从Rack::Mount换为Journey了

    模板

    15. 嵌套缓存的自动废弃

    被嵌套的缓存变化时,会自动废弃包含之的缓存。 
    model也是,可以子model通知父model。

    16. 增加了.ruby模板

    可以处理文字,数据,图像等。

    性能方面的改善

    17. AssetPipeline

    这个东西虽然3就有了,但是不是说那么好用的。 
    主要问题就是预编译速度慢,以及核心的Sprockets的版本太老。 
    rails4解决了这两个问题。

    18. TurboLinks

    这个东西比aset pipeline还前卫,简单来说它的做法就是画面显示之后,你点击连接后它会通过ajax来取得新页面,然后再判断新页面里的asset(css,js)之类的有没有变化,如果有变化,则全页reload,否则的话,只替换body和title里的东西。这就省去了解析装载css,js的时间。

    其做法导致的问题是页面本身不会被重新装载,也就是说 window.onload,jquery的.ready方法就用不了了 
    不过貌似有个gem叫jquery-turbolinks可以解决这个问题。

    realtime web

    19. ActionController::Live

    mixin这个类,然后再调用response.stream.write就可以通信了。 
    但是WEBrick不支持realtime通信,开发的时候可以用puma。

    另外值得一提的是,针对实时通信,Passenger和Unicorn等这些多进程的web server就显得力不从心了;最好选用多线程,事件驱动的web server,比如puma 。

    20. spring

    此spring非彼spring,它要解决的是load各种lib时的效率问题。 
    简单来说第一次启动时同时启动一个高速load的服务进程,第二次再load的时候,速度就会变快。 
    此模块跟DHH开发的Commands大同小异,目前谁将是将来rails的标准,还没定论。

    21. schema cache dump

    定义一二model几乎不费一行代码,因为很多信息都是rails从数据库里取得反推敲出来的,这就浪费了一定的时间。 
    可以通过rake db:schema:cache:dump来生成schema cache dump文件,提高系统启动时间。

    安全相关

    2012年,有人在用rails编写的托管着rails代码的github通过rails漏洞(严格来说是编码问题?)冒充rails的committer提交了代码。

    22. Strongparameters

    和之前的model白名单不一样的是,它通过controller来控制哪些列是安全的。

    其它

    23. Rails API

    这是一个专门为了API设计的轻量级rails(类似sinatra?) 
    通过rails-api这个gem来安装。

    24. model序列化

    ActiveModel::Serializers来帮助序列(json)化一个model

    25. JBuilder

    此JBuilder也非彼JBuilder 
    这是一个json 模板的render。 
    此模板以.json.jbuilder结尾。

    26. Sidekiq

    异步处理用。 
    比DelayedJob和Resque节省资源。 
    而且sidekiq和resque兼容性很好,容易过度。

  • 相关阅读:
    Hadoop Avro支持多输入AvroMultipleInputs
    Java LinqCollection 仿Linq的list常用函数
    json转成java对象
    symbol lookup error: /lib64/libpango-1.0.so.0: undefined symbol: g_log_structured_standard 错误
    CentOS 6&7安装ffmpeg
    MySQL的ibdata1文件占用过大瘦身
    Centos下磁盘管理的常用命令记录(如查找大文件)
    EasyPOI 教程以及完整工具类的使用
    github最火的springboot开源学习资料
    微信机器人
  • 原文地址:https://www.cnblogs.com/wendelhuang/p/5146894.html
Copyright © 2011-2022 走看看