なるようになるブログ

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

rails commit log流し読み(2017/12/10)

2017/12/10分のコミットです。

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

actionpack/CHANGELOG.md


Add secure X-Download-Options and X-Permitted-Cross-Domain-Policies to default headers set.

actionpack/lib/action_dispatch/railtie.rbの修正です。

defaultのhttp headerの一覧にX-Download-Options(値はnoopen)、及び、X-Permitted-Cross-Domain-Policies(値はnone)を追加しています。


Change the system tests to set Puma as default server only when the user haven't specified manually another server.

actionpack/lib/action_dispatch/system_testing/server.rbの修正です。

System testで使用するサーバに強制的にPumaが使われるようになっていたのを、Capybara.serverが明示的に指定されている場合は指定されているサーバを使用するよう修正しています。


Reset schema cache after test

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

test_any_type_primary_keyの後処理でBarcode modelのcolumn情報をリセットするよう修正しています。

テスト内でcolumn情報がキャッシュされてしまうのですが、キャッシュされたままだと他のテストが通らない、という問題がある為、リセットするようにしています。

rails commit log流し読み(2017/12/09)

2017/12/09分のコミットです。

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


Swap raw video width and height if angle is 90 or 270 degrees

activestorage/lib/active_storage/analyzer/video_analyzer.rbの修正です。

videoのangleが90、または、270度の場合に、videoの幅と高さをスワップした値を返すよう修正しています。

これ何で必要なのかがさっぱりわからない…。


Merge pull request #31355 from rails/fix-rails-env-with-ruby

railtiesの修正です。

rubyコマンド単体でテストを実行した際に、正しくRAILS_ENVtestが設定されないバグがあったのを修正しています。

合わせて、envについては-eオプション経由で指定出来るようになっていたのですが、minitestのコマンドパースのタイミングだと設定するのが遅すぎる為、環境変数経由でのみenvを指定出来るよう修正しています。


Merge pull request #31354 from maciej-ka/docs-link_to-nil-name-example

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

link_toメソッドのdocに、link_toの第一引数にnilを指定した場合のexampleを追加しています。


Merge pull request #31379 from bogdanvlviv/ci-against-jruby_9_1_15

.travis.ymlの修正です。

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

rails commit log流し読み(2017/12/08)

2017/12/08分のコミットです。

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

actionpack/CHANGELOG.md


Add headless firefox driver to System Tests

actionpack/lib/action_dispatch/system_test_case.rbactionpack/lib/action_dispatch/system_testing/driver.rbの修正です。

System Testsにheadless firefoxのサポートを追加しています。

driven_byheadless_firefoxを指定(e.g. driven_by :selenium, using: :headless_firefox)すれば使用出来るようになっています。


Fix scope_for_create to do not lose polymorphic associations

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

polymorphic associationをcreateするした際に、scopeで指定したpolymorphicの指定が失われしまうバグがあったのを修正しています。


Fix customizing Content-Type via GCS service URLs

activestorage/lib/active_storage/service/gcs_service.rbの修正です。

GCS serviceでファイルをアップロードする際に、明示的にcontent typeにnilを指定するよう修正しています。

-          bucket.create_file(io, key, md5: checksum)
+          # The official GCS client library doesn't allow us to create a file with no Content-Type metadata.
+          # We need the file we create to have no Content-Type so we can control it via the response-content-type
+          # param in signed URLs. Workaround: let the GCS client create the file with an inferred
+          # Content-Type (usually "application/octet-stream") then clear it.
+          bucket.create_file(io, key, md5: checksum).update do |file|
+            file.content_type = nil
+          end

GCS client libraryはデフォルトでcontent typeを設定するようになっているのですが、それが設定された状態だと、本来指定したいcontent type(signed URLsのparamに指定したresponse-content-type)が指定されない為、デフォルトの値がclearする事で対処した、との事です。


Merge pull request #30780 from JackMc/fix-chrome-referrer-invalidauthenticitytoken

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

authenticity tokenのチェックの際に、request originがnullの場合、その旨エラーメッセージを返すよう修正しています。

Chromeが、referrer policy headerにno-referrerが指定されている場合にnullを返すようにした為、それがわかるよう明示的なエラーメッセージを返すようにしたとの事です。


SQLite: Fix copy_table with composite primary keys

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

DBにsqliteを使用している場合にprimary keyにid以外のtypeを指定しているtableに対してchange_tableを実行するとエラーになるバグを対応した、Merge pull request #31327 from aellispierce/custom-id-change-table-sqliteで、primary keyがcomposite primary keyだった場合の対応が含まれていなかったので、追加で対応しています。

rails commit log流し読み(2017/12/07)

2017/12/07分のコミットです。

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


Merge pull request #31344 from kamipo/use_string_instead_of_text

activerecord/test/cases/json_attribute_test.rbactiverecord/test/cases/json_shared_test_cases.rbの修正です。

Execute JsonAttributeTest only if supports_json? returns true を revert、及び、Oracle enhanced adapterでもJSON attributesのテストが通るよう修正しています。

テストが通らなかったのはテストに使用していた型(CLOBが使われていたのが不味かった?)、及び、テスト用データの作成処理でprimary key valueが不足していた為だったようなので、左記に関する修正を行っています。


Correct routing test spelling mistake.

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

routingのテストでprecedenceprecidenceにタイポしていたのを修正しています。


[ci skip] Make Todo classes inherit ApplicationRecord

activesupport/lib/active_support/core_ext/module/concerning.rbのdocの修正です。

Module::Concerning moduleのdocのexampleコードで使用しているclassの親クラスにApplicationRecordを指定しています。class内でhas_manybefore_createメソッドを使用しており、親クラスにActiveRecordがいる前提になっていた為。


Merge pull request #31327 from aellispierce/custom-id-change-table-sqlite

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

DBにsqliteを使用している場合に、primary keyにid以外のtypeを指定しているtableに対してchange_tableを実行するとエラーになるバグがあったのを修正しています。

rails commit log流し読み(2017/12/06)

2017/12/06分のコミットです。

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


only install ffmpeg and mupdf on activestorage builds

.travis.ymlの修正です。

Active Storageのテストのbuildでのみffmpegmupdfをインストールするよう修正しています。


Execute JsonAttributeTest only if supports_json? returns true

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

supports_jsonがtrueを返す時だけJSON attributeのテストを行うよう修正しています。

rails本体でサポートしているadapterではすべてJSON data typeをサポート済みなのですが、third partyのadapter(Oracle enhanced adapter)ではJSON data typeをサポートしていない為。

が、これは間違いで、JsonAttributeTestJSON attributeに関するテストで、これはJSON data typeをサポート済みかどうかとは別な為、後ほどrevertされています。


Add assert_in_epsilon to Testing guide [ci skip]

rails guideのA Guide to Testing Rails Applicationsの修正です。

Available Assertionsの項にあるassetionsの一覧にassert_in_epsilonassert_not_in_epsilonを追加しています。


Yield array from AC::Parameters#each for block with one arg

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

ActionController::Parameters#each#each_pairメソッドにblockを渡した場合に、block実行時の引数をArrayにするよう修正しています。

    def each_pair(&block)
       @parameters.each_pair do |key, value|
-        yield key, convert_hashes_to_parameters(key, value)
+        yield [key, convert_hashes_to_parameters(key, value)]
       end
     end

Hash#each#each_pairと挙動を合わせる為。

rails commit log流し読み(2017/12/05)

2017/12/05分のコミットです。

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


Fix example code in ActiveJob::Core [ci skip]

activejob/lib/active_job/core.rbのdocの修正です。

ActiveJob::Coreのdocにあるexampleコードが実際に動作しないコードになっていたのを動作するよう修正しています。


Fix CSP copy boolean directives (#31326)

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

CSPでboolean directive(block_all_mixed_contentとか、upgrade_insecure_requests)を使用していた場合に、policyのdupが正しく動作しないバグがあったのを修正しています。


Add missing require

actionpack/lib/action_dispatch/http/content_security_policy.rbの修正です

不足していたactive_support/core_ext/object/deep_dupのrequireを追加しています。


Modify test_webpack_option

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

rails newwebpackオプションを指定した場合のテストで、オプションの指定方法が誤っていた箇所があったのを修正、及び、webpack:install以外のコマンドが実行された際に不要なassertionが実行されていたのを修正しています。


Add more tests for the --webpack option

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

webpackオプションにJSフレームワークを指定した場合のテストを追加しています。

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

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

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


Fix instrumention name: delete_prefixed like the others.

activestorage/lib/active_storage/service/azure_storage_service.rbの修正です。

AzureStorageService#delete_prefixedメソッドでprefixを削除する際のinstrumentのkey名がdelete_allになっていたのを、delete_prefixedに変更しています。他のサービスクラスとkeyを合わせる為。


Merge pull request #31311 from y-yagi/ignore_no_database_error_when_loading_schema_cache

activerecord/lib/active_record/migration.rbactiverecord/lib/active_record/railtie.rbの修正です。

schema cacheが存在している、かつ、databaseが存在していない場合に、db:createを実行するとActiveRecord::NoDatabaseErrorでエラーになってしまうバグがあったのを修正しています。


Merge pull request #31146 from mikeycgto/actiondispatch-cookie-store-test-updates

actionpack/test/dispatch/session/cookie_store_test.rbの修正です。

cookie storeのテストで暗号化の為に古いsecret_tokenの仕組みを使っていたのを、encrypted cookiesを使用するよう修正しています。


Embrace the instantiation in loving parens <3

actionpack/test/dispatch/session/cookie_store_test.rbの修正です。

複数行に渡るメソッド呼び出しを行う場合に、"/"で改行していたのを、中括弧を使用するよう修正しています。


Update "Active Record Query Interface" guide [ci skip]

rails guideのActive Record Query Interfaceの修正です。

生成されるSQLのexampleに実際に生成される内容と異なる箇所があったのを修正、及びSQLのキーワードを大文字に修正しています。既存のexampleと合わせる為。


current_version should catch NoDatabaseError from get_all_versions

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

Migrator.current_versionBase.connection呼び出し時にNoDatabaseErrorをキャッチするようにしていたのを、Migrator.get_all_versionsからraiseされるエラーをキャッチするよう修正しています。

get_all_versionsメソッドでは渡されたconnectionを使用していない為。


Add tests for the --webpack option

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

rails newコマンドに--webpackオプションを指定した場合のテストを追加しています。