星期四,2011 年 10 月 6 日

[ANN] Rails 3.1.1.rc3

发布者 spastorino

各位好,

Rails 3.1.1.rc3 已发布。请大家试用一下,这给我们提供了机会修复您可能遇到的回归问题并发布完美的 3.1.1 稳定版。如果不存在回归问题,我将在 10 月 7 日发布 3.1.1 最终版。如果您发现了任何回归问题,请通过电子邮件、twitter 或 github 尽快与我联系。

更改

Action Mailer

  • 无更改

Action Pack

  • stylesheet_link_tag(‘/stylesheets/application’) 等帮助程序不会再引发 Sprockets::FileOutsidePaths 异常 [Santiago Pastorino]

  • 确保尊重 default_asset_host_protocol,关闭 #2980。[José Valim]

    更改 rake db:schema:dump 以运行 :environment 和 :load_config,因为单独运行 :load_config 将导致在不包括外国人空间适配器中包含的此类扩展的情况下运行倾卸程序。

    将此处的更改撤消:https://github.com/rails/rails/commit/5df72a238e9fcb18daf6ab6e6dc9051c9106d7bb#L0L324

    我在这里假设必须单独 invocation :load_config 和 :environment,因为文件中的其他 db 操作也是如此,如果没有备用方法,则回到 “task :dump => :environment do”。

    [Ben Woosley]

  • 更新至 rack-cache 1.1。

    1.1 之前的版本在 config.action_controller.perform_caching 为 true 时,会删除 If-Modified-Since 和 If-Not-Modified 标头。这带来两个问题

    • 开发和生产环境之间的行为不一致
    • 破坏了使用这些标头的应用程序

    [Brendan Ribera]

  • 确保 assets:precompile 任务的增强仅运行一次 [Sam Pohlenz]

  • TestCase 应该遵循 view_assigns API,而不是自行提取变量。[José Valim]

  • 如果资产管道已打开,javascript_path 和 stylesheet_path 现在引用 /assets。[Santiago Pastorino]

  • button_to 支持表单选项。现在您可以传递例如 ‘data-type’ => ‘json’。[ihower]

  • 如果打开了资产管道,image_path 和 image_tag 应该使用 /assets。关闭 #3126 [Santiago Pastorino 和 christos]

  • 在 rake assets:precompile 运行期间避免使用现有的预编译资产。关闭 #3119 [Guillermo Iguaran]

  • 也复制资产到非摘要文件。[Santiago Pastorino]

  • config.digest = false 优先于 manifest.yml 资产摘要的存在 [christos]

  • stylesheet_link_tag 方法的转义选项 [Alexey Vakhov]

  • 使用 (Rake.)ruby 而不是 Kernel.exec 重新启动 assets:precompile 任务,使其可在 Windows 中运行 [cablegram]

  • 传递给处理的环境变量不应该在处理方法中进行修改。[Santiago Pastorino]

  • rake assets:precompile 加载应用程序,但不会初始化它。

    对于应用程序开发者来说,这意味着在 config/initializers/* 中添加的配置不会执行。

    插件开发者需要对初始化程序进行特殊处理,这些初始化程序旨在通过添加 :group => :assets 在 assets 组中运行。[José Valim]

  • Sprockets 对 asset_path 使用 config.assets.prefix [asee]

  • FileStore key_file_path 正确地将文件名限制为 255 个字符。[phuibonhoa]

  • 修复了具有 html_safe 字符串的 Hash#to_query 边缘情况。[brainopia]

  • 允许资产标记帮助器方法接受 :digest => false 选项,以完全避免摘要生成。这对于从静态 html 文件或电子邮件中链接资产非常有用,而用户可能会查看带有旧资产的较旧 html 电子邮件。[Santiago Pastorino]

  • 如果 config.assets.compile 为 false,请不要在 config.assets.prefix 中挂载 Sprockets 服务器。[Mark J. Titorenko]

  • 在 Sprockets 中将相对 url 根设置在资产中(例如使用 asset_path 的 Sass 文件)。修复了 #2435 [Guillermo Iguaran]

  • 修复基本身份验证凭据生成而不会产生换行符。GH #2882

  • 当 config.assets.digest 和 config.assets.compile 为 false,并且请求的资产未预编译时,修复了资产管道的行为。在请求的资产以前被编译且忽略了 config.assets.compile 标志为 false 的情况下。[Guillermo Iguaran]

  • CookieJar 现在是可枚举的。修复了 #2795

  • 在 rake assets:precompile 编译某些 .erb 文件时修复了抛出的 AssetNotPrecompiled 错误。请参阅 GH #2763 #2765 #2805 [Guillermo Iguaran]

  • 在更改默认资产前缀时,将清单正确放置在资产路径中。修复了 #2776 [Guillermo Iguaran]

  • 修复 stylesheet_link_tag 和 javascript_include_tag 以尊重用户在调试开启时传递的其他选项。[Guillermo Iguaran]

  • 修复 ActiveRecord#exists? 在传递空值时

  • 修复 assert_select_email 以处理多部分和非多部分电子邮件,因为该方法在 Rails 3.x 中由于新邮件 gem 的更改而停止正常工作。

Active Model

  • 删除对 bcrypt-ruby 的硬依赖性,以避免 ActiveModel 依赖于二进制库。如果您想使用 ActiveModel::SecurePassword,您必须将 gem 显式添加到 Gemfile 中

    gem ‘bcrypt-ruby’, ‘~> 3.0.0’

    请参见 GH #2687。[Guillermo Iguaran]

Active Record

  • 为 preload_associations 方法添加了弃用。修复了 #3022。

    [Jon Leighton]

  • 加载使用 set_primary_key 的模型时不需要 DB 连接。GH #2807。

    [Jon Leighton]

  • 修复使用带有 habtm 关联的 select(),例如 Person.friends.select(:name)。GH #3030 和 #2923。

    [Hendy Tanata]

  • 修复带有目标上自定义主键的多态关联 belongs_to。GH #3104。

    [Jon Leighton]

  • CollectionProxy#replace 应更改数据库记录,而不仅仅是改变数组。修复了 #3020。

    [Jon Leighton]

  • mysql 和 sqlite 中的 LRU 缓存现在是按进程缓存。

    • lib/active_record/connection_adapters/mysql_adapter.rb:LRU 缓存键是按进程 id。
    • lib/active_record/connection_adapters/sqlite_adapter.rb:同上
  • 数据库适配器使用语句池来限制数据库上开放的已准备语句的数量。限制默认为 1000,但可以通过在你的 **database config** 中更改 “**statement_limit**” 来进行调整。

  • 修复默认范围中使用 “preload”、“joins” 或 “eager_load” 与嵌套通过关联中包含默认作用域模型之间的冲突。([Jon Leighton)](GH #2834)

  • 确保我们不在 HasManyAssociation#inverse_updates_counter_cache?中将字符串与符号进行比较。修复 GH #2755 中的错误,该错误会导致计数器缓存被减少到的次数是其应有次数的两倍。

    [Jon Leighton]

  • 当 belongs_to 的外键为 nil 时,不要向数据库发送任何查询。修复 GH #2828。([Georg Friedrich])

  • 修复 find_in_batches 方法,使其不包含来自 default_scope 的 order。参见 GH #2832 [Arun Agrawal]

  • 不要为抽象类计算表名。修复在抽象类中设置主键时出现的问题。参见 GH #2791。([Akira Matsuda])

  • 代理带有糟糕的 yaml 格式化错误的 Psych 错误。修复 GH #2645 和 GH #2731

  • 在方法 #last 和 #first 中使用 LIMIT 字。修复 GH #2783 [Damien Mathieu]

Active Resource

  • 无更改

ActiveSupport

  • ruby193: String#prepend 也不安全。([Akira Matsuda])

  • 修复因 Time 子类而导致的 Time.=== 的明显故障。([jeremyevans])

  • 添加修复,使文件存储在缓存目录尚不存在时不引发异常。如果在缓存中保存任何内容之前调用 delete_matched,就会出现这种情况。([Philippe Huibonhoa])

  • 修复时区查找每次都会需要 tzinfo 的性能问题。([Tim Lucas])

  • 在使用 Array#extract_options! 时,ActiveSupport::OrderedHash 现在标记为可提取的。([Prem Sichanugrist])

Railties

  • 将 jquery-rails 添加到插件的 Gemfile,测试/虚拟应用程序需要它。关闭 #3091。([Santiago Pastorino])

  • rake assets:precompile 加载应用程序,但不会初始化它。

    对于应用程序开发者来说,这意味着在 config/initializers/* 中添加的配置不会执行。

    插件开发人员需要特殊处理其初始化程序,这些初始化程序应通过添加 :group => :assets 运行在资产组中。

你可以在 github 上找到更改的完整列表。以及 标记为 v3.1.1 的已关闭问题。你还可以了解 v3.1.1.rc2 和 v3.1.1.rc3 之间的新增功能。

你还可以查看我们 尚未关闭的问题

感谢大家!