なるようになるブログ

読書感想文かrailsについてかrubyについてか

rails commit log流し読み(2017/04/26)

2017/04/26分のコミットです。

CHANGELOGへの追加はありませんでした。


Fix typos [ci skip]

activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rbのdocの修正です。

ConnectionHandlerクラスのdocのグラマーの修正を行っています。


Merge pull request #28853 from kamipo/replace_regexp_z

各テストの正規表現で終端チェックに\Zを使っていた箇所を、まとめて\zに修正しています。 恐らく\Zを指定していたのは誤りだと思われる為、まとめて修正したとのことです。


Merge pull request #28840 from rails/sane-sdoc

Gemfileの修正です。

sdocのバージョンが1.0.0.rc1に固定されていたのを、ロックの条件を緩めて("> 1.0.0.rc1", "< 2.0")います。


Fix MigratorTest#test_migrator_verbosity

activerecord/test/cases/migrator_test.rbの修正です。

ActiveRecord::Migration.verboseをtrueにした場合の挙動についてのテストで、明示的にActiveRecord::Migration.verboseにtrueを設定するよう修正しています。テスト全体を実行した場合は問題無かったのですが、テストを単体で実行した場合にテストが通らなかった為。ようは偶々通っていた。


Merge pull request #28831 from kamipo/respond_to_missing_should_be_private

respond_to_missing?メソッドの可視性がpublicになってしまっている箇所があったのを、まとめてprivateに修正しています。


Merge pull request #28828 from kamipo/fix_extending_modules_on_association

activerecord/lib/active_record/associations/collection_proxy.rbactiverecord/lib/active_record/relation/delegation.rbの修正です。

association extensionsを使用してassociation proxyにメソッドを追加、かつ、同名のメソッドがすでにmodelに存在していた場合に、association proxyに追加した方のメソッドが呼ばれないバグがあったのを修正しています。

issueより。

require 'bundler/setup'

require "active_record"
require "minitest/autorun"
require "logger"

# This connection will do for database-independent bug reports.
ActiveRecord::Base.establish_connection(adapter: "sqlite3", database: ":memory:")
ActiveRecord::Base.logger = Logger.new(STDOUT)

ActiveRecord::Schema.define do
  create_table :posts, force: true do |t|
  end

  create_table :comments, force: true do |t|
    t.integer :post_id
  end
end

module Foo
  def find_by_foo(name)
  end
end

class Post < ActiveRecord::Base
  has_many :comments, extend: Foo
end

class Comment < ActiveRecord::Base
  belongs_to :post

  def self.find_by_foo(post, name)
    post.comments.find_by_foo(name)
  end
end

class BugTest < Minitest::Test
  def test_association_stuff
    post = Post.create!
    post.comments << Comment.create!

    assert_nil post.comments.find_by_foo("A")
  end
end

上記のようなコードがあった場合に、Foo#find_by_fooではなく、Comment.find_by_fooが呼ばれてしまう、というバグです。むずい。


Describe the changes in transactional tests

rails guideのRuby on Rails 5.1 Release Notesの修正です。

Incompatibilitiesの項を追加し、Transactional testsでは異なるスレッド間で同じARのconnectionが使われるようになった対応について説明を追加しています。


Merge pull request #28839 from y-yagi/fix-yarn-exit-status

railties/lib/rails/generators/rails/app/templates/bin/yarnの修正です。

yarnpkgコマンド実行時にyarnpkgが見つからない場合、exit statusに1を返すよう修正しています。