各位,大家好!我激动地宣布Rails 3.2.13.rc1 已经发布!如果未发现任何回归,我将在两周后即 2013 年 3 月 13 日发布 3.2.13 正式版。如果发现任何回归,请在 GitHub 上开一个工单以便我在正式版发布前对其修复。
这是一个修复错误的版本,包含 287 次提交。其中一项重大的修复从技术上来看算是一个新功能:对 Ruby 2.0 提供支持。感谢 Prem Sichanugrist 为此付出的努力!请在 Ruby 2.0 上试用一下你的应用,并告诉我结果如何。
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
动态模型
动态记录
回退 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 上运行迁移时,binary
和 text
列的 :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 上查看所有提交。
如果您想验证您的 gem 与我上传的是否相同,请使用这些 SHA-1 哈希值
6a33c2d10abb5512499addb675df658e179f2e79
actionmailer-3.2.13.rc1.gem11d8303470698c5b0ac68f187a15093c07383c89
actionpack-3.2.13.rc1.gema72dafd8b1e3372cc4dda9015b93bf5509b25baa
activemodel-3.2.13.rc1.gem3c6463ab11658b5ab0fe6a4ad06eb52968ef4492
activerecord-3.2.13.rc1.gem06cec200b95dc1f64614cd03432e9ab06742a865
activeresource-3.2.13.rc1.gem5ff59cacae5295baf30a6fb8fb656037f22af3c2
activesupport-3.2.13.rc1.gemfacf4549445922d9dc2a836283ae928fa52df4f8
rails-3.2.13.rc1.gem55e44f621efbf531d9ccade6d27259f7dabae167
railties-3.2.13.rc1.gem<3<3<3