2011 年 10 月 7 日,星期五

Rails 3.1.1 已发布!

由 spastorino 发布

大家好,

Rails 3.1.1 已发布。此版本至少需要 sass-rails 3.1.4

变更

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 将导致未加载扩展便运行 dumper,例如中包含的扩展 foreigner 和 spatial_adapter。

    这将逆转此处做出的更改:https://github.com/rails/rails/commit/5df72a238e9fcb18daf6ab6e6dc9051c9106d7bb#L0L324

    在此我假定需要分别调用 :load_config 和 :environment,因为在文件中的其他位置是如此处理数据库操作的,如果不是,则替代方法是返回到“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]

  • 重新启动 assets:precompile 任务,使用 (Rake.)ruby 替代 Kernel.exec,因此可以在 Windows 上使用 [cablegram]

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

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

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

    插件开发人员需要特殊处理其初始化程序,通过添加 :group => :assets 以便在资产组中运行。[José Valim]

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

  • FileStore key_file_path 限制文件名长度为 255 个字符。[phuibonhoa]

  • 修复 Hash#to_query 边缘案例,修复带有 html_safe 字符串的情况。[brainopia]

  • 允许资产标签帮助程序方法接受 :digest => false 选项,以便完全避免生成摘要。这对于从静态 HTML 文件或从电子邮件中链接资产很有用,因为用户可能查看带有较旧资产的较旧 HTML 电子邮件。[Santiago Pastorino]

  • 如果 config.assets.compile 为 false,请不要将 Sprockets 服务器安装在 config.assets.prefix 上。[Mark J. Titorenko]

  • 当 Sprockets 无法使用控制器时(例如使用 asset_path 的 Sass 文件),在资产中设置相对 URL 根目录。修复 #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 以处理多部分和非多部分电子邮件,因为由于新邮件 gem 中的更改,该方法在 Rails 3.x 中停止正常工作。

主动模型

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

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

    参见 GH #2687。[Guillermo Iguaran]

活动记录

  • 添加对 preload_associations 方法的弃用。修复 #3022。

    [Jon Leighton]

  • 在加载使用 set_primary_key 的模型时无需数据库连接。GH #2807。

    [Jon Leighton]

  • 修复 select() 与 habtm 关联一起使用的情况,例如 Person.friends.select(:name)。GH #3030 和 #2923。

    [Hendy Tanata]

  • 修复目标上带有自定义主键的 belong_to polymorphic。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,但您可以在数据库配置中通过更改“statement_limit”来进行调整。

  • 修复在默认范围内使用“preload”、“joins”或“eager_load”,以及在嵌套通过关联中包含默认范围模型时出现的冲突(GH #2834)。[Jon Leighton]

  • 确保在 HasManyAssociation#inverse_updates_counter_cache? 中不将字符串与符号进行比较。修复 GH #2755,其中计数器缓存在理论上应该减小的两倍。

    [Jon Leighton]

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

  • 修复 find_in_batches 方法,以不包含来自 default_scope 的顺序。见 GH #2832 [Arun Agrawal]

  • 不要计算抽象类的表名。修复抽象类中设置主键的问题。见 GH #2791。[Akira Matsuda]

  • 代理 Psych 错误以及较差的 yaml 格式化。修复 GH #2645 和 GH #2731

  • 对方法 #last 和 #first 使用 LIMIT 单词。修复 GH #2783 [Damien Mathieu]

活动资源

  • 无变更

活动支持

  • ruby193:String#prepend 也存在不安全问题 [Akira Matsuda]

  • 修复明显对 Time 子类的 Time.=== 的破坏 [jeremyevans]

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

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

  • 现在使用 Array#extract_options! 时将 ActiveSupport::OrderedHash 标记为可提取 [Prem Sichanugrist]

钢轨

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

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

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

    插件开发者需要特殊处理他们的初始化程序,这些初始化程序旨在通过添加 :group => :assets 在资产组中运行。

SHA-1

  • 9337cff7772da034b0b34b73b85cf249f1a70f52 actionmailer-3.1.1.gem
  • 7bb1b8d096a6ff1ff46dcfb778bf86a5daca1b0d actionpack-3.1.1.gem
  • d5dc71e1a9a0e20d819f4dff27ff0697e99a7f64 activemodel-3.1.1.gem
  • 7245632cb3b38612628304c1e244855d0053f7be activerecord-3.1.1.gem
  • 6d09800202c2747e84249b8646f0fd480ed4924f activeresource-3.1.1.gem
  • 66df2fd144aab22f52819fd489e33a976d68a46b activesupport-3.1.1.gem
  • 6a35a49948bbd9f461839a1a271def90b23a851a rails-3.1.1.gem
  • 6979ef891bd03fb639b979af9fdc56781f9358d9 railties-3.1.1.gem

你可以在 github 上找到变更的详尽列表。以及 标有 v3.1.1 的已关闭问题

感谢大家!