各位,
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 以获取此安全修复程序。
动作邮件
在未调用 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
resource
和 resources
不会修改传入的选项哈希 修复 #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.js
。Prem 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_columns
和 update_column
不允许更新主键列的错误。
Henrik Nyh
解码数据库连接 URL 上的 URI 编码属性。
Shawn Veader
修复 AR#dup 以使 dup’ed 对象中的验证错误无效。此前,原始对象和 dup’ed 对象共享相同的错误。
同步围绕从保留的连接散列中删除操作。修复 #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_counters
在 has_many :through
关联中崩溃的问题。修复 #7822。
lulalala
ConnectionPool 识别 checkout_timeout 规格键优先于旧 wait_timeout 规格键,可用于避免与 mysql2 使用 wait_timeout 发生冲突。关闭 #7684。
jrochkind
将 field_changed? 重命名为 _field_changed?,以便用户可以创建名为 field 的字段
Akira Matsuda,Steve 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:load
或 db: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
你可以在 此处 找到 v3.2.8 和 v3.2.9 之间的更改列表。
感谢每一位!