読者です 読者をやめる 読者になる 読者になる

なるようになるブログ

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

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

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

CHANGELOGにのったコミットは以下の通りです。

railties/CHANGELOG.md


Add WIP Rails 5.1 release notes to documents.yaml

guides/source/documents.yamlの修正です。

guideの一覧にRuby on Rails 5.1 Release Notesを追加しています。


Upgrade various Rails 5.0 references to 5.1

rails guideの修正です。

各guide内でRailsのバージョンが5.0になっている箇所を、まとめて5.1に修正しています。


Update middleware list

rails guideのThe Rails Command Lineの修正です。

bin/rails about taskの実行内容を最新の内容に更新しています。


Small grammar fix

rails guideのContributing to Ruby on Railsの修正です。

Testing Patchesの項のグラマーの修正を行っています。


Small grammar fix

rails guideのContributing to Ruby on Railsの修正です。

冒頭guideについての説明部分のグラマーの修正を行っています。


Bump from h3 to h2 tag

RELEASING_RAILS.mdの修正です。

3 Days before releaseのフォーマットをh3からh2に修正しています。他の箇所と段落を合わせる為。


add field ids when generating a scaffold form.

railties/lib/rails/generators/erb/scaffold/templates/_form.html.erbの修正です。

scaffoldで生成するform用のhtmlで、field idを出力するよう修正しています。

-    <%%= form.<%= attribute.field_type %> :<%= attribute.column_name %> %>
+    <%%= form.<%= attribute.field_type %> :<%= attribute.column_name %>, id: :<%= field_id(attribute.column_name) %> %>

form_withはデフォルトではid属性を出力しないようになっているのですが、id属性が無いとlabelとリンクされない為、明示的にidを出力するようにしたとの事です。


minor CHANGELOG formatting changes. [ci skip]

railties/CHANGELOG.mdの修正です。

先ほど追加されたCHANGELOGのエントリーをファイルの先頭に移動しています。

rails commit log流し読み(2017/03/25)

2017/03/25分のコミットです。

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


Update Action Cable README.md - typo fix

actioncable/README.mdの修正です。

Connectionクラスでuserをverifyする処理のexampleで===にタイポしていたのを修正しています。

      def find_verified_user
-        if current_user = User.find_by(id: cookies.signed[:user_id])
+        if current_user == User.find_by(id: cookies.signed[:user_id])
           current_user

が、元のコード(=)が正しかった為、後ほどrevertされています。


Fix doc format for duplicable? [ci skip]

activesupport/lib/active_support/core_ext/object/duplicable.rbのdocの修正です。

duplicable?メソッドのdoc内のexampleコードでインデントが足りておらず、exampleが正しく表示されてなかったのを修正しています。


Revert “Merge pull request #28569 from HarryCollins/patch-1”

Connectionクラスでuserをverifyする処理のexampleで===にタイポしていたのを修正した、Update Action Cable README.md - typo fix をrevertしています。理由は先に書いた通り。


Rename local variable name current_user to verified_user [ci skip]

actioncable/README.mdの修正です。

Connectionクラスでuserをverifyする処理のexampleで、verifyしたuserを格納する変数の変数名をcurrent_userからverified_userに修正しています。


Rename local variable name current_user to verified_user [ci skip]

rails guideのAction Cable Overviewの修正です。

先のactioncable/README.mdの修正と同様に、verifyしたuserを格納する変数の変数名をverified_userに修正しています。

rails commit log流し読み(2017/03/24)

2017/03/24分のコミットです。

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


Merge pull request #28532 from maclover7/jm-ruby-241

.travis.ymlの修正です。

CIで使用するRubyのバージョンを2.4.1に更新しています。


Additional explanation about cache implementations

rails guideのCaching with Rails: An Overviewの修正です。

ActiveSupport::Cache::MemoryStoreの項に、memory storeの場合cache dataをプロセス間で共有しない為、rails console経由でcacheのexpire等は行えない旨説明を追加しいています。


update guide to reflect browser compatibility for HTTP verbs [ci skip]

rails guideのRuby on Rails Security Guideの修正です。

DELETE, PUT, 及び PATCHメソッドについて説明している箇所に、古いブラウザではこれらのメソッドをサポートしてない旨(最新のブラウザではサポートしている)説明を修正しています。


Remove unnecessary ruby version comments [ci skip]

activesupport/lib/active_support/core_ext/object/duplicable.rbのdocの修正です。

Complex#duplicable?Rational#duplicable?メソッドのdocに、Ruby 2.5.0未満では複製出来ない旨説明が記載されていたのを、Rubyのバージョンについての部分を削除しています。ここでRubyのバージョンについて明言する必要は無いという事で削除されたようです。


Doc cleanup for caching guide [ci skip] (#28556)

rails guideのCaching with Rails: An Overviewの修正です。

ActiveSupport::Cache::MemoryStoreの項の言い回しを修正しています。

rails commit log流し読み(2017/03/23)

2017/03/23分のコミットです。

CHANGELOGにのったコミットは以下の通りです。

activesupport/CHANGELOG.md


Stop complaining about not being able to digest dynamic template partial names and simplify error logging to a single line when not

actionview/lib/action_view/digestor.rbの修正です。

templateのdigestを作成する際に、テンプレートが見つからなかった場合その旨ログを出力するようになっていたのですが、動的にpartial templateをrenderする際は追跡が出来ないので、ログを出力しないよう修正しています


Skip isolated test runs on older rubies

ci/travis.rbの修正です。

古いRuby(2.4未満)ではisolated testを実行しないよう修正しています。


Suppress WARNING: nonstandard use of \\ in a string literal warning

activerecord/test/cases/adapters/postgresql/bytea_test.rbの修正です。

bytea型についてのテストでescape_string_warningをoffにするよう修正しています。string literalについてのwarning(WARNING: nonstandard use of \\ in a string literal)が出ており、それを抑止するためとの事です。


Fix a race in ActionCable stream tests

actioncable/test/channel/stream_test.rbの修正です。

streamingのテストでsubscriptionの処理の後にwaitするよう修正しています。connection.pubsubを二重にスタブしている為、最初の処理を終わるってから処理を行う必要がある為。


Small grammar fix

actionpack/lib/action_dispatch/http/mime_negotiation.rbのdocの修正です。

ActionDispatch::Http::MimeNegotiation#negotiate_mimeメソッドのdocのグラマーの修正を行っています。


Small grammar fix

actionpack/lib/action_controller/metal/mime_responds.rbのdocの修正です。

ActionController::MimeResponds moduleのdoc内のグラマーの修正を行っています。


Merge pull request #28530 from kamipo/fix_ci_failure

actionview/test/template/digestor_test.rbの修正です。

Stop complaining about not being able to digest dynamic template partial names and simplify error logging to a single line when notの対応の際に、テストの修正が漏れていたので、修正内容と合わせてテストも修正しています。


Merge pull request #28524 from claudiob/comment-api-key

railties/lib/rails/generators/rails/app/templates/config/secrets.ymlの修正です。

デフォルトで生成されるsecrets.ymlに必ずapi_keyというconfigが追加されてしまっていたので、余計なconfigが追加されないよう、コメントアウトしています。


Merge pull request #28526 from kamipo/fix_log_subscriber_to_allow_legacy_binds

activerecord/lib/active_record/connection_adapters/abstract/quoting.rbactiverecord/lib/active_record/log_subscriber.rbの修正です。

LogSubscriberで古いフォーマットのbinds(多重配列の値。e.g. [[nil, 0]])も正しく出力出来るよう修正しています。


Merge pull request #28513 from maclover7/jm-fix-28500

railties/lib/rails/commands/server/server_command.rbの修正です。

rails server-bオプションとENV['HOST']を両方指定した場合に、-bオプションに指定された値が有効化されるよう修正しています。 Rails 5.0までの挙動と合わせる為。


Merge pull request #28527 from rst/fix_runner_argv_28515

railties/lib/rails/commands/runner/runner_command.rbの修正です。

rails runnerで指定したスクリプトARGVを参照した場合に、引数に指定した値が使用出来ないバグがあったのを修正しています。


Merge pull request #28528 from domcleal/parseerror-const-deprecation

Active Supportの修正です。

constをdeprecateする為のActiveSupport::Deprecation::DeprecatedConstantAccessor moduleを追加しています。

元々ActiveSupport::Deprecation::DeprecatedConstantProxyという同じようにconstをdeprecateにする為のクラスがあるのですが、こいつを使ってdepcateにした定数をrescueしようとするとエラーになる、という問題があり、Exceptionクラスをdeprecateする際に問題になっていた為、deprecateにしたconstをrescueにも使用出来るDeprecatedConstantAccessorを追加しています。実装はconst_missingで頑張ってる。


No need to have an entry that was included in 5.1 in 5.2

activesupport/CHANGELOG.mdの修正です。

先のコミットで追加されたActiveSupport::Deprecation::DeprecatedConstantAccessorについてのエントリーを削除しています。Rails 5.1にバックポートされており、5.2としての変更では無い為。


Document AC::Connection::Authorization#reject_unauthorized_connection

actioncable/lib/action_cable/connection/authorization.rbのdocの修正です。

Authorization#reject_unauthorized_connectionメソッドをpublic APIに変更しています。

各doc内のAction Cableのeampleコードで既に使用している為。


Merge pull request #28534 from claudiob/list-webpackers

railties/lib/rails/generators/app_base.rbの修正です。

rails newのhelpで、webpackオプションに指定可能な値(現時点では、react/vue/angular)を表示するよう修正しています。


Merge pull request #28540 from kamipo/remove_collection_proxy_uniq

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

CollectionProxy#uniqメソッドを削除しています。Delegate `uniq` to `records`uniqrecordsdelegateするようになった為。


Move comment to inside the method [ci skip]

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

PostgreSQLAdapter#supports_ranges?メソッドの定義前にあったコメントをメソッドの中に移動しています。メソッド自体のdocでは無く、処理に対するコメントだった為。


Fix duplicable? for Ratiional and Complex on ruby master, since they are now duplicable

activesupport/lib/active_support/core_ext/object/duplicable.rbの修正です。

Ratiional、ComplexがRubyのtrunkではdup出来るようになった為、Ruby 2.5ではComplex#duplicable?Rational#duplicable?メソッドがtrueを返すよう修正しています。

rails commit log流し読み(2017/03/22)

2017/03/22分のコミットです。

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


Merge pull request #28450 from adamgamble/bug_fix/fix_typo_in_actionview

actionview/lib/action_view/helpers/url_helper.rbの修正です。

サニタイズしていないparameterを使用してボタンを生成しようとした場合のエラーメッセージで、buttonbuttomにタイポしていたのを修正しています。


Revert “Merge pull request #27775 from domcleal/27774-format-reset”

ActionController::TestCase::Behavior#processメソッドで@requestPATH_INFOを削除するよう修正した、Delete PATH_INFO after each controller test requestをrevetしています。

この対応により、リグレッション(request実行後にrequest pathを確認する事が出来なくなってしまった)が発生した為、revertしたとの事です。


Wrap store accessors in parameters

actionpack/lib/action_controller/metal/params_wrapper.rbの修正です。

store_accessorを使用している、かつ、request parameterにstore_accessorのkeyに一致する値が含まれていた場合に、paramsにその値が正しく設定されないバグがあったのを修正しています。

class User < ApplicationRecord
  store_accessor :settings, :color, :size
end
post :parse, params: { "username" => "sikachu", "color" => "blue", "size" => "large" }

# before

params  # => username" => "sikachu", "color" => "blue", "size" => "large", "user" => { "username" => "sikachu" }

# after
params  # => username" => "sikachu", "color" => "blue", "size" => "large", "user" => { "username" => "sikachu", "color" => "blue", "size" => "large" }

Fix test that was asserting the wrong thing

actionpack/test/controller/parameters/accessors_test.rbの修正です。

ActionController::Parametersのaccessorsについてのテストで、assertionで参照する変数名が誤っている箇所があったのを修正しています。


Fix test assertion

actionpack/test/controller/test_case_test.rbの修正です。

request実行後にpathが取得出来る事を確認するテストで、assertionに指定する値が間違えている箇所があったのを修正しています。


Start Rails 5.2 development

コンポーネントのバージョンを5.2.0 alphaに更新しています。これによりmasterブランチはもう5.2.0。


Update bug report templates

bug report templatesの修正です。使用するgemのバージョンを5.1.0.rc1に更新しています。


Merge pull request #28394 from shime/docs-action-dispatch

Action Packのdocの修正です。

ActionDispatch module配下のメソッド、クラス等の各doc内のタイポ、グラマー等をまとめて修正しています。


[PostgreSQL]: Replace deprecated PG constants.

Active Recordの修正です。

deprecatedになっていたpg gemの定数(PGconn, PGresult, PGError)を使ってたいたのを、使用しないよう修正しています。

参考:ruby-pg/History.rdoc at master · ged/ruby-pg


Don’t comment out config.file_watcher during Rails upgrade

railties/lib/rails/generators/rails/app/app_generator.rbの修正です。

app:update task実行時にconfig/environments/development.rb内のconfig.file_watcherの行を強制的にコメントアウトするようになっていたのを、コメントアウトしないよう修正しています。

Rails 4.2 -> 5.0にアップデート時に必要だった処理(listenがGemfileに無いのにEventedFileUpdateCheckerを使おうとするとエラーになってしまう為)だったのですが、5.0 -> 5.1へのアップデート時には不要な為削除しています。

rails commit log流し読み(2017/03/21)

2017/03/21分のコミットです。

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


Merge pull request #27939 from kamipo/fix_select_all_with_legacy_binds

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

select_allメソッドのbinds引数に多重配列を渡した場合にエラーになってしまうバグがあったのを修正しています。


Merge pull request #28473 from kamipo/delegate_uniq_to_records

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

Include `Enumerable` in `ActiveRecord::Relation`ActiveRecord::RelationEnumerableをincludeするようになった事によに不要になったdelegate(collectmap等)を削除しています。


Fix the blog post template header

tasks/release.rbの修正です。

gemのveriyについての説明で、hashいnSHA-256を使用しているのに表題がSHA-1になってしまっていたのを修正しています。


Merge pull request #28406 from chukitow/feature/user-form-with-instead-of-form-for-scaffold

railties/lib/rails/generators/erb/scaffold/templates/_form.html.erbの修正です。

scaffold generatorが生成するviewで、form_forではなくform_withを使用するよう修正しています。


Default to yielding a form variable.

railties/lib/rails/generators/erb/scaffold/templates/_form.html.erbの修正です。

scaffold generatorが生成するviewで、formを格納する変数名をfと省略名を使用lしていたのを、略さずformとするよう修正しています。


Update the maintenance policy [ci skip]

rails guideのMaintenance Policy for Ruby on Railsの修正です。

Bug FixesSecurity Issuesの対象となるバージョンから4.2を削除しています。


Fix typo in Caching with Rails Guide [skip ci]

rails guideのCaching with Rails: An Overviewの修正です。

Caching in Developmentの項で、developmentdevelopementにタイポしている箇所があったのを修正しています。


Remove 5.0.0 entry from 5.1.0 CHANGELOG [ci skip]

railties/CHANGELOG.mdの修正です。

5.0.0に含まれていた対応が5.1.0のCHANGELOGに含まれてしまっていたので削除しています。


Merge pull request #28497 from jhawthorn/unscope_specific_where_value

activerecord/lib/active_record/relation/where_clause.rbの修正です。

whereに指定した値をunscopeした場合に、bindが正しく行われないバグがあったのを修正しています。

posts = Post.where(title: "Welcome to the weblog", body: "Such a lovely day")

posts.unscope(where: :title).to_sql
# SELECT "posts".* FROM "posts" WHERE "posts"."body" = 'Such a lovely day'

posts.unscope(where: :body).to_sql
# SELECT "posts".* FROM "posts" WHERE "posts"."title" = 'Such a lovely day'

# `"title" = "Welcome to the weblog"` となるべきが、`body`の値がbindされてしまっていた

rails commit log流し読み(2017/03/20)

2017/03/20分のコミットです。

CHANGELOGにのったコミットは以下の通りです。

railties/CHANGELOG.md


Merge pull request #28475 from y-yagi/correctly_check_whether_key_is_defined

railties/lib/rails/application/configuration.rbの修正です。

Merge pull request #28469 from matthewd/new-new-defaultsで追加された、version-compatible configの設定処理(load_defaults)のチェック処理が正しく動作しないバグがあったのを修正しています。


Fix warning: character class has duplicated range

railties/test/generators/encrypted_secrets_generator_test.rbの修正です。

encrypted secretのテストでRubyのwarning(warning: character class has duplicated range: /[\w\d]+/)が出ていたのを、正規表現を修正して対応しています。


Fix changelog entry about transaction error classes [ci skip]

activerecord/CHANGELOG.mdの修正です。

DBでtransaction serialization failures、又は、deadlocksが発生した時にraiseする為に、ActiveRecord::TransactionSerializationErrorを追加した、というエントリーがあったのですが、その後別の対応(Introduce new ActiveRecord transaction error classesによりTransactionSerializationErrorクラスは削除されてしまったので、エントリーの内容を調整しています。


Merge pull request #28479 from kamipo/evaluate_default_block_only_when_necessary

Active Recordの修正です。

二つの異なるコミットが一つのPRに混ざっています。

まずひとつ目は、activerecord/lib/active_record/relation/delegation.rbの修正です。ActiveRecord::Relationrecordsdelegateするメソッドの一覧にuniqを追加しています。

ActiveRecord::RelationはEnumerableをincludeしているものの、Enumerable#uniqはRuby 2.4で追加された為、明示的にdelegateしないと、Ruby 2.3以下でRelationに対してuniq`メソッドを呼び出すとエラーになってしまう為。

もうひとつはactiverecord/lib/active_record/associations/belongs_to_association.rbactiverecord/lib/active_record/associations/builder/belongs_to.rbの修正です。

BelongsTo.add_default_callbacksメソッドで必ずinstance_execメソッドを呼び出すようになっていたのを、belongs_toメソッドにblockが渡された場合のみinstance_execメソッドを呼び出すよう修正しています。


Add app:update task to engines

railtiesの修正です。

rails engineでもapp:updateタスクを使用出来るよう修正しています。挙動はrails applicationのapp:updateタスクと同じ。


Fix extension method with dirty target in has_many associations

Active Recordの修正です。

has_many associationsのextensionに指定したmethodでdirty targetが取得出来ないバグがあったのを修正しています。

class Post < ApplcationRecord
  has_many :comments do
    def with_content(content)
      self.detect { |comment| comment.body == content }
    end
  end
end
posts(:welcome).comments.build(body: "New comment")
posts(:welcome).comments.with_content("New comment") # => ここで上記でbuildしたオブジェクトが取得出来なかった

Remove duplicated columns definition

activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rbactiverecord/lib/active_record/connection_adapters/abstract_adapter.rbの修正です。

重複していたcolumnsメソッドの定義を一つにまとめています。