星期三,2013 年 2 月 27 日

[公告] Rails 3.2.13.rc1 已发布!

由 steveklabnik 发布

各位,大家好!我激动地宣布Rails 3.2.13.rc1 已经发布!如果未发现任何回归,我将在两周后即 2013 年 3 月 13 日发布 3.2.13 正式版。如果发现任何回归,请在 GitHub 上开一个工单以便我在正式版发布前对其修复。

这是一个修复错误的版本,包含 287 次提交。其中一项重大的修复从技术上来看算是一个新功能:对 Ruby 2.0 提供支持。感谢 Prem Sichanugrist 为此付出的努力!请在 Ruby 2.0 上试用一下你的应用,并告诉我结果如何。

3.2.12 后的变更

Action Mailer

无变更。

Action Pack

  • 在使用简写语法时,仅根据匹配路径确定控制器#操作。之前使用的是完整路径,这导致了嵌套(作用域和命名空间)问题。修复了 #7554。反向移植了 #9361。

    示例

    # this will route to questions#new
    scope ':locale' do
      get 'questions/new'
    end
    

    Yves Senn

  • 使用 render :stream => true 修复了使用 assert_template 的问题。修复 #1743。反向移植了 #5288。

    Sergey Nartimov

  • 热忱填充 HTTP 方法查找缓存,从而让本地项目的变化不再干扰下划线方法的使用(并且我们不需要锁定)

    Aditya Sanghi

  • BestStandardsSupport 不再对每个请求重复 X-UA-Compatible 值,防止标头大小爆满。

    Edward Anderson

  • 修复了对非对象 JSON 内容的 JSON 参数解析回归。

    Dylan Smith

  • 使用 javascript_include_tag 在具有非标准扩展名的文件中时防止不必要的资产编译。

    Noah Silas

  • 修复了 Sprockets 中可能出现重复资产的问题。

    Jeremy Jackson

  • rack 依赖项提升到 1.4.3,消除 Rack::File 标头弃用警告。

    Sam Ruby + Carlos Antonio da Silva

  • 使用 trailing_slash: true 时,不再在 root_url 后附加第二个斜杠

    修复了 #8700。反向移植了 #8701。

    示例:# 在 root_url 之前 # => http://test.host//

    # after
    root_url # => http://test.host/
    

    Yves Senn

  • 修复了 content_tag_for 的一个错误,阻止它在没有块的情况下工作。

    Jasl

  • 在重新加载路由时清除 URL 帮助器方法,通过明确移除这些方法而不是仅清除模块来实现,因为后者无法正常工作并可能成为内存泄漏的根源。

    Andrew White

  • 修复了 ActionDispatch::Request#raw_post 中导致 env['rack.input'] 被读取但未倒回的问题。

    Matt Venables

  • 调用 render :partial 时如果 :layout 参数无效,则会出现更有描述性的错误消息。

    修复了 #8376。

    render :partial => 'partial', :layout => true
    # results in ActionView::MissingTemplate: Missing partial /true
    

    Yves Senn

  • 接受符号作 #send_data 的 :disposition 值。[反向导入 #8329] Elia Schito

  • distance_of_time_in_words 添加 i18n 范围。[反向导入 #7997] Steve Klabnik

  • 修复了 url_for 更改 :controller 字符串选项产生的副作用。[反向导入 #6003] 之前

    controller = '/projects'
    url_for :controller => controller, :action => 'status'
    
    puts controller #=> 'projects'
    

    之后

    puts controller #=> '/projects'
    

    Nikita Beloglazov + Andrew White

  • 引入 ActionView::Template::Handlers::ERB.escape_whitelist。在默认情况下,此列表中一些 MIME 类型中的模板文本不受 HTML 转义。它避免了 Jack & Joe 在白名单所列的 MIME 类型中渲染为 Jack & Joe。默认白名单包含 text/plain。修复 #7976 [反向导入 #8235]

    Joost Baaij

  • BestStandardsSupport 中间件现在将它的 X-UA-Compatible 值附加到应用的返回值,如果存在的话。修复 #8086 [反向导入 #8093]

    Nikita Afanasenko

  • Rails.application.default_url_options[:trailing_slash] = true 设置时,防止引擎 URL 产生双斜杠。修复 #7842

    Yves Senn

  • 设置 :multiple => true:index 时修复输入名称。

    之前

    check_box("post", "comment_ids", { :multiple => true, :index => "foo" }, 1)
    #=> <input name=\"post[foo][comment_ids]\" type=\"hidden\" value=\"0\" /><input id=\"post_foo_comment_ids_1\" name=\"post[foo][comment_ids]\" type=\"checkbox\" value=\"1\" />
    

    之后

    check_box("post", "comment_ids", { :multiple => true, :index => "foo" }, 1)
    #=> <input name=\"post[foo][comment_ids][]\" type=\"hidden\" value=\"0\" /><input id=\"post_foo_comment_ids_1\" name=\"post[foo][comment_ids][]\" type=\"checkbox\" value=\"1\" />
    

    修复 #8108

    Daniel Fox, Grant Hutchins & Trace Wax

动态模型

  • 在序列化过程中指定单数关联的类型 Steve Klabnik

动态记录

  • 回退 921a296a3390192a71abeec6d9a035cc6d1865c8,“引用与字符串列比较的数字值”。这造成了一些回归。

    Steve Klabnik

  • 修复在 ActiveRecord::Base#dup 上作用默认范围覆盖属性的问题。

    Hiroshige UMINO

  • 修复了使用组合对象覆盖动态记录读取器方法并使用该属性作为 uniqueness_of 验证范围的问题。反向导入 #7072。

    Peter Brown

  • 复制或更改表时,SQLite 现在保留自定义主键。修复 #9367。反向导入 #2312。

    Sean Scally + Yves Senn

  • 带条件预加载 has_many :through 关联将不再缓存 :through 关联。这将避免缓存无效的子集。修复 #8423。反向导入 #9252。

    示例

    class User
      has_many :posts
      has_many :recent_comments, -> { where('created_at > ?', 1.week.ago) }, :through => :posts
    end
    
    a_user = User.includes(:recent_comments).first
    
    # this is preloaded
    a_user.recent_comments
    
    # fetching the recent_comments through the posts association won't preload it.
    a_user.posts
    

    Yves Senn

  • 修复了处理不干净的时间感知属性时出现的问题

    先前,当启用time_zone_aware_attributes时,在修改日期时间或时间戳属性后再将其更改回原始值后,changed_attributes仍将该属性跟踪为已更改。这导致[attribute]_changed?changed?方法错误地返回 true。

    示例

    in_time_zone 'Paris' do
      order = Order.new
      original_time = Time.local(2012, 10, 10)
      order.shipped_at = original_time
      order.save
      order.changed? # => false
    
      # changing value
      order.shipped_at = Time.local(2013, 1, 1)
      order.changed? # => true
    
      # reverting to original value
      order.shipped_at = original_time
      order.changed? # => false, used to return true
    end
    

    #9073 的回传已修复 #8898

    Lilibeth De La Cruz

  • 修复替换has_many :through关联时未更新计数器缓存列。回传 #8400。修复 #7630。

    Matthew Robertson

  • 在对有默认值的列调用 destructive 方法时不更新column_defaults。回传 c517602。修复 #6115。

    Piotr Sarnacki + Aleksey Magusev + Alan Daud

  • 当将#count#uniq结合使用时,我们执行count(:distinct => true)。修复 #6865。

    示例

    relation.uniq.count # => SELECT COUNT(DISTINCT *)

    Yves Senn + Kaspar Schiess

  • 修复ActiveRecord::Relation#pluck以在列或表是保留字时使用。回传 #7536。修复 #8968。

    Ian Lesperance + Yves Senn + Kaspar Schiess

  • 对于不支持 slow 查询的数据库适配器,不要运行 explain。回传 #6197。

    Blake Smith

  • 在 dirty 跟踪中比较 timestamp 属性时回退循环使用微秒。修复 #8460。

    Andrew White

  • 当对未保存模型的has_many :through关联调用collection=[]时,回退创建 through 关联模型。修复 #7661、#8269。

    Ernie Miller

  • 对使用数组作用域调用的new调用to_i时修复未定义方法;当将整数列设置为 NaN 时,修复 FloatDomainError。修复 #8718、#8734、#8757。

    Jason Stirk + Tristan Harward

  • 序列化属性可在整数列中序列化。修复 #8575。

    Rafael Mendonça França

  • 使用 sqlite3 且 alter_table 时,保留索引名称。修复 #3489。回传 #8522。

    Yves Senn

  • 识别放在包含数字和“rb”的目录中的迁移。修复 #8492。回传 #8500。

    Yves Senn

  • 添加ActiveRecord::Base.cache_timestamp_format类属性以控制缓存键中时间戳值格式。这允许用户提高缓存键的精度。修复 #8195。

    Rafael Mendonça França

  • 添加:nsec日期格式。这可用于提升缓存键的精度。请注意,此格式仅适用于 Ruby 1.9,而 Ruby 1.8 将会彻底忽略此格式。

    Jamie Gaskins

  • 取消update_column(s)查询的作用域以忽略默认作用域。

    default_scope 应用于带有where子句的类时,使用 update_column(s) 可能生成无法正确更新记录的查询,这是因为来自 default_scope 的 where 子句应用于更新查询。

    class User < ActiveRecord::Base
      default_scope where(active: true)
    end
    
    user = User.first
    user.active = false
    user.save!
    
    user.update_column(:active, true) # => false
    

    在这种情况下,我们希望跳过 default_scope 子句,仅仅根据主密钥更新记录。使用该更改

    user.update_column(:active, true) # => true
    

    移植 8436 修复。

    Carlos Antonio da Silva

  • 在具有多个模式时,修复 PostgreSQL 适配器中 primary_key 方法的性能问题。使用 pg_constraint 表,而不是常规情况下具有许多记录的 pg_depend 表。修复 8414

    kennyj

  • 在热切加载时,不要实例化中间 Active Record 对象。这些记录导致 after_find 运行的频率超出预期。修复 3313,移植 8403

    Yves Senn

  • 修复 pluck 以配合连接工作。移植 4942。

    Carlos Antonio da Silva

  • 修复非英语环境中 translate_exception 方法中的问题。移植 6397。

    kennyj

  • 修复 TimeZoneConversion 使用 nil 和空白 datetime 属性的脏属性检查。将 nil datetime 设置为空白字符串不应导致标记更改。修复 8310,移植 8311。

    Alisdair McDiarmid

  • 使用 build 时,防止批量赋值给多态关联的 type 列。修复 8265,移植 8291。

    Yves Senn

  • 在 Postgresql 上运行迁移时,binarytext 列的 :limit 选项静默删除。之前,这些迁移导致 sql 异常,因为 Postgresql 不支持这些类型的限制。

    Victor Costan

  • #pluck 可用于带有 select 子句的关系。修复 7551,移植 8176。

    示例

    Topic.select([:approved, :id]).order(:id).pluck(:id)
    

    Yves Senn

  • 使用 nil? 而不是 blank? 来检查是否应该抛出 RecordNotFound。修复 7238。

    Nikita Afanasenko

  • 修复在销毁启用了乐观锁定的模型的对象时,从 HABTM 连接表中删除记录。修复 5332。

    Nick Rogers

  • 在使用 ENV[“DATABASE_URL”] 时,使用 query cache/uncache。修复 6951,移植 8074。

    kennyj

  • 在构建 has_one 关联时,不要创建无用的数据库事务。

    示例

    User.has_one :profile
    User.new.build_profile
    

    移植 8154。

    Bogdan Gusiev

  • AR::Base#attributes_before_type_cast 现为序列化属性返回未序列化的值。

    Nikita Afanasenko

  • 修复在子类中覆盖 accepts_nested_attributes 时抛出 NameError 的问题。

    之前

    class Shared::Person < ActiveRecord::Base
      has_one :address
    
      accepts_nested_attributes :address, :reject_if => :all_blank
    end
    
    class Person < Shared::Person
      accepts_nested_attributes :address
    end
    
    Person
    #=> NameError: method `address_attributes=' not defined in Person
    

    之后

    Person
    #=> Person(id: integer, ...)
    

    修复 8131。

    Gabriel Sobrinho,Ricardo Henrique

Active Resource

无变更。

Active Support

  • 修复与 DateTime::Infinity 对象进行的 DateTime 比较。

    Dan Kubb

  • 移除 ActiveSupport::JSON.encode 中的代理统一字符编码。对于基本多语言平面的 Unicode 字符,编码模式被破坏;由于 JSON 被假定为 UTF-8,并且我们已经强制将编码设为 UTF-8,因此可直接传递未编码字符。

    布雷特·卡特

  • 修复 mocha v0.13.0 的兼容性。詹姆斯·米德

  • #as_json 在对散列进行编码时将选项分离。[Backport #8185] 修复 #8182

    Yves Senn

  • 处理 atomic.rb 可能由于其 chown 和 chmod 调用而触发的可能“拒绝访问”错误。[Backport #8027]

    丹尼尔·斯吕斯特

Railties

无变更。

完整列表

若要查看完整变更列表,请在 GitHub 上查看所有提交

SHA-1

如果您想验证您的 gem 与我上传的是否相同,请使用这些 SHA-1 哈希值

  • 6a33c2d10abb5512499addb675df658e179f2e79 actionmailer-3.2.13.rc1.gem
  • 11d8303470698c5b0ac68f187a15093c07383c89 actionpack-3.2.13.rc1.gem
  • a72dafd8b1e3372cc4dda9015b93bf5509b25baa activemodel-3.2.13.rc1.gem
  • 3c6463ab11658b5ab0fe6a4ad06eb52968ef4492 activerecord-3.2.13.rc1.gem
  • 06cec200b95dc1f64614cd03432e9ab06742a865 activeresource-3.2.13.rc1.gem
  • 5ff59cacae5295baf30a6fb8fb656037f22af3c2 activesupport-3.2.13.rc1.gem
  • facf4549445922d9dc2a836283ae928fa52df4f8 rails-3.2.13.rc1.gem
  • 55e44f621efbf531d9ccade6d27259f7dabae167 railties-3.2.13.rc1.gem

<3<3<3