{"id":5915,"date":"2025-09-17T21:36:07","date_gmt":"2025-09-17T21:36:07","guid":{"rendered":"https:\/\/pokecon.jp\/job\/?p=5915"},"modified":"2025-09-17T21:36:07","modified_gmt":"2025-09-17T21:36:07","slug":"rails-8-1-0-beta1%e3%81%aechangelog-active-support%ef%bc%88%e5%85%a8%e9%a0%85%e7%9b%ae%e3%83%aa%e3%83%b3%e3%82%af%e4%bb%98%e3%81%8d%ef%bc%89%ef%bd%9ctechracho-by-bps%e6%a0%aa%e5%bc%8f%e4%bc%9a","status":"publish","type":"post","link":"https:\/\/pokecon.jp\/job\/5915\/","title":{"rendered":"Rails 8.1.0.beta1\u306eChangelog: Active Support\uff08\u5168\u9805\u76ee\u30ea\u30f3\u30af\u4ed8\u304d\uff09\uff5cTechRacho by BPS\u682a\u5f0f\u4f1a\u793e"},"content":{"rendered":"\n<\/p>\n<div id=\"js-single-body\">\n<p>\u53c2\u8003: <a target=\"_blank\" href=\"https:\/\/github.com\/rails\/rails\/releases\/tag\/v8.1.0.beta1\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external noopener\" class=\"wpel-icon-right\">Release 8.1.0.beta1 \u00b7 rails\/rails<span class=\"wpel-icon wpel-image wpel-icon-19\"\/><\/a><br \/>\u53c2\u8003: \u30b3\u30df\u30c3\u30c8\u30ea\u30b9\u30c8: <a target=\"_blank\" href=\"https:\/\/github.com\/rails\/rails\/compare\/v8.0.2.1...v8.1.0.beta1\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external noopener\" class=\"wpel-icon-right\">Comparing v8.0.2.1&#8230;v8.1.0.beta1 \u00b7 rails\/rails<span class=\"wpel-icon wpel-image wpel-icon-19\"\/><\/a><\/p>\n<h3><a target=\"_blank\" id=\"as01\" href=\"#as01\">\ud83d\udd17<\/a> <a target=\"_blank\" href=\"https:\/\/github.com\/rails\/rails\/pull\/55580\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external noopener\" class=\"wpel-icon-right\">Allow getter and setter for <code>options[:namespace]<\/code> in <code>ActiveSupport::Cache::Store<\/code> by byroot \u00b7 Pull Request #55580 \u00b7 rails\/rails<span class=\"wpel-icon wpel-image wpel-icon-19\"\/><\/a><\/h3>\n<blockquote>\n<p><code>ActiveSupport::Cache::Store<\/code>\u306b<code>#namespace=<\/code>\u3068<code>#namespace<\/code>.\u3092\u8ffd\u52a0\u3002\u30d1\u30e9\u30ec\u30eb\u30c6\u30b9\u30c8\u306a\u3069\u3067\u72b6\u6cc1\u306b\u3088\u3063\u3066\u306f<code>Store#clear<\/code>\u306e\u4ee3\u308f\u308a\u306b\u5229\u7528\u53ef\u80fd\u3002<\/p>\n<p><em>Nick Schwaderer<\/em><br \/><cite>\u540cChangelog\u3088\u308a<\/cite><\/p>\n<\/blockquote>\n<h3><a target=\"_blank\" id=\"as02\" href=\"#as02\">\ud83d\udd17<\/a> <a target=\"_blank\" href=\"https:\/\/github.com\/rails\/rails\/pull\/55565\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external noopener\" class=\"wpel-icon-right\">Creates <code>parallel_worker_id<\/code> helper for running parallel tests by Schwad \u00b7 Pull Request #55565 \u00b7 rails\/rails<span class=\"wpel-icon wpel-image wpel-icon-19\"\/><\/a><\/h3>\n<blockquote>\n<p>\u30d1\u30e9\u30ec\u30eb\u30c6\u30b9\u30c8\u5b9f\u884c\u7528\u306e<code>parallel_worker_id<\/code>\u3092\u4f5c\u6210\u3002\u30c6\u30b9\u30c8\u4e2d\u306b\u3069\u306e\u30ef\u30fc\u30ab\u30fc\u304c\u73fe\u5728\u5b9f\u884c\u4e2d\u304b\u3092\u77e5\u308b\u3053\u3068\u304c\u53ef\u80fd\u306b\u306a\u308b\u3002<\/p>\n<p><em>Nick Schwaderer<\/em><\/p>\n<p><cite>\u540cChangelog\u3088\u308a<\/cite><\/p>\n<\/blockquote>\n<h3><a target=\"_blank\" id=\"as03\" href=\"#as03\">\ud83d\udd17<\/a> <a target=\"_blank\" href=\"https:\/\/github.com\/rails\/rails\/pull\/55553\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external noopener\" class=\"wpel-icon-right\">Make local cache middleware updatable by gmcgibbon \u00b7 Pull Request #55553 \u00b7 rails\/rails<span class=\"wpel-icon wpel-image wpel-icon-19\"\/><\/a><\/h3>\n<blockquote>\n<p><code>ActiveSupport::Cache::Strategy::LocalCache::Middleware<\/code>\u304c\u66f4\u65b0\u53ef\u80fd\u306b\u306a\u3063\u305f\u3002<\/p>\n<p>\u8d77\u52d5\u3057\u305f\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e<code>Rails.cache<\/code>\u306b\u3042\u308b\u30ad\u30e3\u30c3\u30b7\u30e5\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c\u5909\u66f4\u3055\u308c\u305f\u5834\u5408\u306f\u3001\u30ea\u30af\u30a8\u30b9\u30c8\u30ed\u30fc\u30ab\u30eb\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u9069\u5207\u306b\u8a2d\u5b9a\u3059\u308b\u305f\u3081\u306b\u3001\u305d\u308c\u306b\u5bfe\u5fdc\u3059\u308b\u30de\u30a6\u30f3\u30c8\u6e08\u307f\u30df\u30c9\u30eb\u30a6\u30a7\u30a2\u3092\u66f4\u65b0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3002\u3055\u3082\u306a\u3044\u3068\u3001\u5197\u9577\u306a\u30ad\u30e3\u30c3\u30b7\u30e5\u64cd\u4f5c\u306b\u3088\u3063\u3066\u8aa4\u3063\u3066\u30c7\u30fc\u30bf\u30b9\u30c8\u30a2\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066\u3057\u307e\u3046\u3002<\/p>\n<p><em>Gannon McGibbon<\/em><br \/><cite>\u540cChangelog\u3088\u308a<\/cite><\/p>\n<\/blockquote>\n<h3><a target=\"_blank\" id=\"as05\" href=\"#as05\">\ud83d\udd17<\/a> <a target=\"_blank\" href=\"https:\/\/github.com\/rails\/rails\/pull\/55497\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external noopener\" class=\"wpel-icon-right\">Add #assert_events_reported test helper by george-ma \u00b7 Pull Request #55497 \u00b7 rails\/rails<span class=\"wpel-icon wpel-image wpel-icon-19\"\/><\/a><\/h3>\n<blockquote>\n<p><code>assert_events_reported<\/code>\u30c6\u30b9\u30c8\u30d8\u30eb\u30d1\u30fc\u3092<code>ActiveSupport::EventReporter<\/code>\u306b\u8ffd\u52a0\u3002\u3053\u306e\u65b0\u3057\u3044\u30a2\u30b5\u30fc\u30b7\u30e7\u30f3\u306b\u3088\u3063\u3066\u3001\u8907\u6570\u306e\u30a4\u30d9\u30f3\u30c8\u3092\u9806\u5e8f\u3068\u7121\u95a2\u4fc2\u306b\u5358\u4e00\u306e\u30d6\u30ed\u30c3\u30af\u5185\u3067\u30c6\u30b9\u30c8\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308b\u3002<\/p>\n<pre><code class=\"ruby\">assert_events_reported([\n  { name: \"user.created\", payload: { id: 123 } },\n  { name: \"email.sent\", payload: { to: \"user@example.com\" } }\n]) do\n  create_user_and_send_welcome_email\nend\n<\/code><\/pre>\n<p><em>George Ma<\/em><br \/><cite>\u540cChangelog\u3088\u308a<\/cite><\/p>\n<\/blockquote>\n<h3><a target=\"_blank\" id=\"as06\" href=\"#as06\">\ud83d\udd17<\/a> <a target=\"_blank\" href=\"https:\/\/github.com\/rails\/rails\/pull\/53199\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external noopener\" class=\"wpel-icon-right\">Add AS::TimeZone#standard_name method by bogdan \u00b7 Pull Request #53199 \u00b7 rails\/rails<span class=\"wpel-icon wpel-image wpel-icon-19\"\/><\/a><\/h3>\n<p><code>ActiveSupport::TimeZone#standard_name<\/code>\u30e1\u30bd\u30c3\u30c9\u3092\u8ffd\u52a0\u3002<\/p>\n<pre><code class=\"ruby\">zone = ActiveSupport::TimeZone['Hawaii']\n# \u5f93\u6765\nActiveSupport::TimeZone::MAPPING[zone.name]\n# \u65b0\u3057\u3044\u65b9\u6cd5\nzone.standard_name # =&gt; 'Pacific\/Honolulu'\n<\/code><\/pre>\n<p><em>Bogdan Gusiev<\/em><\/p>\n<h3><a target=\"_blank\" id=\"as07\" href=\"#as07\">\ud83d\udd17<\/a> <a target=\"_blank\" href=\"https:\/\/github.com\/rails\/rails\/pull\/55334\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external noopener\" class=\"wpel-icon-right\">Structured Event Reporting in Rails by adrianna-chang-shopify \u00b7 Pull Request #55334 \u00b7 rails\/rails<span class=\"wpel-icon wpel-image wpel-icon-19\"\/><\/a><\/h3>\n<blockquote>\n<p><code>Rails.event<\/code>\u3067\u30a2\u30af\u30bb\u30b9\u53ef\u80fd\u306a\u300cStructured Event Reporter\u300d\u3092\u8ffd\u52a0\u3002<\/p>\n<p>\u3053\u306e\u30a4\u30d9\u30f3\u30c8\u30ec\u30dd\u30fc\u30bf\u30fc\u6a5f\u80fd\u306f\u3001Rails\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u5185\u3067\u69cb\u9020\u5316\u3055\u308c\u305f\u30a4\u30d9\u30f3\u30c8\u3092\u751f\u6210\u3059\u308b\u5171\u901a\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30a4\u30b9\u3092\u63d0\u4f9b\u3059\u308b\u3002<\/p>\n<pre><code class=\"ruby\">Rails.event.notify(\"user.signup\", user_id: 123, email: \"user@example.com\")\n<\/code><\/pre>\n<p>\u30a4\u30d9\u30f3\u30c8\u3078\u306e\u30bf\u30b0\u8ffd\u52a0\u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u3002<\/p>\n<pre><code class=\"ruby\">Rails.event.tagged(\"graphql\") do\n  # \u30a4\u30d9\u30f3\u30c8\u304c{ graphql: true }\u30bf\u30b0\u3092\u542b\u3080\n  Rails.event.notify(\"user.signup\", user_id: 123, email: \"user@example.com\")\nend\n<\/code><\/pre>\n<p>\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3082\u8ffd\u52a0\u3067\u304d\u308b\u3002<\/p>\n<pre><code class=\"ruby\"># \u3059\u3079\u3066\u306e\u30a4\u30d9\u30f3\u30c8\u304c{request_id: \"abc123\", shop_id: 456}\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3092\u542b\u3080\nRails.event.set_context(request_id: \"abc123\", shop_id: 456)\n<\/code><\/pre>\n<p>\u30a4\u30d9\u30f3\u30c8\u306f\u30b5\u30d6\u30b9\u30af\u30e9\u30a4\u30d0\u306b\u9001\u4fe1\u3055\u308c\u308b\u3002\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306f\u30b5\u30d6\u30b9\u30af\u30e9\u30a4\u30d0\u3092\u767b\u9332\u3059\u308b\u3053\u3068\u3067\u3001\u30a4\u30d9\u30f3\u30c8\u306e\u30b7\u30ea\u30a2\u30e9\u30a4\u30ba\u3068\u9001\u4fe1\u65b9\u6cd5\u3092\u5236\u5fa1\u53ef\u80fd\u306b\u306a\u308b\u3002\u30b5\u30d6\u30b9\u30af\u30e9\u30a4\u30d0\u306f\u3001\u30a4\u30d9\u30f3\u30c8\u30cf\u30c3\u30b7\u30e5\u3092\u53d7\u3051\u53d6\u308b<code>#emit<\/code>\u30e1\u30bd\u30c3\u30c9\u3092\u5b9f\u88c5\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3002<\/p>\n<pre><code class=\"ruby\">class LogSubscriber\n  def emit(event)\n    payload = event[:payload].map { |key, value| \"#{key}=#{value}\" }.join(\" \")\n    source_location = event[:source_location]\n    log = \"[#{event[:name]}] #{payload} at #{source_location[:filepath]}:#{source_location[:lineno]}\"\n    Rails.logger.info(log)\n  end\nend\n<\/code><\/pre>\n<p><em>Adrianna Chang<\/em><br \/><cite>\u540cChangelog\u3088\u308a<\/cite><\/p>\n<\/blockquote>\n<h3><a target=\"_blank\" id=\"as08\" href=\"#as08\">\ud83d\udd17<\/a> <a target=\"_blank\" href=\"https:\/\/github.com\/rails\/rails\/pull\/55465\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external noopener\" class=\"wpel-icon-right\">[Fix #55460] Make <code>ActiveSupport::Logger<\/code> <code>#freeze<\/code>-friendly by joshuay03 \u00b7 Pull Request #55465 \u00b7 rails\/rails<span class=\"wpel-icon wpel-image wpel-icon-19\"\/><\/a><\/h3>\n<blockquote>\n<p><code>ActiveSupport::Logger<\/code>\u3092<code>#freeze<\/code>\u3057\u3066\u3082<code>FrozenError<\/code>\u3092raise\u3057\u306a\u3044\u3088\u3046\u306b\u306a\u3063\u305f\u3002<\/p>\n<p><em>Joshua Young<\/em><br \/><cite>\u540cChangelog\u3088\u308a<\/cite><\/p>\n<\/blockquote>\n<h3><a target=\"_blank\" id=\"as09\" href=\"#as09\">\ud83d\udd17<\/a> <a target=\"_blank\" href=\"https:\/\/github.com\/rails\/rails\/pull\/55382\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external noopener\" class=\"wpel-icon-right\">Make <code>ActiveSupport::Gzip.compress<\/code> deterministic by Mr0grog \u00b7 Pull Request #55382 \u00b7 rails\/rails<span class=\"wpel-icon wpel-image wpel-icon-19\"\/><\/a>\u2605<\/h3>\n<blockquote>\n<p><code>ActiveSupport::Gzip.compress<\/code>\u3092\u5165\u529b\u306b\u5bfe\u3057\u3066\u6c7a\u5b9a\u8ad6\u7684\u306b\u632f\u308b\u821e\u3046\u3088\u3046\u4fee\u6b63\u3002<\/p>\n<p>\u5f93\u6765\u306e<code>ActiveSupport::Gzip.compress<\/code>\u306f\u51fa\u529b\u306b\u30bf\u30a4\u30e0\u30b9\u30bf\u30f3\u30d7\u3092\u542b\u3093\u3067\u3044\u305f\u305f\u3081\u3001\u547c\u3073\u51fa\u3057\u306e\u77ac\u9593\u306e\u79d2\u6570\u304c\u7570\u306a\u3063\u3066\u3044\u308b\u3068\u540c\u3058\u5165\u529b\u30c7\u30fc\u30bf\u306b\u5bfe\u3057\u3066\u51fa\u529b\u304c\u7570\u306a\u3063\u3066\u3057\u307e\u3063\u3066\u3044\u305f\u3002\u4fee\u6b63\u5f8c\u306f\u30bf\u30a4\u30e0\u30b9\u30bf\u30f3\u30d7\u304c\u5e38\u306b<code>0<\/code>\u306b\u8a2d\u5b9a\u3055\u308c\u308b\u305f\u3081\u3001\u540c\u3058\u5165\u529b\u306b\u5bfe\u3057\u3066\u5e38\u306b\u540c\u3058\u51fa\u529b\u3092\u5f97\u3089\u308c\u308b\u3088\u3046\u306b\u306a\u3063\u305f\u3002<\/p>\n<p><em>Rob Brackett<\/em><br \/><cite>\u540cChangelog\u3088\u308a<\/cite><\/p>\n<\/blockquote>\n<h3><a target=\"_blank\" id=\"as10\" href=\"#as10\">\ud83d\udd17<\/a> <a target=\"_blank\" href=\"https:\/\/github.com\/rails\/rails\/pull\/55255\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external noopener\" class=\"wpel-icon-right\">Implement ActiveSupport::BacktraceCleaner#clean_locations by fxn \u00b7 Pull Request #55255 \u00b7 rails\/rails<span class=\"wpel-icon wpel-image wpel-icon-19\"\/><\/a><\/h3>\n<blockquote>\n<p>\u65b0\u3057\u3044<code>ActiveSupport::BacktraceCleaner#clean_locations<\/code>\u30e1\u30bd\u30c3\u30c9\u306b<code>Thread::Backtrace::Location<\/code>\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u914d\u5217\u3092\u6e21\u3059\u3068\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u30af\u30ea\u30fc\u30f3\u306a\u914d\u5217\u3092\u8fd4\u3059\u3088\u3046\u306b\u306a\u3063\u305f\u3002<\/p>\n<pre><code class=\"ruby\">clean_locations = backtrace_cleaner.clean_locations(caller_locations)\n<\/code><\/pre>\n<p>\u30d5\u30a3\u30eb\u30bf\u3068\u30b5\u30a4\u30ec\u30f3\u30b5\u30fc\u306f\u5f93\u6765\u901a\u308a\u6587\u5b57\u5217\u3092\u53d7\u3051\u53d6\u308b\u3002\u305f\u3060\u3057locations\u306f\u30a4\u30df\u30e5\u30fc\u30bf\u30d6\u30eb\u306a\u306e\u3067\u3001\u53d7\u3051\u53d6\u3063\u305f\u914d\u5217\u5185\u306elocations\u306e<code>path<\/code>\u5c5e\u6027\u306f\u5143\u306e\u30d5\u30a3\u30eb\u30bf\u306a\u3057\u306e\u72b6\u614b\u306e\u307e\u307e\u3068\u306a\u308b\u3002<\/p>\n<p><em>Xavier Noria<\/em><br \/><cite>\u540cChangelog\u3088\u308a<\/cite><\/p>\n<\/blockquote>\n<h3><a target=\"_blank\" id=\"as11\" href=\"#as11\">\ud83d\udd17<\/a> <a target=\"_blank\" href=\"https:\/\/github.com\/rails\/rails\/pull\/55247\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external noopener\" class=\"wpel-icon-right\">Allow for nested ExecutionContext in test by byroot \u00b7 Pull Request #55247 \u00b7 rails\/rails<span class=\"wpel-icon wpel-image wpel-icon-19\"\/><\/a><\/h3>\n<blockquote>\n<p>\u30c6\u30b9\u30c8\u30b1\u30fc\u30b9\u306b\u304a\u3051\u308b<code>CurrentAttributes<\/code>\u3068<code>ExecutionContext<\/code>\u306e\u30b9\u30c6\u30fc\u30c8\u7ba1\u7406\u3092\u6539\u5584\u3002<\/p>\n<p>\u3053\u308c\u30892\u3064\u306e\u30b0\u30ed\u30fc\u30d0\u30eb\u30b9\u30c6\u30fc\u30c8\u306f\u3001Rails executor\u3067\u30e9\u30c3\u30d7\u3055\u308c\u305f\u30b3\u30fc\u30c9\u5185\uff08\u901a\u5e38\u306fAction Controller\u3084Active Job\u306e\u30d8\u30eb\u30d1\u30fc\uff09\u304b\u3089\u547c\u3073\u51fa\u3055\u308c\u308b\u305f\u3073\u306b\u3001\u5b8c\u5168\u306b\u30af\u30ea\u30a2\u3055\u308c\u3066\u3044\u305f\u3002<\/p>\n<pre><code class=\"ruby\">test \"#index works\" do\n  CurrentUser.id = 42\n  get :index\n  CurrentUser.id == nil\nend\n<\/code><\/pre>\n<p>\u6539\u4fee\u5f8c\u306f\u3001executor\u306b\u518d\u3073\u5165\u308b\u3068\u304d\u306b\u30b9\u30c6\u30fc\u30c8\u3092\u9069\u5207\u306b\u4fdd\u5b58\u3057\u3066\u5fa9\u5143\u3059\u308b\u3088\u3046\u306b\u306a\u3063\u305f\u3002<\/p>\n<p><em>Jean Boussier<\/em><br \/><cite>\u540cChangelog\u3088\u308a<\/cite><\/p>\n<\/blockquote>\n<h3><a target=\"_blank\" id=\"as12\" href=\"#as12\">\ud83d\udd17<\/a> <a target=\"_blank\" href=\"https:\/\/github.com\/rails\/rails\/pull\/55230\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external noopener\" class=\"wpel-icon-right\">Implement ActiveSupport::BacktraceCleaner#first_clean_location by fxn \u00b7 Pull Request #55230 \u00b7 rails\/rails<span class=\"wpel-icon wpel-image wpel-icon-19\"\/><\/a><\/h3>\n<blockquote>\n<p>\u65b0\u3057\u3044<code>ActiveSupport::BacktraceCleaner#first_clean_location<\/code>\u30e1\u30bd\u30c3\u30c9\u306f\u3001\u547c\u3073\u51fa\u3057\u5143\u306e\u30b3\u30fc\u30eb\u30b9\u30bf\u30c3\u30af\u306e\u6700\u521d\u306e\u30af\u30ea\u30fc\u30f3\u306alocation\u307e\u305f\u306f<code>nil<\/code>\u3092\u8fd4\u3059\u3002\u3053\u306elocation\u306f<code>Thread::Backtrace::Location<\/code>\u3067\u3042\u308b\u3002<br \/>\u4f55\u304b\u554f\u984c\u304c\u767a\u751f\u3057\u305f\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3067\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30ec\u30d9\u30eb\u306elocation\u3092\uff08\u6587\u5b57\u5217\u3067\u306f\u306a\u304f\uff09\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3068\u3057\u3066\u5831\u544a\u3057\u305f\u3044\u5834\u5408\u306b\u6709\u7528\u3002<\/p>\n<p><em>Xavier Noria<\/em><br \/><cite>\u540cChangelog\u3088\u308a<\/cite><\/p>\n<\/blockquote>\n<h3><a target=\"_blank\" id=\"as13\" href=\"#as13\">\ud83d\udd17<\/a> <a target=\"_blank\" href=\"https:\/\/github.com\/rails\/rails\/pull\/54129\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external noopener\" class=\"wpel-icon-right\">perf FileUpdateChecker, ignore gems paths by ermolaev \u00b7 Pull Request #54129 \u00b7 rails\/rails<span class=\"wpel-icon wpel-image wpel-icon-19\"\/><\/a><\/h3>\n<blockquote>\n<p>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6539\u5584\u306e\u305f\u3081<code>FileUpdateChecker<\/code>\u3068<code>EventedFileUpdateChecker<\/code>\u304c<code>Gem.path<\/code>\u306e\u5909\u66f4\u3092\u76e3\u8996\u3057\u306a\u3044\u3088\u3046\u306b\u306a\u3063\u305f\u3002<\/p>\n<p><em>Ermolaev Andrey<\/em>,\u00a0<em>zzak<\/em><br \/><cite>\u540cChangelog\u3088\u308a<\/cite><\/p>\n<\/blockquote>\n<h3><a target=\"_blank\" id=\"as14\" href=\"#as14\">\ud83d\udd17<\/a> <a target=\"_blank\" href=\"https:\/\/github.com\/rails\/rails\/pull\/55222\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external noopener\" class=\"wpel-icon-right\">Implement ActiveSupport::BacktraceCleaner#first_clean_frame by fxn \u00b7 Pull Request #55222 \u00b7 rails\/rails<span class=\"wpel-icon wpel-image wpel-icon-19\"\/><\/a><\/h3>\n<blockquote>\n<p>\u65b0\u3057\u3044<code>ActiveSupport::BacktraceCleaner#first_clean_frame<\/code>\u30e1\u30bd\u30c3\u30c9\u306f\u3001\u547c\u3073\u51fa\u3057\u5143\u306e\u30b3\u30fc\u30eb\u30b9\u30bf\u30c3\u30af\u306e\u6700\u521d\u306e\u30af\u30ea\u30fc\u30f3\u306a\u30d5\u30ec\u30fc\u30e0\u307e\u305f\u306f<code>nil<\/code>\u3092\u8fd4\u3059\u3002\u4f55\u304b\u554f\u984c\u304c\u767a\u751f\u3057\u305f\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3067\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30ec\u30d9\u30eb\u306e\u30d5\u30ec\u30fc\u30e0\u3092\u6587\u5b57\u5217\u3068\u3057\u3066\u5831\u544a\u3057\u305f\u3044\u5834\u5408\u306b\u6709\u7528\u3002<\/p>\n<p><em>Xavier Noria<\/em><br \/><cite>\u540cChangelog\u3088\u308a<\/cite><\/p>\n<\/blockquote>\n<h3><a target=\"_blank\" id=\"as15\" href=\"#as15\">\ud83d\udd17<\/a> <a target=\"_blank\" href=\"https:\/\/github.com\/rails\/rails\/pull\/55247\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external noopener\" class=\"wpel-icon-right\">Allow for nested ExecutionContext in test by byroot \u00b7 Pull Request #55247 \u00b7 rails\/rails<span class=\"wpel-icon wpel-image wpel-icon-19\"\/><\/a><\/h3>\n<blockquote>\n<p><code>CurrentAttributes<\/code>\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u30ea\u30af\u30a8\u30b9\u30c8\u7d42\u4e86\u6642\u306b\u5e38\u306b\u7834\u68c4\u3059\u308b\u3088\u3046\u306b\u306a\u3063\u305f\u3002<\/p>\n<p>\u5f93\u6765\u306e<code>CurrentAttributes<\/code>\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306f\u3001\u30ea\u30af\u30a8\u30b9\u30c8\u7d42\u4e86\u6642\u306b\u5c5e\u6027\u3092\u518d\u521d\u671f\u5316\u3059\u308b\u76ee\u7684\u3067\u3001\u5c5e\u6027\u3092\uff08\u7834\u68c4\u305b\u305a\u306b\uff09\u30ea\u30bb\u30c3\u30c8\u3057\u3066\u3044\u305f\u3002<\/p>\n<p>\u3053\u308c\u306f\u3001\u305d\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3067\u306f\u5ba3\u8a00\u3055\u308c\u305f\u5c5e\u6027\u4ee5\u5916\u306b\u30b9\u30c6\u30fc\u30c8\u3092\u4fdd\u6301\u3057\u3066\u3044\u306a\u3044\u3053\u3068\u3092\u524d\u63d0\u3068\u3057\u3066\u3044\u308b\u70b9\u306b\u554f\u984c\u304c\u3042\u308b\u3002\u5b9f\u969b\u306b\u306f\u5fc5\u305a\u3057\u3082\u30b9\u30c6\u30fc\u30c8\u3092\u4fdd\u6301\u3057\u306a\u3044\u3068\u306f\u9650\u3089\u305a\u3001\u305d\u306e\u5834\u5408\u30ea\u30af\u30a8\u30b9\u30c8\u9593\u3067\u30b9\u30c6\u30fc\u30c8\u304c\u6f0f\u6d29\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u3063\u305f\u3002<\/p>\n<p>\u4fee\u6b63\u5f8c\u306f\u30ea\u30af\u30a8\u30b9\u30c8\u7d42\u4e86\u6642\u306b<code>CurrentAttributes<\/code>\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u304c\u5e38\u306b\u7834\u68c4\u3055\u308c\u308b\u3088\u3046\u306b\u306a\u3063\u305f\u305f\u3081\u3001\u6b21\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u958b\u59cb\u6642\u306b\u65b0\u3057\u3044\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u304c\u4f5c\u6210\u3055\u308c\u308b\u3088\u3046\u306b\u306a\u3063\u305f\u3002<\/p>\n<p><em>Jean Boussier<\/em>,\u00a0<em>Janko Marohni\u0107<\/em><br \/><cite>\u540cChangelog\u3088\u308a<\/cite><\/p>\n<\/blockquote>\n<h3><a target=\"_blank\" id=\"as15\" href=\"#as15\">\ud83d\udd17<\/a> <a target=\"_blank\" href=\"https:\/\/github.com\/rails\/rails\/pull\/54985\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external noopener\" class=\"wpel-icon-right\">Add public API for <code>before_fork_hook<\/code> in parallel testing by eileencodes \u00b7 Pull Request #54985 \u00b7 rails\/rails<span class=\"wpel-icon wpel-image wpel-icon-19\"\/><\/a><\/h3>\n<blockquote>\n<p>\u30d1\u30e9\u30ec\u30eb\u30c6\u30b9\u30c8\u3067\u5b9f\u88c5\u3055\u308c\u305f<code>before_fork_hook<\/code>\u3092\u547c\u3073\u51fa\u3059\u305f\u3081\u306epublic API\u3092\u5c0e\u5165\u3059\u308b\u3002<\/p>\n<pre><code class=\"ruby\">parallelize_before_fork do\n    # \u30c6\u30b9\u30c8\u30d7\u30ed\u30bb\u30b9\u304cfork\u3059\u308b\u76f4\u524d\u306b\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u5b9f\u884c\u3059\u308b\nend\n<\/code><\/pre>\n<p><em>Eileen M. Uchitelle<\/em><br \/><cite>\u540cChangelog\u3088\u308a<\/cite><\/p>\n<\/blockquote>\n<h3><a target=\"_blank\" id=\"as16\" href=\"#as16\">\ud83d\udd17<\/a> <a target=\"_blank\" href=\"https:\/\/github.com\/rails\/rails\/pull\/54984\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external noopener\" class=\"wpel-icon-right\">Implement ability to opt out of parallel database hooks by eileencodes \u00b7 Pull Request #54984 \u00b7 rails\/rails<span class=\"wpel-icon wpel-image wpel-icon-19\"\/><\/a><\/h3>\n<blockquote>\n<p>\u30d1\u30e9\u30ec\u30eb\u30c6\u30b9\u30c8\u3067\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u4f5c\u6210\u3092\u30b9\u30ad\u30c3\u30d7\u3059\u308b\u6a5f\u80fd\u3092\u5b9f\u88c5\u3057\u305f\u3002<\/p>\n<p>Rails\u306e\u30d1\u30e9\u30ec\u30eb\u30c6\u30b9\u30c8\u3067\u306f\u3001\u30d7\u30ed\u30bb\u30b9\u3054\u3068\u306b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304c\u4f5c\u6210\u3055\u308c\u308b\u3002\u3053\u306e\u632f\u308b\u821e\u3044\u304c\u671b\u307e\u3057\u304f\u306a\u3044\u5834\u5408\u3084\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u51e6\u7406\u3092\u72ec\u81ea\u306b\u5b9f\u88c5\u3057\u305f\u3044\u5834\u5408\u306f\u3001\u3053\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u632f\u308b\u821e\u3044\u3092\u7121\u52b9\u306b\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u3063\u305f\u3002<\/p>\n<p>\u30d7\u30ed\u30bb\u30b9\u3054\u3068\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u4f5c\u6210\u3092\u30b9\u30ad\u30c3\u30d7\u3059\u308b\u306b\u306f\u3001<code>parallelize<\/code>\u30e1\u30bd\u30c3\u30c9\u3067\u5909\u66f4\u3059\u308b\u3002<\/p>\n<pre><code class=\"ruby\">parallelize(workers: 10, parallelize_databases: false)\n<\/code><\/pre>\n<p>\u3042\u308b\u3044\u306f\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30b3\u30f3\u30d5\u30a3\u30b0\u3067\u6307\u5b9a\u3059\u308b\u3002<\/p>\n<pre><code class=\"ruby\">config.active_support.parallelize_databases = false\n<\/code><\/pre>\n<p><em>Eileen M. Uchitelle<\/em><br \/><cite>\u540cChangelog\u3088\u308a<\/cite><\/p>\n<\/blockquote>\n<h3><a target=\"_blank\" id=\"as17\" href=\"#as17\">\ud83d\udd17<\/a> <a target=\"_blank\" href=\"https:\/\/github.com\/rails\/rails\/pull\/54915\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external noopener\" class=\"wpel-icon-right\">Allow to configure maximum cache key sizes by fatkodima \u00b7 Pull Request #54915 \u00b7 rails\/rails<span class=\"wpel-icon wpel-image wpel-icon-19\"\/><\/a>\u2605<\/h3>\n<blockquote>\n<p>\u30ad\u30e3\u30c3\u30b7\u30e5\u30ad\u30fc\u306e\u30b5\u30a4\u30ba\u306b\u6700\u5927\u5024\u3092\u8a2d\u5b9a\u53ef\u80fd\u306b\u306a\u3063\u305f\u3002<\/p>\n<p>\u30ad\u30fc\u306e\u9577\u3055\u304c\u8a2d\u5b9a\u5024\uff08\u30c7\u30d5\u30a9\u30eb\u30c8\u3067250\u30d0\u30a4\u30c8\uff09\u3092\u8d85\u3048\u308b\u3068\u3001\u306f\u307f\u51fa\u3057\u5206\u3092\u5207\u308a\u6368\u3066\u3001\u6b8b\u3063\u305f\u30ad\u30fc\u306e\u30c0\u30a4\u30b8\u30a7\u30b9\u30c8\u304c\u8ffd\u52a0\u3055\u308c\u308b\u3002<\/p>\n<p>\u5f93\u6765\u306e<code>ActiveSupport::Cache::RedisCacheStore<\/code>\u3067\u306f\u3001\u5207\u308a\u6368\u3066\u524d\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u30ad\u30fc\u30b5\u30a4\u30ba\u304c\u6700\u59271kb\u306b\u306a\u3063\u3066\u3044\u305f\u304c\u3001\u73fe\u5728\u306f250\u30d0\u30a4\u30c8\u306b\u524a\u6e1b\u3055\u308c\u305f\u3002<\/p>\n<pre><code class=\"ruby\">config.cache_store = :redis_cache_store, { max_key_size: 64 }\n<\/code><\/pre>\n<p><em>fatkodima<\/em><br \/><cite>\u540cChangelog\u3088\u308a<\/cite><\/p>\n<\/blockquote>\n<p>\u6ce8: <code>ActiveSupport::Cache::RedisCacheStore<\/code>\u30ad\u30e3\u30c3\u30b7\u30e5\u30ad\u30fc\u6700\u5927\u30b5\u30a4\u30ba\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u304c\u5909\u66f4\u3055\u308c\u305f\u3053\u3068\u3067\u3001\u65e2\u5b58\u306eRails\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067250\u30d0\u30a4\u30c8\u3092\u8d85\u3048\u308b\u30ad\u30e3\u30c3\u30b7\u30e5\u30ad\u30fc\u304c\u4f7f\u308f\u308c\u3066\u3044\u308b\u5834\u5408\u306b\u30ad\u30e3\u30c3\u30b7\u30e5\u304c\u7121\u52b9\u306b\u306a\u308b\u53ef\u80fd\u6027\u304c\u8003\u3048\u3089\u308c\u307e\u3059\uff08<a target=\"_blank\" href=\"https:\/\/github.com\/rails\/rails\/pull\/54915#discussion_r2051348290\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external noopener\" class=\"wpel-icon-right\">\u30ec\u30d3\u30e5\u30fc\u30b3\u30e1\u30f3\u30c8<span class=\"wpel-icon wpel-image wpel-icon-19\"\/><\/a>\u306b\u3088\u308b\u3068250\u30d0\u30a4\u30c8\u3092\u8d85\u3048\u308b\u3053\u3068\u306f\u3081\u3063\u305f\u306b\u306a\u3044\u3060\u308d\u3046\u3068\u3055\u308c\u3066\u3044\u307e\u3059\u304c\uff09\u3002<\/p>\n<h3><a target=\"_blank\" id=\"as18\" href=\"#as18\">\ud83d\udd17<\/a> <a target=\"_blank\" href=\"https:\/\/github.com\/rails\/rails\/pull\/54861\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external noopener\" class=\"wpel-icon-right\">Use UNLINK for RedisCacheStore in ActiveSupport by roharon \u00b7 Pull Request #54861 \u00b7 rails\/rails<span class=\"wpel-icon wpel-image wpel-icon-19\"\/><\/a><\/h3>\n<blockquote>\n<p><code>ActiveSupport::Cache::RedisCacheStore<\/code>\u3067\u5f93\u6765\u306e<code>DEL<\/code>\u30b3\u30de\u30f3\u30c9\u3067\u306f\u306a\u304f<code>UNLINK<\/code>\u30b3\u30de\u30f3\u30c9\uff08\u30d6\u30ed\u30c3\u30ad\u30f3\u30b0\u3057\u306a\u3044\u305f\u3081\u9ad8\u901f\uff09\u3092\u4f7f\u3046\u3088\u3046\u5909\u66f4\u3055\u308c\u305f\u3002<\/p>\n<p><em>Aron Roh<\/em><br \/><cite>\u540cChangelog\u3088\u308a<\/cite><\/p>\n<\/blockquote>\n<h3><a target=\"_blank\" id=\"as19\" href=\"#as19\">\ud83d\udd17<\/a> <a target=\"_blank\" href=\"https:\/\/github.com\/rails\/rails\/pull\/54855\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external noopener\" class=\"wpel-icon-right\">Add <code>Cache#read_counter<\/code> and <code>Cache#write_counter<\/code> by ghiculescu \u00b7 Pull Request #54855 \u00b7 rails\/rails<span class=\"wpel-icon wpel-image wpel-icon-19\"\/><\/a><\/h3>\n<blockquote>\n<p><code>Cache#read_counter<\/code>\u30e1\u30bd\u30c3\u30c9\u3068<code>Cache#write_counter<\/code>\u30e1\u30bd\u30c3\u30c9\u304c\u8ffd\u52a0\u3055\u308c\u305f\u3002<\/p>\n<pre><code class=\"ruby\">Rails.cache.write_counter(\"foo\", 1)\nRails.cache.read_counter(\"foo\") # =&gt; 1\nRails.cache.increment(\"foo\")\nRails.cache.read_counter(\"foo\") # =&gt; 2\n<\/code><\/pre>\n<p><em>Alex Ghiculescu<\/em><br \/><cite>\u540cChangelog\u3088\u308a<\/cite><\/p>\n<\/blockquote>\n<h3><a target=\"_blank\" id=\"as20\" href=\"#as20\">\ud83d\udd17<\/a> <a target=\"_blank\" href=\"https:\/\/github.com\/rails\/rails\/pull\/54809\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external noopener\" class=\"wpel-icon-right\">Introduce <code>capture_error_reports<\/code> by andrewn617 \u00b7 Pull Request #54809 \u00b7 rails\/rails<span class=\"wpel-icon wpel-image wpel-icon-19\"\/><\/a><\/h3>\n<blockquote>\n<p><code>ActiveSupport::Testing::ErrorReporterAssertions<\/code>\u306b<code>#capture_error_reports<\/code>\u3092\u5c0e\u5165\u3057\u305f\u3002<\/p>\n<p>\u6307\u5b9a\u306e\u30a8\u30e9\u30fc\u30af\u30e9\u30b9\u3068\u4e00\u81f4\u3059\u308b\u30d6\u30ed\u30c3\u30af\u5185\u3067\u767a\u751f\u3057\u305f\u30a8\u30e9\u30fc\u3092\u3059\u3079\u3066\u30ad\u30e3\u30d7\u30c1\u30e3\u3059\u308b\u3002<\/p>\n<pre><code class=\"ruby\">reports = capture_error_reports(IOError) do\n  Rails.error.report(IOError.new(\"Oops\"))\n  Rails.error.report(IOError.new(\"Oh no\"))\n  Rails.error.report(StandardError.new)\nend\n\nassert_equal 2, reports.size\nassert_equal \"Oops\", reports.first.error.message\nassert_equal \"Oh no\", reports.last.error.message\n<\/code><\/pre>\n<p><em>Andrew Novoselac<\/em><br \/><cite>\u540cChangelog\u3088\u308a<\/cite><\/p>\n<\/blockquote>\n<h3><a target=\"_blank\" id=\"as21\" href=\"#as21\">\ud83d\udd17<\/a> <a target=\"_blank\" href=\"https:\/\/github.com\/rails\/rails\/pull\/54512\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external noopener\" class=\"wpel-icon-right\">Introduce ActiveSupport::ErrorReport#add_middleware by andrewn617 \u00b7 Pull Request #54512 \u00b7 rails\/rails<span class=\"wpel-icon wpel-image wpel-icon-19\"\/><\/a><\/h3>\n<blockquote>\n<p><code>ActiveSupport::ErrorReporter<\/code>\u306b<code>#add_middleware<\/code>\u30e1\u30bd\u30c3\u30c9\u3092\u5c0e\u5165\u3002<\/p>\n<p>\u30a8\u30e9\u30fc\u3092\u5831\u544a\u3059\u308b\u969b\u3001\u5831\u544a\u3055\u308c\u305f\u30a8\u30e9\u30fc\u3068\u30d9\u30fc\u30b9\u5b9f\u884c\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3092\u5f15\u6570\u3068\u3057\u3066\u3001\u30a8\u30e9\u30fc\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u30df\u30c9\u30eb\u30a6\u30a7\u30a2\u304c\u547c\u3073\u51fa\u3055\u308c\u308b\u3088\u3046\u306b\u306a\u3063\u305f\u3002<br \/>\u30b9\u30bf\u30c3\u30af\u306f\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u30cf\u30c3\u30b7\u30e5\u3092\u5909\u66f4\u3059\u308b\u3053\u3068\u304c\u8a31\u3055\u308c\u3066\u304a\u308a\u3001\u5909\u66f4\u3055\u308c\u305f\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306f\u30a8\u30e9\u30fc\u30b5\u30d6\u30b9\u30af\u30e9\u30a4\u30d0\u306b\u6e21\u3055\u308c\u308b\u3002\u30df\u30c9\u30eb\u30a6\u30a7\u30a2\u306f<code>ErrorReporter#report<\/code>\u3068\u540c\u3058\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u53d7\u3051\u53d6\u308b\u3002<\/p>\n<p><em>Andrew Novoselac<\/em>,\u00a0<em>Sam Schmidt<\/em><br \/><cite>\u540cChangelog\u3088\u308a<\/cite><\/p>\n<\/blockquote>\n<h3><a target=\"_blank\" id=\"as22\" href=\"#as22\">\ud83d\udd17<\/a> <a target=\"_blank\" href=\"https:\/\/github.com\/rails\/rails\/pull\/54455\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external noopener\" class=\"wpel-icon-right\">Allow execution wrapper to handle all exceptions by gmcgibbon \u00b7 Pull Request #54455 \u00b7 rails\/rails<span class=\"wpel-icon wpel-image wpel-icon-19\"\/><\/a>\u2605<\/h3>\n<blockquote>\n<p>executor\u306e\u30a8\u30e9\u30fc\u30e9\u30c3\u30d4\u30f3\u30b0\u3092\u5909\u66f4\u3057\u3066\u3001<code>Exception<\/code>\u3092\u542b\u3080\u3042\u3089\u3086\u308b\u4f8b\u5916\u3092\u30ec\u30dd\u30fc\u30c8\u3059\u308b\u3088\u3046\u5909\u66f4\u3002<\/p>\n<p><code>SystemStackError<\/code>\u3084<code>NoMemoryError<\/code>\u3068\u3044\u3063\u305f\u91cd\u5927\u306a\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u305f\u5834\u5408\u306f\u3001\u30a8\u30e9\u30fc\u30ec\u30dd\u30fc\u30bf\u30fc\u3067\u3082\u3053\u306e\u7a2e\u306e\u4f8b\u5916\u3092\u5831\u544a\u53ef\u80fd\u306b\u3059\u3079\u304d\u3002<\/p>\n<p><em>Gannon McGibbon<\/em><br \/><cite>\u540cChangelog\u3088\u308a<\/cite><\/p>\n<\/blockquote>\n<h3><a target=\"_blank\" id=\"as23\" href=\"#as23\">\ud83d\udd17<\/a> <a target=\"_blank\" href=\"https:\/\/github.com\/rails\/rails\/pull\/54376\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external noopener\" class=\"wpel-icon-right\">Clear AR connections in tests before forking for parallelization by flavorjones \u00b7 Pull Request #54376 \u00b7 rails\/rails<span class=\"wpel-icon wpel-image wpel-icon-19\"\/><\/a><\/h3>\n<blockquote>\n<p>\u30c6\u30b9\u30c8\u30ef\u30fc\u30ab\u30fc\u304cfork\u3059\u308b\u76f4\u524d\u306b\u547c\u3073\u51fa\u3055\u308c\u308b\u30b3\u30fc\u30eb\u30d0\u30c3\u30af\u3092<code>ActiveSupport::Testing::Parallelization.before_fork_hook<\/code>\u3067\u5ba3\u8a00\u53ef\u80fd\u306b\u3057\u305f\u3002<\/p>\n<p><em>Mike Dalessio<\/em><br \/><cite>\u540cChangelog\u3088\u308a<\/cite><\/p>\n<\/blockquote>\n<h3><a target=\"_blank\" id=\"as24\" href=\"#as24\">\ud83d\udd17<\/a> <a target=\"_blank\" href=\"https:\/\/github.com\/rails\/rails\/pull\/54303\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external noopener\" class=\"wpel-icon-right\">Allow passing in a date or time to ActiveSupport::Testing::TimeHelpers#freeze_time by joshuay03 \u00b7 Pull Request #54303 \u00b7 rails\/rails<span class=\"wpel-icon wpel-image wpel-icon-19\"\/><\/a><\/h3>\n<blockquote>\n<p><code>#freeze_time<\/code>\u30c6\u30b9\u30c8\u30d8\u30eb\u30d1\u30fc\u306e\u5f15\u6570\u306b\u65e5\u4ed8\u3084\u6642\u523b\u3092\u6e21\u305b\u308b\u3088\u3046\u306b\u306a\u3063\u305f\u3002<\/p>\n<pre><code class=\"ruby\">Time.current # =&gt; Sun, 09 Jul 2024 15:34:49 EST -05:00\nfreeze_time Time.current + 1.day\nsleep 1\nTime.current # =&gt; Mon, 10 Jul 2024 15:34:49 EST -05:00\n<\/code><\/pre>\n<p><em>Joshua Young<\/em><br \/><cite>\u540cChangelog\u3088\u308a<\/cite><\/p>\n<\/blockquote>\n<blockquote class=\"wp-embedded-content\" data-secret=\"yIZBSns9xg\">\n<p><a target=\"_blank\" href=\"https:\/\/techracho.bpsinc.jp\/penguin10\/2023_02_09\/67780\" data-wpel-link=\"internal\" target=\"_self\">Rails: Timecop\u3092\u4f7f\u308f\u306a\u304f\u3066\u3082\u6642\u9593\u3092\u6b62\u3081\u3089\u308c\u305f\u8a71<\/a><\/p>\n<\/blockquote>\n<p><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"\u201cRails: Timecop\u3092\u4f7f\u308f\u306a\u304f\u3066\u3082\u6642\u9593\u3092\u6b62\u3081\u3089\u308c\u305f\u8a71\u201d \u2014 TechRacho\" src=\"https:\/\/techracho.bpsinc.jp\/penguin10\/2023_02_09\/67780\/embed#?secret=yIZBSns9xg\" data-secret=\"yIZBSns9xg\" width=\"500\" height=\"282\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><\/p>\n<h3><a target=\"_blank\" id=\"as25\" href=\"#as25\">\ud83d\udd17<\/a> <a target=\"_blank\" href=\"https:\/\/github.com\/rails\/rails\/pull\/54172\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external noopener\" class=\"wpel-icon-right\">JSON serialized attributes can return symbolized keys by matthaigh27 \u00b7 Pull Request #54172 \u00b7 rails\/rails<span class=\"wpel-icon wpel-image wpel-icon-19\"\/><\/a><\/h3>\n<blockquote>\n<p><code>ActiveSupport::JSON<\/code>\u306b\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u6e21\u305b\u308b\u3088\u3046\u306b\u306a\u3063\u305f\u3002<\/p>\n<pre><code class=\"ruby\">ActiveSupport::JSON.decode('{\"key\": \"value\"}', symbolize_names: true) # =&gt; { key: \"value\" }\n<\/code><\/pre>\n<p><em>matthaigh27<\/em><br \/><cite>\u540cChangelog\u3088\u308a<\/cite><\/p>\n<\/blockquote>\n<h3><a target=\"_blank\" id=\"as26\" href=\"#as26\">\ud83d\udd17<\/a> <a target=\"_blank\" href=\"https:\/\/github.com\/rails\/rails\/pull\/54126\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external noopener\" class=\"wpel-icon-right\">Update <code>NotificationAssertions<\/code>&#8216;s <code>assert_notifcation<\/code> to match against payload subsets and return matched notification by larouxn \u00b7 Pull Request #54126 \u00b7 rails\/rails<span class=\"wpel-icon wpel-image wpel-icon-19\"\/><\/a><\/h3>\n<blockquote>\n<p><code>ActiveSupport::Testing::NotificationAssertions<\/code>&#8216;s\u00a0<code>assert_notification<\/code>\u304c\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u30da\u30a4\u30ed\u30fc\u30c9\u306e\u30b5\u30d6\u30bb\u30c3\u30c8\u306b\u90e8\u5206\u30de\u30c3\u30c1\u3059\u308b\u3088\u3046\u306b\u306a\u3063\u305f\u3002<\/p>\n<p>\u5f93\u6765\u306f\u3001\u901a\u77e5\u30da\u30a4\u30ed\u30fc\u30c9\u5185\u306e\u30ad\u30fc\u30d0\u30ea\u30e5\u30fc\u304c\u9577\u904e\u304e\u308b\u305f\u3081\u3001\u4ee5\u4e0b\u306e\u30a2\u30b5\u30fc\u30b7\u30e7\u30f3\u306f\u5931\u6557\u3057\u3066\u3044\u305f\u3002\u30da\u30a4\u30ed\u30fc\u30c9\u306e\u30b5\u30d6\u30bb\u30c3\u30c8\u306b\u30de\u30c3\u30c1\u3059\u308b\u3088\u3046\u4fee\u6b63\u3055\u308c\u305f\u3053\u3068\u3067\u3001\u30a2\u30b5\u30fc\u30b7\u30e7\u30f3\u304c\u30d1\u30b9\u3059\u308b\u3088\u3046\u306b\u306a\u3063\u305f\u3002<\/p>\n<pre><code class=\"ruby\">assert_notification(\"post.submitted\", title: \"Cool Post\") do\n  ActiveSupport::Notifications.instrument(\"post.submitted\", title: \"Cool Post\", body: \"Cool Body\")\nend\n<\/code><\/pre>\n<p>\u307e\u305f\u3001\u30de\u30c3\u30c1\u3057\u305f\u901a\u77e5\u3092\u6c38\u7d9a\u5316\u3057\u3066\u30a2\u30b5\u30fc\u30b7\u30e7\u30f3\u3092\u3055\u3089\u306b\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u3063\u305f\u3002<\/p>\n<pre><code class=\"ruby\">notification = assert_notification(\"post.submitted\", title: \"Cool Post\") do\n  ActiveSupport::Notifications.instrument(\"post.submitted\", title: \"Cool Post\", body: Body.new(\"Cool Body\"))\nend\n\nassert_instance_of(Body, notification.payload[:body])\n<\/code><\/pre>\n<p><em>Nicholas La Roux<\/em><br \/><cite>\u540cChangelog\u3088\u308a<\/cite><\/p>\n<\/blockquote>\n<h3><a target=\"_blank\" id=\"as27\" href=\"#as27\">\ud83d\udd17<\/a> <a target=\"_blank\" href=\"https:\/\/github.com\/rails\/rails\/pull\/54081\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external noopener\" class=\"wpel-icon-right\">Deprecate <code>String#mb_chars<\/code> and <code>AS::Multibyte::Chars<\/code>. by byroot \u00b7 Pull Request #54081 \u00b7 rails\/rails<span class=\"wpel-icon wpel-image wpel-icon-19\"\/><\/a>\u2605<\/h3>\n<blockquote>\n<p><code>String#mb_chars<\/code>\u3068<code>ActiveSupport::Multibyte::Chars<\/code>\u304c\u975e\u63a8\u5968\u5316\u3055\u308c\u305f\u3002<\/p>\n<p>\u3053\u308c\u3089\u306eAPI\u306fRuby\u306e\u6587\u5b57\u5217\u304c\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u60c5\u5831\u3092\u8a8d\u8b58\u3057\u3066\u3044\u306a\u304b\u3063\u305fRuby 1.8\u6642\u4ee3\u306e\u907a\u7269\u3067\u3042\u308a\u3001\u4eca\u65e5\u3067\u306f\u3053\u308c\u3089\u3092\u5fc5\u8981\u3068\u3059\u308b\u307e\u3063\u3068\u3046\u306a\u7406\u7531\u306f\u5b58\u5728\u3057\u306a\u3044\u3002<\/p>\n<p><em>Jean Boussier<\/em><br \/><cite>\u540cChangelog\u3088\u308a<\/cite><\/p>\n<\/blockquote>\n<blockquote class=\"wp-embedded-content\" data-secret=\"hBDbbQ25Co\">\n<p><a target=\"_blank\" href=\"https:\/\/techracho.bpsinc.jp\/hachi8833\/2020_11_27\/26969\" data-wpel-link=\"internal\" target=\"_self\">Ruby\u306e\u5185\u90e8\u6587\u5b57\u30b3\u30fc\u30c9\u306fUTF-8\u3067\u306f\u306a\u3044&#8230;\u3060\u3068&#8230;\uff1f\uff01<\/a><\/p>\n<\/blockquote>\n<p><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"\u201cRuby\u306e\u5185\u90e8\u6587\u5b57\u30b3\u30fc\u30c9\u306fUTF-8\u3067\u306f\u306a\u3044...\u3060\u3068...\uff1f\uff01\u201d \u2014 TechRacho\" src=\"https:\/\/techracho.bpsinc.jp\/hachi8833\/2020_11_27\/26969\/embed#?secret=hBDbbQ25Co\" data-secret=\"hBDbbQ25Co\" width=\"500\" height=\"282\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><\/p>\n<h3><a target=\"_blank\" id=\"as28\" href=\"#as28\">\ud83d\udd17<\/a> <a target=\"_blank\" href=\"https:\/\/github.com\/rails\/rails\/pull\/53970\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external noopener\" class=\"wpel-icon-right\">Deprecate <code>ActiveSupport::Configurable<\/code> by seanpdoyle \u00b7 Pull Request #53970 \u00b7 rails\/rails<span class=\"wpel-icon wpel-image wpel-icon-19\"\/><\/a>\u2605<\/h3>\n<blockquote>\n<p><code>ActiveSupport::Configurable<\/code>\u304c\u975e\u63a8\u5968\u5316\u3055\u308c\u305f\u3002<\/p>\n<p><em>Sean Doyle<\/em><br \/><cite>\u540cChangelog\u3088\u308a<\/cite><\/p>\n<\/blockquote>\n<h3><a target=\"_blank\" id=\"as29\" href=\"#as29\">\ud83d\udd17<\/a> <a target=\"_blank\" href=\"https:\/\/github.com\/rails\/rails\/pull\/53962\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external noopener\" class=\"wpel-icon-right\">Fix <code>#to_query<\/code> to not include <code>=<\/code> for nil values by byroot \u00b7 Pull Request #53962 \u00b7 rails\/rails<span class=\"wpel-icon wpel-image wpel-icon-19\"\/><\/a>\u2605<\/h3>\n<blockquote>\n<p><code>nil.to_query(\"key\")<\/code>\u304c<code>key=<\/code>\u3067\u306f\u306a\u304f<code>key<\/code>\u3092\u30af\u30a8\u30ea\u6587\u5b57\u5217\u3068\u3057\u3066\u8fd4\u3059\u3088\u3046\u4fee\u6b63\u3002<\/p>\n<p>\u5f93\u6765\u306f<code>key=<\/code>\u304c\u30af\u30a8\u30ea\u6587\u5b57\u5217\u3068\u3057\u3066\u8fd4\u3055\u308c\u3066\u3044\u305f\u305f\u3081\u3001<code>Rack::Utils.parse_nested_query<\/code>\u306e\u6319\u52d5\u3068\u5408\u3063\u3066\u3044\u306a\u304b\u3063\u305f\u3002<\/p>\n<p><em>Erol Fornoles<\/em><br \/><cite>\u540cChangelog\u3088\u308a<\/cite><\/p>\n<\/blockquote>\n<h3><a target=\"_blank\" id=\"as30\" href=\"#as30\">\ud83d\udd17<\/a> <a target=\"_blank\" href=\"https:\/\/github.com\/rails\/rails\/pull\/53845\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external noopener\" class=\"wpel-icon-right\">Don&#8217;t wrap redis in <code>ConnectionPool<\/code> if already given one for <code>ActiveSupport::Cache::RedisCacheStore<\/code> by joshuay03 \u00b7 Pull Request #53845 \u00b7 rails\/rails<span class=\"wpel-icon wpel-image wpel-icon-19\"\/><\/a><\/h3>\n<blockquote>\n<p><code>ActiveSupport::Cache::RedisCacheStore<\/code>\u3092\u5229\u7528\u3057\u3066\u3044\u308b\u72b6\u614b\u3067\u3001<code>:redis<\/code>\u30aa\u30d7\u30b7\u30e7\u30f3\u304c\u65e2\u306b<code>ConnectionPool<\/code>\u306e\u5834\u5408\u306f<code>ConnectionPool<\/code>\u00a0\u306bredis\u3092\u30e9\u30c3\u30d7\u3057\u306a\u3044\u3088\u3046\u4fee\u6b63\u3002<\/p>\n<p><em>Joshua Young<\/em><br \/><cite>\u540cChangelog\u3088\u308a<\/cite><\/p>\n<\/blockquote>\n<h3><a target=\"_blank\" id=\"as31\" href=\"#as31\">\ud83d\udd17<\/a> <a target=\"_blank\" href=\"https:\/\/github.com\/rails\/rails\/pull\/53763\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external noopener\" class=\"wpel-icon-right\">Improve error highlighting of multiline methods in ERB templates by martinemde \u00b7 Pull Request #53763 \u00b7 rails\/rails<span class=\"wpel-icon wpel-image wpel-icon-19\"\/><\/a>\u2605<\/h3>\n<blockquote>\n<p><code>ERB::Util.tokenize<\/code>\u306e\u30a8\u30e9\u30fc\u30cf\u30a4\u30e9\u30a4\u30c8\u3092\u6539\u5584\u3002\u6587\u5b57\u5217\u306bERB\u30bf\u30b0\u304c\u542b\u307e\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u306b\u3001\u5b8c\u5168\u306a\u5165\u529b\u6587\u5b57\u5217\u3092\u542b\u3080<code>:PLAIN<\/code>\u30c8\u30fc\u30af\u30f3\u3092\u8fd4\u3059\u3088\u3046\u306b \u306a\u3063\u305f\u3002<\/p>\n<p><em>Martin Emde<\/em><br \/><cite>\u540cChangelog\u3088\u308a<\/cite><\/p>\n<\/blockquote>\n<h3><a target=\"_blank\" id=\"as32\" href=\"#as32\">\ud83d\udd17<\/a> <a target=\"_blank\" href=\"https:\/\/github.com\/rails\/rails\/pull\/53655\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external noopener\" class=\"wpel-icon-right\">Fix multibyte character tokenization bug in ERB::Util by martinemde \u00b7 Pull Request #53655 \u00b7 rails\/rails<span class=\"wpel-icon wpel-image wpel-icon-19\"\/><\/a>\u2605<\/h3>\n<blockquote>\n<p><code>ERB::Util.tokenize<\/code>\u3067\u3001ERB\u30bf\u30b0\u306e\u524d\u306b\u30de\u30eb\u30c1\u30d0\u30a4\u30c8\u6587\u5b57\u304c\u5b58\u5728\u3059\u308b\u5834\u5408\u306b\u30c8\u30fc\u30af\u30f3\u5316\u304c\u304a\u304b\u3057\u304f\u306a\u308b\u30d0\u30b0\u3092\u4fee\u6b63\u3002<\/p>\n<p><em>Martin Emde<\/em><br \/><cite>\u540cChangelog\u3088\u308a<\/cite><\/p>\n<\/blockquote>\n<h3><a target=\"_blank\" id=\"as33\" href=\"#as33\">\ud83d\udd17<\/a> <a target=\"_blank\" href=\"https:\/\/github.com\/rails\/rails\/pull\/53065\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external noopener\" class=\"wpel-icon-right\">Add <code>ActiveSupport::Testing::NotificationAssertions<\/code> test helper module by larouxn \u00b7 Pull Request #53065 \u00b7 rails\/rails<span class=\"wpel-icon wpel-image wpel-icon-19\"\/><\/a><\/h3>\n<blockquote>\n<p><code>ActiveSupport::Notifications<\/code>\u306e\u30c6\u30b9\u30c8\u3092\u652f\u63f4\u3059\u308b<code>ActiveSupport::Testing::NotificationAssertions<\/code>\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u8ffd\u52a0\u3002<\/p>\n<p><em>Nicholas La Roux<\/em>,\u00a0<em>Yishu See<\/em>,\u00a0<em>Sean Doyle<\/em><br \/><cite>\u540cChangelog\u3088\u308a<\/cite><\/p>\n<\/blockquote>\n<h3><a target=\"_blank\" id=\"as34\" href=\"#as34\">\ud83d\udd17<\/a> <a target=\"_blank\" href=\"https:\/\/github.com\/rails\/rails\/pull\/53440\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external noopener\" class=\"wpel-icon-right\">Fix <code>CurrentAttributes#attributes<\/code> to return new object each time by fatkodima \u00b7 Pull Request #53440 \u00b7 rails\/rails<span class=\"wpel-icon wpel-image wpel-icon-19\"\/><\/a>\u2605<\/h3>\n<blockquote>\n<p><code>ActiveSupport::CurrentAttributes#attributes<\/code>\u30e1\u30bd\u30c3\u30c9\u304c\u547c\u3073\u51fa\u3057\u306e\u305f\u3073\u306b\u65b0\u3057\u3044\u30cf\u30c3\u30b7\u30e5\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u8fd4\u3059\u3088\u3046\u4fee\u6b63\u3002<\/p>\n<p>\u5f93\u6765\u306f\u3001\u30e1\u30bd\u30c3\u30c9\u547c\u3073\u51fa\u3057\u306e\u305f\u3073\u306b\u540c\u3058\u30cf\u30c3\u30b7\u30e5\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u8fd4\u3057\u3066\u3044\u305f\u3002<\/p>\n<p><em>fatkodima<\/em><br \/><cite>\u540cChangelog\u3088\u308a<\/cite><\/p>\n<\/blockquote>\n<h3><a target=\"_blank\" id=\"as35\" href=\"#as35\">\ud83d\udd17<\/a> <a target=\"_blank\" href=\"https:\/\/github.com\/rails\/rails\/pull\/53393\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external noopener\" class=\"wpel-icon-right\">Add prefix address when IPAddr of CIDR encoded with JSON by taketo1113 \u00b7 Pull Request #53393 \u00b7 rails\/rails<span class=\"wpel-icon wpel-image wpel-icon-19\"\/><\/a><\/h3>\n<blockquote>\n<p><code>ActiveSupport::JSON.encode<\/code>\u3067<a target=\"_blank\" href=\"https:\/\/ja.wikipedia.org\/wiki\/Classless_Inter-Domain_Routing\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external noopener\" class=\"wpel-icon-right\">CIDR<span class=\"wpel-icon wpel-image wpel-icon-19\"\/><\/a>\u8a18\u6cd5\u3092\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u3088\u3046\u306b\u306a\u3063\u305f\u3002<\/p>\n<p>\u5f93\u6765:<\/p>\n<pre><code class=\"ruby\">ActiveSupport::JSON.encode(IPAddr.new(\"172.16.0.0\/24\")) # =&gt; \"\\\"172.16.0.0\\\"\"\n<\/code><\/pre>\n<p>\u5909\u66f4\u5f8c:<\/p>\n<pre><code class=\"ruby\">ActiveSupport::JSON.encode(IPAddr.new(\"172.16.0.0\/24\")) # =&gt; \"\\\"172.16.0.0\/24\\\"\"\n<\/code><\/pre>\n<p><em>Taketo Takashima<\/em><br \/><cite>\u540cChangelog\u3088\u308a<\/cite><\/p>\n<\/blockquote>\n<h3><a target=\"_blank\" id=\"as36\" href=\"#as36\">\ud83d\udd17<\/a> <a target=\"_blank\" href=\"https:\/\/github.com\/rails\/rails\/pull\/53680\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external noopener\" class=\"wpel-icon-right\">Make FileUpdateChecker faster with many extensions by jdelStrother \u00b7 Pull Request #53680 \u00b7 rails\/rails<span class=\"wpel-icon wpel-image wpel-icon-19\"\/><\/a><\/h3>\n<blockquote>\n<p><code>ActiveSupport::FileUpdateChecker<\/code>\u3067\u591a\u6570\u306e\u30d5\u30a1\u30a4\u30eb\u62e1\u5f35\u5b50\u3092\u30c1\u30a7\u30c3\u30af\u3059\u308b\u3068\u304d\u306e\u901f\u5ea6\u3092\u6539\u5584\u3057\u305f\u3002<\/p>\n<p><em>Jonathan del Strother<\/em><br \/><cite>\u540cChangelog\u3088\u308a<\/cite><\/p>\n<\/blockquote>\n<h2>\u95a2\u9023\u8a18\u4e8b<\/h2>\n<blockquote class=\"wp-embedded-content\" data-secret=\"0iIUB0ojRZ\">\n<p><a target=\"_blank\" href=\"https:\/\/techracho.bpsinc.jp\/hachi8833\/2025_09_05\/153296\" data-wpel-link=\"internal\" target=\"_self\">\u901f\u5831: Rails World 2025\u306eDHH\u30ad\u30fc\u30ce\u30fc\u30c8\u3068Rails 8.1beta1\u30ea\u30ea\u30fc\u30b9<\/a><\/p>\n<\/blockquote>\n<p><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"\u201c\u901f\u5831: Rails World 2025\u306eDHH\u30ad\u30fc\u30ce\u30fc\u30c8\u3068Rails 8.1beta1\u30ea\u30ea\u30fc\u30b9\u201d \u2014 TechRacho\" src=\"https:\/\/techracho.bpsinc.jp\/hachi8833\/2025_09_05\/153296\/embed#?secret=0iIUB0ojRZ\" data-secret=\"0iIUB0ojRZ\" width=\"500\" height=\"282\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><\/p>\n<blockquote class=\"wp-embedded-content\" data-secret=\"AnqQVMvStC\">\n<p><a target=\"_blank\" href=\"https:\/\/techracho.bpsinc.jp\/hachi8833\/2024_11_15\/146485\" data-wpel-link=\"internal\" target=\"_self\">Rails 8.0 Changelog\uff08\u5168\u9805\u76ee\u30ea\u30f3\u30af\u4ed8\u304d\uff09<\/a><\/p>\n<\/blockquote>\n<p><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"\u201cRails 8.0 Changelog\uff08\u5168\u9805\u76ee\u30ea\u30f3\u30af\u4ed8\u304d\uff09\u201d \u2014 TechRacho\" src=\"https:\/\/techracho.bpsinc.jp\/hachi8833\/2024_11_15\/146485\/embed#?secret=AnqQVMvStC\" data-secret=\"AnqQVMvStC\" width=\"500\" height=\"282\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><\/p>\n<blockquote class=\"wp-embedded-content\" data-secret=\"06M0b7w08L\">\n<p><a target=\"_blank\" href=\"https:\/\/techracho.bpsinc.jp\/hachi8833\/2024_06_12\/142432\" data-wpel-link=\"internal\" target=\"_self\">Rails 7.2.0 Active Storage CHANGELOG\uff08\u5168\u9805\u76ee\u30ea\u30f3\u30af\u4ed8\u304d\uff09<\/a><\/p>\n<\/blockquote>\n<p><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"\u201cRails 7.2.0 Active Storage CHANGELOG\uff08\u5168\u9805\u76ee\u30ea\u30f3\u30af\u4ed8\u304d\uff09\u201d \u2014 TechRacho\" src=\"https:\/\/techracho.bpsinc.jp\/hachi8833\/2024_06_12\/142432\/embed#?secret=06M0b7w08L\" data-secret=\"06M0b7w08L\" width=\"500\" height=\"282\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><\/p>\n<p>\n          <\/div>\n\n<br \/><a href=\"https:\/\/techracho.bpsinc.jp\/hachi8833\/2025_09_17\/153455\">\u5143\u306e\u8a18\u4e8b\u3092\u78ba\u8a8d\u3059\u308b <\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\u53c2\u8003: Release 8.1.0.beta1 \u00b7 rails\/rails\u53c2\u8003: \u30b3\u30df\u30c3\u30c8\u30ea\u30b9\u30c8: Comparing v8.0.2.1&#8230;v8.1.0.beta1 \u00b7 rails\/rails \ud83d\udd17 Allow  [&hellip;]","protected":false},"author":1,"featured_media":5916,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[4],"tags":[],"class_list":["post-5915","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-company-tec"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Rails 8.1.0.beta1\u306eChangelog: Active Support\uff08\u5168\u9805\u76ee\u30ea\u30f3\u30af\u4ed8\u304d\uff09\uff5cTechRacho by BPS\u682a\u5f0f\u4f1a\u793e - \u30dd\u30b1\u30b3\u30f3<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/techracho.bpsinc.jp\/hachi8833\/2025_09_17\/153455\" \/>\n<meta property=\"og:locale\" content=\"ja_JP\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Rails 8.1.0.beta1\u306eChangelog: Active Support\uff08\u5168\u9805\u76ee\u30ea\u30f3\u30af\u4ed8\u304d\uff09\uff5cTechRacho by BPS\u682a\u5f0f\u4f1a\u793e - \u30dd\u30b1\u30b3\u30f3\" \/>\n<meta property=\"og:description\" content=\"\u53c2\u8003: Release 8.1.0.beta1 \u00b7 rails\/rails\u53c2\u8003: \u30b3\u30df\u30c3\u30c8\u30ea\u30b9\u30c8: Comparing v8.0.2.1&#8230;v8.1.0.beta1 \u00b7 rails\/rails \ud83d\udd17 Allow [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/techracho.bpsinc.jp\/hachi8833\/2025_09_17\/153455\" \/>\n<meta property=\"og:site_name\" content=\"\u30dd\u30b1\u30b3\u30f3\" \/>\n<meta property=\"article:published_time\" content=\"2025-09-17T21:36:07+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/09\/rails81beta1_changelog_active_support_eyecatch-min.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"720\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"info@pokecon.jp\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u57f7\u7b46\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"info@pokecon.jp\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593\" \/>\n\t<meta name=\"twitter:data2\" content=\"6\u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/techracho.bpsinc.jp\\\/hachi8833\\\/2025_09_17\\\/153455#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/5915\\\/\"},\"author\":{\"name\":\"info@pokecon.jp\",\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/#\\\/schema\\\/person\\\/16c9f07b1ba984d165d9aee259bda997\"},\"headline\":\"Rails 8.1.0.beta1\u306eChangelog: Active Support\uff08\u5168\u9805\u76ee\u30ea\u30f3\u30af\u4ed8\u304d\uff09\uff5cTechRacho by BPS\u682a\u5f0f\u4f1a\u793e\",\"datePublished\":\"2025-09-17T21:36:07+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/5915\\\/\"},\"wordCount\":623,\"image\":{\"@id\":\"https:\\\/\\\/techracho.bpsinc.jp\\\/hachi8833\\\/2025_09_17\\\/153455#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/rails81beta1_changelog_active_support_eyecatch-min.png\",\"articleSection\":[\"\u4f01\u696d\u30c6\u30c3\u30af\"],\"inLanguage\":\"ja\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/5915\\\/\",\"url\":\"https:\\\/\\\/techracho.bpsinc.jp\\\/hachi8833\\\/2025_09_17\\\/153455\",\"name\":\"Rails 8.1.0.beta1\u306eChangelog: Active Support\uff08\u5168\u9805\u76ee\u30ea\u30f3\u30af\u4ed8\u304d\uff09\uff5cTechRacho by BPS\u682a\u5f0f\u4f1a\u793e - \u30dd\u30b1\u30b3\u30f3\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/techracho.bpsinc.jp\\\/hachi8833\\\/2025_09_17\\\/153455#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/techracho.bpsinc.jp\\\/hachi8833\\\/2025_09_17\\\/153455#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/rails81beta1_changelog_active_support_eyecatch-min.png\",\"datePublished\":\"2025-09-17T21:36:07+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/#\\\/schema\\\/person\\\/16c9f07b1ba984d165d9aee259bda997\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/techracho.bpsinc.jp\\\/hachi8833\\\/2025_09_17\\\/153455#breadcrumb\"},\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/techracho.bpsinc.jp\\\/hachi8833\\\/2025_09_17\\\/153455\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\\\/\\\/techracho.bpsinc.jp\\\/hachi8833\\\/2025_09_17\\\/153455#primaryimage\",\"url\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/rails81beta1_changelog_active_support_eyecatch-min.png\",\"contentUrl\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/rails81beta1_changelog_active_support_eyecatch-min.png\",\"width\":1200,\"height\":720},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/techracho.bpsinc.jp\\\/hachi8833\\\/2025_09_17\\\/153455#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u30db\u30fc\u30e0\",\"item\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Rails 8.1.0.beta1\u306eChangelog: Active Support\uff08\u5168\u9805\u76ee\u30ea\u30f3\u30af\u4ed8\u304d\uff09\uff5cTechRacho by BPS\u682a\u5f0f\u4f1a\u793e\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/#website\",\"url\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/\",\"name\":\"\u30dd\u30b1\u30b3\u30f3\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ja\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/#\\\/schema\\\/person\\\/16c9f07b1ba984d165d9aee259bda997\",\"name\":\"info@pokecon.jp\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g\",\"caption\":\"info@pokecon.jp\"},\"url\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/author\\\/infopokecon-jp\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Rails 8.1.0.beta1\u306eChangelog: Active Support\uff08\u5168\u9805\u76ee\u30ea\u30f3\u30af\u4ed8\u304d\uff09\uff5cTechRacho by BPS\u682a\u5f0f\u4f1a\u793e - \u30dd\u30b1\u30b3\u30f3","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/techracho.bpsinc.jp\/hachi8833\/2025_09_17\/153455","og_locale":"ja_JP","og_type":"article","og_title":"Rails 8.1.0.beta1\u306eChangelog: Active Support\uff08\u5168\u9805\u76ee\u30ea\u30f3\u30af\u4ed8\u304d\uff09\uff5cTechRacho by BPS\u682a\u5f0f\u4f1a\u793e - \u30dd\u30b1\u30b3\u30f3","og_description":"\u53c2\u8003: Release 8.1.0.beta1 \u00b7 rails\/rails\u53c2\u8003: \u30b3\u30df\u30c3\u30c8\u30ea\u30b9\u30c8: Comparing v8.0.2.1&#8230;v8.1.0.beta1 \u00b7 rails\/rails \ud83d\udd17 Allow [&hellip;]","og_url":"https:\/\/techracho.bpsinc.jp\/hachi8833\/2025_09_17\/153455","og_site_name":"\u30dd\u30b1\u30b3\u30f3","article_published_time":"2025-09-17T21:36:07+00:00","og_image":[{"width":1200,"height":720,"url":"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/09\/rails81beta1_changelog_active_support_eyecatch-min.png","type":"image\/png"}],"author":"info@pokecon.jp","twitter_card":"summary_large_image","twitter_misc":{"\u57f7\u7b46\u8005":"info@pokecon.jp","\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593":"6\u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/techracho.bpsinc.jp\/hachi8833\/2025_09_17\/153455#article","isPartOf":{"@id":"https:\/\/pokecon.jp\/job\/5915\/"},"author":{"name":"info@pokecon.jp","@id":"https:\/\/pokecon.jp\/job\/#\/schema\/person\/16c9f07b1ba984d165d9aee259bda997"},"headline":"Rails 8.1.0.beta1\u306eChangelog: Active Support\uff08\u5168\u9805\u76ee\u30ea\u30f3\u30af\u4ed8\u304d\uff09\uff5cTechRacho by BPS\u682a\u5f0f\u4f1a\u793e","datePublished":"2025-09-17T21:36:07+00:00","mainEntityOfPage":{"@id":"https:\/\/pokecon.jp\/job\/5915\/"},"wordCount":623,"image":{"@id":"https:\/\/techracho.bpsinc.jp\/hachi8833\/2025_09_17\/153455#primaryimage"},"thumbnailUrl":"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/09\/rails81beta1_changelog_active_support_eyecatch-min.png","articleSection":["\u4f01\u696d\u30c6\u30c3\u30af"],"inLanguage":"ja"},{"@type":"WebPage","@id":"https:\/\/pokecon.jp\/job\/5915\/","url":"https:\/\/techracho.bpsinc.jp\/hachi8833\/2025_09_17\/153455","name":"Rails 8.1.0.beta1\u306eChangelog: Active Support\uff08\u5168\u9805\u76ee\u30ea\u30f3\u30af\u4ed8\u304d\uff09\uff5cTechRacho by BPS\u682a\u5f0f\u4f1a\u793e - \u30dd\u30b1\u30b3\u30f3","isPartOf":{"@id":"https:\/\/pokecon.jp\/job\/#website"},"primaryImageOfPage":{"@id":"https:\/\/techracho.bpsinc.jp\/hachi8833\/2025_09_17\/153455#primaryimage"},"image":{"@id":"https:\/\/techracho.bpsinc.jp\/hachi8833\/2025_09_17\/153455#primaryimage"},"thumbnailUrl":"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/09\/rails81beta1_changelog_active_support_eyecatch-min.png","datePublished":"2025-09-17T21:36:07+00:00","author":{"@id":"https:\/\/pokecon.jp\/job\/#\/schema\/person\/16c9f07b1ba984d165d9aee259bda997"},"breadcrumb":{"@id":"https:\/\/techracho.bpsinc.jp\/hachi8833\/2025_09_17\/153455#breadcrumb"},"inLanguage":"ja","potentialAction":[{"@type":"ReadAction","target":["https:\/\/techracho.bpsinc.jp\/hachi8833\/2025_09_17\/153455"]}]},{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/techracho.bpsinc.jp\/hachi8833\/2025_09_17\/153455#primaryimage","url":"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/09\/rails81beta1_changelog_active_support_eyecatch-min.png","contentUrl":"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/09\/rails81beta1_changelog_active_support_eyecatch-min.png","width":1200,"height":720},{"@type":"BreadcrumbList","@id":"https:\/\/techracho.bpsinc.jp\/hachi8833\/2025_09_17\/153455#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u30db\u30fc\u30e0","item":"https:\/\/pokecon.jp\/job\/"},{"@type":"ListItem","position":2,"name":"Rails 8.1.0.beta1\u306eChangelog: Active Support\uff08\u5168\u9805\u76ee\u30ea\u30f3\u30af\u4ed8\u304d\uff09\uff5cTechRacho by BPS\u682a\u5f0f\u4f1a\u793e"}]},{"@type":"WebSite","@id":"https:\/\/pokecon.jp\/job\/#website","url":"https:\/\/pokecon.jp\/job\/","name":"\u30dd\u30b1\u30b3\u30f3","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/pokecon.jp\/job\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ja"},{"@type":"Person","@id":"https:\/\/pokecon.jp\/job\/#\/schema\/person\/16c9f07b1ba984d165d9aee259bda997","name":"info@pokecon.jp","image":{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/secure.gravatar.com\/avatar\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g","caption":"info@pokecon.jp"},"url":"https:\/\/pokecon.jp\/job\/author\/infopokecon-jp\/"}]}},"_links":{"self":[{"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/posts\/5915","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/comments?post=5915"}],"version-history":[{"count":1,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/posts\/5915\/revisions"}],"predecessor-version":[{"id":5917,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/posts\/5915\/revisions\/5917"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/media\/5916"}],"wp:attachment":[{"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/media?parent=5915"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/categories?post=5915"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/tags?post=5915"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}