3

Ruby on Rails:当我开始使用 Rails 4(发布 beta 版)时,Rails 3 中存在哪些将更改或需要完全删除的概念?

也了解了 ActiveRecord 观察者的用法,它已经被提取到一个 gem 中。新 gem 将位于 github.com,rails-observers。

4

3 回答 3

5

根据发行说明(http://edgeguides.rubyonrails.org/4_0_release_notes.html):

强调

Ruby 2.0 优先;需要 1.9.3+

这是不言自明的。

强参数

允许您从控制器指定批量分配的允许属性。

在此处阅读更多信息:http: //blog.remarkablelabs.com/2012/12/strong-parameters-rails-4-countdown-to-2013

涡轮链接

“不是让浏览器在每个页面更改之间重新编译 JavaScript 和 CSS,而是保持当前页面实例处于活动状态,并且只替换头部的正文和标题。”

查看 github 页面:https ://github.com/rails/turbolinks

俄罗斯娃娃缓存

这是一种缓存技术,您可以在此处阅读更多信息:http: //blog.remarkablelabs.com/2012/12/russian-doll-caching-cache-digests-rails-4-countdown-to-2013

主要更改和弃用

提取到宝石中的特征:

如果使用 Rails 默认测试框架,目录有如下变化:

  • 测试/单元 -> 测试/模型
  • 测试/单元/助手 -> 测试/助手
  • 测试/功能 -> 测试/控制器
  • 测试/功能 -> 测试/邮件
  • 测试/集成 -> 测试/验收

供应商插件

已弃用。您在供应商/插件中可能拥有的任何插件都必须作为 g​​em 安装。

活动记录

以下方法已弃用,需要重写如下:

  • find_all_by_...可以使用重写where(...)
  • find_last_by_...可以使用重写where(...).last
  • scoped_by_...可以使用重写where(...)
  • find_or_initialize_by_...可以使用重写where(...).first_or_initialize
  • find_or_create_by_...可以使用find_or_create_by(...)或重写where(...).first_or_create
  • find_or_create_by_...!可以使用find_or_create_by!(...)或重写where(...).first_or_create!
于 2013-03-07T13:00:07.197 回答
1

Ryan 在这里对 Rails 4 中的新功能有一个很好的概要:http ://railscasts.com/episodes/400-what-s-new-in-rails-4

于 2013-03-08T13:12:50.470 回答
1

我最喜欢看到差异(并知道如何升级)的资源是 Andi Lindemann Upgrading to Rails 4的书和网站。他讨论了一些变化,并解释了如何进行迁移。

他的书的一部分是以下摘要(复制为纯文本,书中当然包括细节):

  • 升级到 Ruby 1.9.3 或 2.0.0
  • 升级捆绑器
  • 使用 rails4_upgrade 检查 gem 的不兼容性
  • 升级 Rails 本身
  • 添加从 Rails 3 中提取功能的 gem
  • 将插件升级到 gems 或将代码移动到 lib/
  • 调整任何使用 match 的路由而不使用 :via => :verb
  • 审核 Relation#order 的任何链式使用,因为现在添加新订单而不是附加
  • 确定远程表单的优雅降级对您的应用程序是否重要,如果是,则启用在表单中嵌入真实性令牌的选项
  • 将 lib/ 或 vendor/ 中的任何图像资产添加到预编译列表

早期版本的 Rails 中的某些功能已被弃用:虽然您的应用程序可能会继续正常运行,但您会看到警告。在您解决了第一个清单中的问题后,请考虑解决已弃用的功能:

  • 现代化 Rails 2 finder 语法
  • 使动态查找器现代化
  • 更改渴望评估的范围以使用 lambdas
  • 审计关系的任何使用#all
  • 使用连接表上的条件解决 Relation#includes 的任何使用
  • 从所有环境配置文件中删除 whiny_nils 设置
  • 从所有环境配置文件中删除 auto_explain_threshold_in_seconds 设置
  • 添加新的线程安全配置选项
于 2013-03-08T13:35:12.613 回答