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兼容性很好,容易过度。

  • 相关阅读:
    CQUOJ 10819 MUH and House of Cards
    CQUOJ 9920 Ladder
    CQUOJ 9906 Little Girl and Maximum XOR
    CQUOJ 10672 Kolya and Tandem Repeat
    CQUOJ 9711 Primes on Interval
    指针试水
    Another test
    Test
    二分图匹配的重要概念以及匈牙利算法
    二分图最大匹配
  • 原文地址:https://www.cnblogs.com/wendelhuang/p/5146894.html
Copyright © 2011-2022 走看看