2012 年 11 月 12 日,星期一

Rails 3.2.9 已发布!

spastorino 发布

各位,

Rails 3.2.9 已发布,自 3.2.9.rc3 起未进行任何新更改。

重要!

最近在 Ruby 中发现一个 DoS 攻击,该攻击利用专门创建的输入极大地降低哈希的性能,从而耗用大量 CPU 时间。Rails 应用程序可能会受到攻击者发送专门创建的 HTTP 请求来利用此漏洞的影响。

限制此类攻击有效性的好方法是配置您的前端服务器,限制 HTTP 请求行、头部和主体的尺寸。Nginx 默认执行此操作。Apache 可通过设置 LimitRequestBody 指令来配置执行此操作。

此外,建议所有 Ruby 1.9 用户升级到 ruby-1.9.3 补丁程序级别 327 以获取此安全修复程序。

自 3.2.8 起的更改

动作邮件

  • 在未调用 mail() 时不呈现视图。修复 #7761

    Yves Senn

动作包

  • 将齿轮锁在 2.2.x 原因:在齿轮和 sass-rails 中有一些待处理的修复措施可能使用齿轮版本 > 2.2。我们对此版本进行更保守的齿轮更新。在下一个版本中,我们可以再次放松依赖关系。有关更多信息,请参阅 #8099。

    Guillermo Iguaran

  • 重新加载路由时清除 URL 帮助器。

    Santiago Pastorino

  • 将带有 :module 选项的速记路由恢复为修复程序此操作新增了一个回归,因为它更改了 URL 映射。这使得稳定版本具有向后兼容性。

    Rafael Mendonça França

  • 恢复 assert_template 修复程序,不会传递与模板名称匹配的字符串。此操作新增了一个回归,因为用户依赖于此错误行为。这会重新引入 #3849,但此稳定版本具有向后兼容性。修复 #8068。

    Rafael Mendonça França

  • 恢复 ActionController::TemplateAssertions 中内部变量的重命名,以防止命名冲突。此操作新增了一个与 shoulda-matchers 相关的回归,因为它预期 实例变量 @layouts。这会重新引入 #7459,但此稳定版本具有向后兼容性。修复 #8068。

    Rafael Mendonça França

  • 接受 link_to 帮助器的 :remote 作为符号选项。Riley Lynch

  • 如果在视图测试用例之外将 :locals 选项传递给 assert_template,则会发出警告 修复 #3415

    Yves Senn

  • 重命名 ActionController::TemplateAssertions 中的内部变量,以防止命名冲突。@partials、@templates 和 @layouts 现在以下划线开头。修复 #7459

    Yves Senn

  • resourceresources 不会修改传入的选项哈希 修复 #7777

    Yves Senn

  • 预编译资源包括从 foo.js 到 foo/index.js 的别名,反之亦然。

    # Precompiles phone-<digest>.css and aliases phone/index.css to phone.css.
    config.assets.precompile = [ 'phone.css' ]
    
    # Precompiles phone/index-<digest>.css and aliases phone.css to phone/index.css.
    config.assets.precompile = [ 'phone/index.css' ]
    
    # Both of these work with either precompile thanks to their aliases.
    <%= stylesheet_link_tag 'phone', media: 'all' %>
    <%= stylesheet_link_tag 'phone/index', media: 'all' %>
    

    Jeremy Kemper

  • assert_template 不再传递任何与模板名称匹配的字符串。

    之前,当我们有一个模板 /layout/hello.html.erb 时,assert_template 会传递任何匹配的字符串。此行为允许出现误报,例如:

    assert_template "layout"
    assert_template "out/hello"
    

    现在它只传递:

    assert_template "layout/hello"
    assert_template "hello"
    

    修复了 #3849。

    Hugolnx

  • ActionDispatch::Http::UploadedFile 视为 Rack::Test::UploadedFile,不在上面调用 to_param。由于 Rack::Test::UploadedFile 与 API 不兼容,因此需要此方法来测试依赖 tempfile 的文件上传。

    Tim Vandecasteele

  • 修复了带有 :module 选项的简写路由中没有向控制器添加模块的漏洞,如问题 #6497 中所述。现在应正常工作

    scope :module => "engine" do
      get "api/version" # routes to engine/api#version
    end
    

    Luiz Felipe Garcia Pereira

  • 尊重 config.digest = false 以获取 asset_path

    以前,asset_path 内部只会尊重 :digest 选项,而忽略全局配置文件设置。这意味着 config.digest = false 无法与 config.compile = false 结合使用,此操作会更正此行为。

    Peter Wagenet

  • 修复 #7646,当引发异常时,日志现在会显示正确的状态代码。

    Yves Senn

  • 修复同时使用禁用和废弃选项时日期选择器的处理方式。修复 #7431。

    Vasiliy Ermolovich

  • 在 option_tags 为 nil 时修复 select_tag。修复 #7404。

    Sandeep Ravichandran

  • javascript_include_tag :all 现在如果文件不存在,就不会包含 application.jsPrem Sichanugrist

  • 为所有会话存储支持 Cookie jar 选项(例如,域:所有)。修复 GH#3047、GH#2483。

    Ravil Bayramgalin

  • send_file 的性能改进:避免必须将打开的文件句柄作为响应正文传递。Rack::Sendfile 通常会拦截响应,并仅直接使用路径,因此没有理由打开文件。此性能改进还解决了 jRuby 编码问题,这是回溯的原因,请参阅问题 6844。

    Jeremy Kemper 和 Erich Menge

活动模型

  • 由于生成器的更改,nil 值和空字符串现在生成闭合标签,因此替代此操作:

    <pseudonyms nil=\"true\"></pseudonyms>
    

    它生成此内容:

    <pseudonyms nil=\"true\"/>
    

    Carlos Antonio da Silva

活动记录

  • 修复集合关联调用 first(n)/last(n) 并尝试设置反关联时出现的问题,当时使用了 :inverse_of。修复 #8087。

    Carlos Antonio da Silva

  • 修复 ActiveRecord#update_column 返回值。

    Aliaxandr

  • 修复当 Column 尝试将布尔值类型转换为整数时的错误。修复 #8067。

    Rafael Mendonça França

  • 修复 rake db:test:prepare 尝试将 structure.sql 加载到开发数据库中的错误。修复 #8032。

    Grace Liu + Rafael Mendonça França

  • 修复了对 rake db 任务的 DATABASE_URL 环境变量的支持。Grace Liu

  • 修复 update_columnsupdate_column 不允许更新主键列的错误。

    Henrik Nyh

  • 解码数据库连接 URL 上的 URI 编码属性。

    Shawn Veader

  • 修复 AR#dup 以使 dup’ed 对象中的验证错误无效。此前,原始对象和 dup’ed 对象共享相同的错误。

    • Christian Seiler*
  • 同步围绕从保留的连接散列中删除操作。修复 #7955

  • 使用数据库中的多个架构和域时,PostgreSQL 适配器正确获取默认值。修复 #7914

    Arturo Pie

  • 修复加载集合关联时弃用通知的问题,该关联从其他表中选择列,如果先前使用该关联构建了新记录。

    Ernie Miller

  • postgres 适配器现在支持大写字母的表。修复 #5920

    Yves Senn

  • CollectionAssociation#count 返回 0,而不用查询未持久化的父记录。

    之前

    person.pets.count
    # SELECT COUNT(*) FROM "pets" WHERE "pets"."person_id" IS NULL
    # => 0
    

    之后

    person.pets.count
    # fires without sql query
    # => 0
    

    Francesco Rodriguez

  • 修复 reset_countershas_many :through 关联中崩溃的问题。修复 #7822。

    lulalala

  • ConnectionPool 识别 checkout_timeout 规格键优先于旧 wait_timeout 规格键,可用于避免与 mysql2 使用 wait_timeout 发生冲突。关闭 #7684。

    jrochkind

  • 将 field_changed? 重命名为 _field_changed?,以便用户可以创建名为 field 的字段

    Akira MatsudaSteve Klabnik 回授

  • 使用未保存的模型中的 has_many :through 关联对 collection=[] 时,修复通过关联模型的创建。修复 #7661。

    Ernie Miller

  • 仅解释正常的 CRUD sql(选择/更新/插入/删除)。修复解释无法解释的 sql 的问题。关闭 #7544 #6458。

    kennyj

  • 回授测试覆盖率以确保 PostgreSQL 自动重新连接功能保持健康。

    Steve Jorgensen

  • 在 mysql/mysql2 中执行 databases.rake 时,使用 config['encoding'] 替代 config['charset']。database.yml 的正确选项是 'encoding'。

    kennyj

  • 修复 ConnectionAdapters::Column.type_cast_code 整数转换,以便总是将值转换为整数 #to_i。修复 #7509。

    Thiago Pradi

  • 修复时间列类型转换的无效时间字符串值,以正确返回 nil。

    Adam Meehan

  • 修复在使用已配置 inheritance_column 时出现 becomes 问题。

    Yves Senn

  • 修复 reset_counters 在存在多个与相同外键关联的 belongs_to 关联并且其中一个具有计数缓存在时的情况。修复 #5200。

    Dave Desrochers

  • 在脏追踪中比较时间戳属性时对 usec 进行四舍五入。修复 #6975。

    kennyj

  • 对 has_many 关联的第一个和最后一个子项使用反向父项。

    Ravil Bayramgalin

  • 修复 Column.microseconds 和 Column.fast_string_to_date 以避免将时间戳秒转换为浮点,因为它偶尔会导致微秒精度的计时出现不准确。修复 #7352。

    Ari Pollak

  • 修复 increment!decrement!toggle! 这些会跳过回调的函数。修复 #7306。

    Rafael Mendonça França

  • 修复 AR#create 以在引发 AR::RecordInvalid 时返回未保存记录。修复 #3217。

    Dave Yeu

  • 在使用 nil 或相等值分配 has_one 关联时移除多余的事务。修复 #7191。

    kennyj

  • 允许存储与空列一起使用。修复 #4840。

    Jeremy Walker

  • 从 postgresql 适配器的系统查询中移除准备语句。修复 #5872。

    Ivan Evtuhovich

  • 确保 :environment 任务在 db:schema:loaddb:structure:load 执行之前执行。修复 #4772。

    Seamus Abshere

Active Resource

  • 无更改

Active Support

  • 添加 logger.push_tags 和 .pop_tags 来补充 logger.tagged

    class Job
      def before
        Rails.logger.push_tags :jobs, self.class.name
      end
    
      def after
        Rails.logger.pop_tags 2
      end
    end
    

    Jeremy Kemper

  • 向 ActiveSupport::TimeWithZone#strftime 添加对 %:z 和 %::z 格式字符串的支持。[修复 #6962] kennyj

Railties

  • 还原 “尊重子项路径过滤器设置” 这将还原 commit 53778ec2d716f860646fd43957fd53c8db4da2fe。关闭 #8146

    Santiago Pastorino

  • 不再热加载 app/assets 和 app/views Elia Schito

  • 在 ruby_version_check.rb 中更新受支持的 Ruby 版本错误消息 Lihan Li

SHA-1

  • 0b460ffdac39cee7f3321bb430e212c2a42b5dec actionmailer-3.2.9.gem
  • 8c3657514132ae21d2da2abcad896d8f37c4f1ca actionpack-3.2.9.gem
  • 3e95d49bca396663d0cc4e94056f2d4e20923200 activemodel-3.2.9.gem
  • 92f9f3aad6ae63786cc916baedda46801b423aab activerecord-3.2.9.gem
  • fff833587b753eb0d17e7102f635e769138113f5 activeresource-3.2.9.gem
  • 0989647ca08bb01bf3ab9490ea9b623f4deb065d activesupport-3.2.9.gem
  • b2172077c391721bc008723fec92c986c6881e62 rails-3.2.9.gem
  • bd3e0418546e142cf6afb7fc0e0240545ec96e5c railties-3.2.9.gem

你可以在 此处 找到 v3.2.8 和 v3.2.9 之间的更改列表。

感谢每一位!