各位,祝大家周一快乐!
Rails 团队很高兴地宣布 Rails 4.2.0.beta2 已发布。
感谢所有在第一轮测试中参与测试的早期应用者,我们就代码库中发现的问题、退化和其他编程错误进行了修复。这些问题现在已在本次版本中修复。
本次版本还包括两个安全补丁。
与 Rails 4.2.0.bta2 版本一同发布的还有 Web 控制台 2.0.0.beta4,其中包括安全补丁。
如果您在开发中已在使用 Web 控制台,建议您将宝石升级到这个新版本。
我们还修复了 Active Job 错误,该错误会导致字符串参数被反序列化为全局 ID,这是一个对象注入安全漏洞。
除了安全性和错误修复,某些新的 API 也在实际应用中经过进一步测试后进行了完善。因此,以下不兼容更改将与 4.2.0.beta1 存在差异
Active Job API 已被全面检修
# The enqueueing method has changed from +enqueue+ to +perform_later+.
#
# In 4.2.0.beta1:
MyJob.enqueue(*args)
#
# In 4.2.0.beta2:
MyJob.perform_later(*args)
# The ways jobs are scheduled has changed.
#
# In 4.2.0.beta1:
MyJob.enqueue_at(Date.tomorrow.noon, record)
MyJob.enqueue_in(1.week, record)
#
# In 4.2.0.beta2:
MyJob.set(wait_until: Date.tomorrow.noon).perform_later(record)
MyJob.set(wait: 1.week).perform_later(record)
#
# You can also specify a queue to enqueue the job onto with this new API:
MyJob.set(queue: :low_priority).perform_later(record)
Action Mailer API 也进行了一些更改
# Two new methods +#deliver_now+ and +#deliver_now!+ were introduced for
# clarity. +#deliver+ and +#deliver!+ have been deprecated and applications are
# encouraged to use the +#deliver_*+ instead.
#
# In 4.2.0.beta1:
Notifier.welcome(User.first).deliver!
#
# In 4.2.0.beta2:
Notifier.welcome(User.first).deliver_now!
# The options for +#deliver_later+ and +#deliver_later!+ has changed to match
# those on Active Job.
#
# In 4.2.0.beta1:
Notifier.welcome(User.first).deliver_later!(in: 1.hour)
Notifier.welcome(User.first).deliver_later!(at: 10.hours.from_now)
#
# In 4.2.0.beta2:
Notifier.welcome(User.first).deliver_later!(wait: 1.hour)
Notifier.welcome(User.first).deliver_later!(wait_until: 10.hours.from_now)
render
行为更改过去,在控制器操作中调用 render "foo/bar"
相当于 render file: "foo/bar"
。自 beta 2 版本起,此命令变为 render template: "foo/bar"
。这是由于旧的默认行为存在许多潜在安全问题。如果您需要渲染文件,请将代码更改为使用显式格式(即 render file: "foo/bar"
)。
与往常一样,您可以在 GitHub 上浏览 Rails 源代码仓库 查看此版本中包含的完整更改列表。
Rails 团队要感谢 66 名对本次版本发布做出贡献的人员!