大家周一好!
今天,Rails团队很高兴地宣布,我们已发布Rails 4.2.0.beta2。
感谢所有参与第一轮Beta测试的早期用户,我们已经识别出代码库中的一些bug、回归和其他不完善之处。这些问题现已得到修复并包含在此版本中。
此版本还包括两个安全补丁。
与Rails 4.2.0.beta2版本一同发布的还有Web Console 2.0.0.beta4,其中包含一个安全修复。
如果您已经在开发环境中使用Web Console,我们建议您升级到此新版本的gem。
我们还修复了一个Active Job的bug,该bug允许将String参数反序列化为Global IDs,这是一个对象注入安全漏洞。
除了安全和bug修复之外,在实际应用中经过进一步测试后,一些新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 "foo/bar"`等同于调用`render file: "foo/bar"`。自beta 2以来,这已被改为表示`render template: "foo/bar"`。这是由于旧的默认行为存在一些潜在的安全问题。如果您需要渲染一个文件,请将您的代码更改为使用显式形式(`render file: "foo/bar"`)。
一如既往,您可以在GitHub上浏览Rails源代码仓库,查看此版本中包含的全部变更列表。
Rails团队感谢66位贡献者提供的补丁,才使得此版本得以发布!