なるようになるブログ

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

rails commit log流し読み(2019/01/20)

2019/01/20分のコミットです。

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


Check all provided attributes of the message

actionmailbox/test/controllers/rails/action_mailbox/inbound_emails_controller_test.rbの修正です。

inbound email作成のテストで、mailのbodyだけチェックしていたのを、登録可能な全てのattribute(from, to等)をチェックするよう修正しています。


enclosing body tag in conductor layout.

actionmailbox/app/views/layouts/rails/conductor.html.erbの修正です。

bodyの閉じタグが不足していたのを修正しています。


Fix "Development Dependencies Install" guide [ci skip]

rails guideのDevelopment Dependencies Installの修正です。

Install JavaScript dependenciesの項にある処理手順から、不要なディレクトリの変更処理を削除しています。


Fix type casting column default in change_column

Active Recordの修正です。

change_columnに指定したdefaultの値が、変更後の型ではなく変更前の型でtype castが行われてしまうというバグがあったのを修正しています。

change_columnがbulkで実行されるようになった影響(Extract sql fragment generators from PostgreSQL adapter)との事です。


Report statistics from ActionMailbox

railties/lib/rails/tasks/statistics.rakeの修正です。

stats taskの対象にAction Mailboxのファイルも含むよう修正しています。

rails commit log流し読み(2019/01/19)

2019/01/19分のコミットです。

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


activerecord: Fix where nil condition on composed_of attribute

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

composed_ofを使用しているattributeにnilを指定してwhereを実行した場合に、結果が正しく取得出来ないバグがあったのを修正しています。


Fix the user show page in the verify task

tasks/release.rbの修正です。

release時の動作確認用スクリプトで、Active Storageでアップロードされたファイルを表示する前にファイルが添付されているかどうかをチェックするよう修正しています。


Preparing for 6.0.0.beta1 release

バージョンを6.0.0.beta1に更新しています。


Change release_sumary task to work in first releases of the series

tasks/release.rbの修正です。

release_sumary taskがシリーズの最初のリリースで動作するよう修正しています。


Single new line is not rendered as new line in the CHANGELOG.md

actionview/CHANGELOG.mdの修正です。

フォーマットの修正、及び、文の末尾に不足していたドットを追加しています。


Bump RuboCop to 0.63.0

.codeclimate.ymlの修正です

RuboCopのバージョンを0.63.0に更新しています。


Fix that adding attachments lose a body

actionmailbox/app/controllers/rails/conductor/action_mailbox/inbound_emails_controller.rbの修正です。

/rails/conductor/action_mailbox/inbound_emailsでinbound mailを作成する際に、BodyとAttachmentを両方指定した場合にBodyが空になってしまうバグがあったのを修正しています。

rails commit log流し読み(2019/01/18)

2019/01/18分のコミットです。

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

railties/CHANGELOG.md

actionpack/CHANGELOG.md

actionview/CHANGELOG.md

activerecord/CHANGELOG.md

activesupport/CHANGELOG.md


Merge pull request #34213 from matildasmeds/guides_session_guidelines_2

rails guideのSecuring Rails Applicationsの修正です。

古いバージョンに関する説明を削除、諸々言い回しを修正、Action Controller guide・Custom Credentialsの項へのリンクの追加等々を行っています。


Make trix a peer dependency of actiontext since it’s not used directly

actiontext/app/javascript/actiontext/index.jsactiontext/package.jsonの修正です。

trixのdependencyをpeer dependencyに移動しています。Action Textは直接はtrixを使用していない為。


Tidy up action_text:install task

actiontext/lib/templates/installer.rbの修正です。

action_text:install task実行時に必要なjsのpackageのインストールも行うよう修正しています。


Merge pull request #34953 from gmcgibbon/seed_with_inline_jobs

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

seedを読み込む際にActive Jobのadapterを強制的にinlineにするよう修正しています。

seedでActive Storageのattachmentを登録する、かつ、adapterがasnycの場合処理が完了しない(デットロックになってしまいハングしてしまう)為、強制的にinline adapterを使用するよう修正しています。


Ensure Action Mailbox processes an email only once when received multiple times

Action Mailboxの修正です。

同じメールを複数回受信した場合に、一度だけ処理を行うよう修正しています。同一かどうかの判定用に、checksum(Digest::SHA1.hexdigestで生成)の値も保持するよう修正しています(message idが無かった場合にchecksumで同一判定出来るようにする為)。


Ensure external redirects are explicitly allowed

Action Packの修正です。

redirect_toメソッドで、明示的に許可されている(allow_other_hostオプションにtrueが指定されている)場合のみ、外部サイトへのredirectを許可するよう修正しています。allow_other_hostがfalse(デフォルト)の状態で外部サイトにredirectしようとすると、ArgumentErrorになるようなっています。


Ensure that AR::Relation#exists? allows only permitted params

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

exists?メソッドの引数にActionController::Parametersインスタンスを指定出来る事を確認するテストを、permitted paramのみ使用される事を確認するよう修正しています。


Specify a name for [ message_id, message_checksum ] index to ensure the name does not exceed the limit.

actionmailbox/db/migrate/20180917164000_create_action_mailbox_tables.rbの修正です。

action_mailbox_inbound_emailsのmessage_id + message_checksumのindexに明示的にnameを指定するよう修正しています。nameの指定が無いとindex長でエラーになる為。


Use create_and_extract_message_id! to create an inbound email.

actionmailbox/app/controllers/rails/conductor/action_mailbox/inbound_emails_controller.rbの修正です。

inbound emailを作成する際に、ActionMailbox::InboundEmail.create_and_extract_message_id!メソッドを使用するよう修正しています。checksumとmessage idがセットされるようにする為。


Update the promisse that ActionController::TestCase will be extracted

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

ActionController::TestCaseについて説明している箇所で、Rails 5.1でgemに切り出す旨記載されいたのを、"the future"と記載するよう修正しています。gemに切り出すつもりはあるのですが、それをいつ行うかはまだ未定の為。


Remove deprecated methods in ActionDispatch::TestResponse

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

deprecatedになっていたActionDispatch::TestResponseのメソッド(success?missing?error?等)を削除しています。


Remove deprecated fragment_cache_key helper in favor of combined_fragment_cache_key

actionpack/lib/abstract_controller/caching/fragments.rbの修正です。

deprecatedになっていたfragment_cache_keyメソッドを削除しています。


Remove deprecated image_alt helper

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

deprecatedになっていたimage_altメソッドを削除しています。


Remove deprecated expand_hash_conditions_for_aggregates

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

deprecatedになっていたexpand_hash_conditions_for_aggregatesメソッドを削除しています。


Remove deprecated ActiveRecord::Migrator.migrations_path=

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

deprecatedになっていたActiveRecord::Migrator.migrations_path=メソッドを削除しています。


Remove ability to specify a timestamp name for #cache_key

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

deprecatedになっていたcache_keyメソッドのtimestamp引数を削除しています。


Change SQLite3Adapter to always represent boolean values as integers

Active Recordの修正です。

SQLite 3 adapterでbooleanの値を保持するのにintegerを使用するよう修正しています。合わせて、挙動を指定する為のconfig.activerecord.sqlite3.represent_boolean_as_integerはdeprecateになりました。


Remove delegation of missing methods in a relation to private methods of the class

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

deprecatedになっていたrelationからclassのprivate methodへのdelegationを削除しています。


Remove delegation of missing methods in a relation to arel

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

deprecatedになっていたrelationからarelへのdelegationを削除しています。


Do not allow passing the column name to count when a block is passed

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

deprecatedになっていたcountメソッドにblock + column name引数両方を指定した場合の処理を削除しています。


Do not allow passing the column name to sum when a block is passed

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

deprecatedになっていたsumメソッドにblock + column name引数両方を指定した場合の処理を削除しています。


Remove deprecated ActiveRecord::ConnectionAdapters::SQLite3Adapter#valid_alter_table_type?

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

deprecatedになっていたActiveRecord::ConnectionAdapters::SQLite3Adapter#valid_alter_table_type?メソッドを削除しています。


Remove deprecated #insert_fixtures from the database adapters

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

deprecatedになっていたinsert_fixturesメソッドを削除しています。


Remove deprecated #supports_statement_cache? from the database adapters

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

deprecatedになっていたsupports_statement_cache?メソッドを削除しています。


Remove deprecated #set_state from the transaction object

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

deprecateになっていたTransactionState#set_stateメソッドを削除しています。


Remove deprecated #acronym_regex method from Inflections

activesupport/lib/active_support/inflector/inflections.rbの修正です。

deprecatedになっていたInflections#acronym_regexメソッドを削除しています。


Remove deprecated Module#reachable? method

activesupport/lib/active_support/core_ext/module.rbactivesupport/lib/active_support/core_ext/module/reachable.rbの修正です。

deprecateになっていたModule#reachable?メソッドを削除しています。


Remove deprecated config.secret_token

railtiesの修正です。

deprecateになっていたconfig.secret_tokenを削除しています。


Remove secret_token rack env and cookie upgrade code

Action Packの修正です。

cookiesecret_tokenに関する処理を削除しています。config.secret_tokenが削除された事により動作しなくなった為。


Remove deprecated capify!

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

deprecateになっていたcapify!メソッドを削除しています。


Remove deprecated environment argument from the rails commands

railtiesの修正です。

deprecatedになっていたrails console、rails dbconsoleコマンドのenvironment引数を削除しています。


Remove deprecated support to old config.ru that use the application class as argument of run

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

deprecatedになっていいたconfig.ru内のrunメソッドににRails::Applicationのサブクラスを指定した場合の処理を削除しています。


Remove deprecated server argument from the rails server command

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

rails serverコマンドにRack server nameをオプションなしで指定した場合の処理を削除しています。

deprecatedだった為、となっていますが、この機能がdeprecatedになったのはRails 6から削除対象では無いため、後ほどrevertされています。


Remove deprecated after_bundle helper inside plugins templates

railtiesの修正です。

deprecatedになっていたplugins templatesの中でのafter_bundleメソッドの実行を削除しています。


Use released webpacker

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

rails自体でリリース済みのwebpackerを使用するよう修正、及び、新規に作成するRailsアプリではwebpacker 4.0.0.rc.3以上を使用するようバージョン指定を追加しています。


Action Text: bundle package.json in built gem.

actiontext/actiontext.gemspecの修正です。

Action Textのgem packageにpackage.jsonも含むよう修正しています。

action_text:install taskでpackage.jsonを使用する(依存しているパッケージのインストールに使用している)為。


Merge pull request #34963 from dylanahsmith/better-composed-of-single-field-query

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

mappingがある場合のaggregate処理のqueryがシンプルなqueryになるよう修正しています。

例。

class Customer < ActiveRecord::Base
  composed_of :balance, class_name: "Money", mapping: %w(balance amount)
end
# before
Customer.where(balance: (1..50).map { |amount| Money.new(amount) }).to_sql
#=> SELECT "customers".* FROM "customers" WHERE ((((((((((((((((((((((((((((((((((((((((((((((((("customers"."balance" = 1 OR "customers"."balance" = 2) OR "customers"."balance" = 3) OR "customers"."balance" = 4) OR "customers"."balance" = 5) OR "customers"."balance" = 6) OR "customers"."balance" = 7) OR "customers"."balance" = 8) OR "customers"."balance" = 9) OR "customers"."balance" = 10) OR "customers"."balance" = 11) OR "customers"."balance" = 12) OR "customers"."balance" = 13) OR "customers"."balance" = 14) OR "customers"."balance" = 15) OR "customers"."balance" = 16) OR "customers"."balance" = 17) OR "customers"."balance" = 18) OR "customers"."balance" = 19) OR "customers"."balance" = 20) OR "customers"."balance" = 21) OR "customers"."balance" = 22) OR "customers"."balance" = 23) OR "customers"."balance" = 24) OR "customers"."balance" = 25) OR "customers"."balance" = 26) OR "customers"."balance" = 27) OR "customers"."balance" = 28) OR "customers"."balance" = 29) OR "customers"."balance" = 30) OR "customers"."balance" = 31) OR "customers"."balance" = 32) OR "customers"."balance" = 33) OR "customers"."balance" = 34) OR "customers"."balance" = 35) OR "customers"."balance" = 36) OR "customers"."balance" = 37) OR "customers"."balance" = 38) OR "customers"."balance" = 39) OR "customers"."balance" = 40) OR "customers"."balance" = 41) OR "customers"."balance" = 42) OR "customers"."balance" = 43) OR "customers"."balance" = 44) OR "customers"."balance" = 45) OR "customers"."balance" = 46) OR "customers"."balance" = 47) OR "customers"."balance" = 48) OR "customers"."balance" = 49) OR "customers"."balance" = 50)


# after
Customer.where(balance: (1..50).map { |amount| Money.new(amount) }).to_sql
#=> SELECT "customers".* FROM "customers" WHERE "customers"."balance" IN (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50)

Merge pull request #34956 from kamipo/actionmailbox_datetime_precision

actionmailbox/db/migrate/20180917164000_create_action_mailbox_tables.rbの修正です。

action_mailbox_inbound_emails tableでprecisionをサポートしている場合のにtimestampsにprecisionオプションを指定するよう修正しています。MySQL 5.5ではdatetimeにprecisionは指定出来ない為。


Revert "Remove deprecated server argument from the rails server command"

rails serverコマンドにRack server nameをオプションなしで指定した場合の処理を削除した、Remove deprecated server argument from the rails server commandをrevertしています。Rails 6で削除対象では無いため。


Use unboundable? rather than boundable?

Active Recordの修正です。

boundable?メソッドの代わりにunboundable?メソッドを定義、及び使用するよう修正しています。

infinite?メソッドと同じような使い方を出来るようにする為、のようです。おそらく。


Merge pull request #34969 from eileencodes/fix-error-message-for-multi-db-apps

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

指定されたadapterがDBのconfigに存在しなかった場合のエラーメッセージが、adapter名のみ表示していたのを、env名と合わせて表示するよう修正しています。

例。

'doesnexist' database is not configured. Available: development,
development, test, test, production, production
(ActiveRecord::AdapterNotSpecified)
The `doesntexist` database is not configured for the `production`
environment. (ActiveRecord::AdapterNotSpecified)

Available databases configurations are:

development: primary, primary_readonly
test: primary, primary_readonly
production: primary, primary_readonly

Merge pull request #34972 from krzysiek1507/fix/date-advance-performance

activesupport/lib/active_support/core_ext/date/calculations.rbの修正です。

Date#advanceメソッドでoptionsの複製処理を無くすようリファクタリングを行っています。


Merge pull request #34959 from alkesh26/action-cable-typo-fixes

Action Cableの修正です。

諸々タイポしている箇所があったのを修正しています。


Merge pull request #30000 from kamipo/all_of_queries_should_return_correct_result

Active Recordの修正です。

RangeErrorの扱いに誤りがあり、巨大な数字を含むqueryを実行した場合に正しい結果が取得出来ない、というバグがあったのを修正しています。

rails commit log流し読み(2019/01/17)

2019/01/17分のコミットです。

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

railties/CHANGELOG.md


Remove frozen_string_literal from Action Cable's template files

actioncable/lib/rails/generators/test_unit/templates/channel_test.rb.ttrails/railties/lib/rails/generators/rails/app/templates/test/channels/application_cable/connection_test.rb.ttの修正です。

Action Cableのtemplateファイルからfrozen_string_literalを削除しています。他のtemplateと合わせる為。


Fix document formatting on ActionMailbox [ci skip]

Action Mailboxのdocの修正です。

doc全体のフォーマットの修正を行っています。


Revert "Don't handle params option in a special way in url_for helper"

url_forメソッドからparamsオプションについての処理を削除した、Merge pull request #33256 from ilkkao/ilkkao/remove-unused-params-optionをrevertしています。

:domainのような特定のオプションを渡す為に必要な為、との事です。例えば、url_for(domain: 'foo.com') だとfoo.comが生成されるのですが、url_for(params: { domain: 'foo.com' })だと?domain=foo.comとなる、という使い分けがある為。


Add rails test:channels.

railties/lib/rails/test_unit/testing.rakeの修正です。

channelのテストを実行する為のtest:channels taskを追加しています。


Require hash/keys inside active_model/callbacks

activemodel/lib/active_model/callbacks.rbの修正です。

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


Merge pull request #34832 from gmcgibbon/db_system_change_command

railtiesの修正です。

databaseの設定を変更する為のdb:system:changeコマンドを追加しています。

最初sqlite3を使うようrails newでアプリを作成したが、その後PostgreSQLMySQLを使う事になった場合に使用する、databaseの設定変更用のコマンドです。

やっている事は、Gemfileへの必要なgemの追加と、config/database.ymlの変更処理です。

$  bin/rails db:system:change --to=postgresql
    conflict  config/database.yml
Overwrite /config/database.yml? (enter "h" for help) [Ynaqdhm] y
       force  config/database.yml
        gsub  Gemfile

Minimize boilerplate setup code for JavaScript libraries

JavaScript librariesを使用するコードのexampleがimport + startを別の行にやっていたのを、request + startで1行で行うよう修正しています。

例。

- import * as ActiveStorage from "@rails/activestorage"
- ActiveStorage.start()
+ require("@rails/activestorage").start()

Merge pull request #34941 from rmacklin/allow-actioncable-to-run-in-web-workers

Action Cableの修正です。

consoleWebSocketを使用するのにreceiverにwindowを使用していたのを、selfを使用するよう修正、及び、addEventListenerremoveEventListenerから明示的なreceiverの指定を削除しています。

web workerで使用出来るようにする為(web workerではwindowやdocumentは使用出来ない)。


Add a space in framework names. Matches Active Record in generated Gemfile.

railties/lib/rails/generators/rails/app/templates/Gemfile.ttの修正です。

コメントにあるコンポーネント名を正式名称(スペース入りの値)に修正しています。


Merge pull request #33419 from bogdanvlviv/update-active_storage

Active Storage、railtiesの修正です。

app:update実行時にactive_storage_attachments tableからactive_storage_blobsに外部キー制約を貼る為のmigrationを生成するよう修正しています。

元々は外部キー制約は無くて、後から追加された([Add a foreign-key constraint to the active_storage_attachments table for blobs)で追加された)為。

rails commit log流し読み(2019/01/16)

2019/01/16分のコミットです。

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


Install Action Mailbox and Action Text when verifying release.

tasks/release.rbの修正です。

gem release時のチェック処理で、rails action_mailbox:installrails action_text:installを実行するよう修正しています。


Exercise Active Storage and Action Text in verification app.

tasks/release.rbの修正です。

gem release時のチェック処理で、Active StorageとAction Textの機能についてもチェックするよう修正しています。


Add 'null: false' to Action Mailbox table

actionmailbox/db/migrate/20180917164000_create_action_mailbox_tables.rbの修正です。

Action Mailboxで使用するtable(action_mailbox_inbound_emails)のcreated_atupdated_atnull: falseを指定するよう修正しています。


Document that format.any can match all formats

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

respond_toメソッドのdocにformat.anyについての説明を追加しています。


Remove Decorator pattern in Overriding existing classes examples

rails guideのGetting Started with Enginesの修正です。

engineを使用した場合のexampletとして既存のクラスを拡張する方法が説明されており、それを"decorators"として表現していたのを、"override"と言葉を使うよう修正しています。

やっている事がdecorator patternでは無かった(既存のオブジェクトインスタンスに機能を追加するではなく、既存のクラスを再定義していた)為。

rails commit log流し読み(2019/01/15)

2019/01/15分のコミットです。

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

actioncable/CHANGELOG.md

activerecord/CHANGELOG.md


Restructure credentials after environment overrides.

railtiesの修正です。

credentialsまわりのリファクタリングとして、メソッド名を適切な名前に変更、不要な変数を削除、不足していたdocの追加等々を行っています。


Merge pull request #34933 from palkan/feature/cable-testing-guides

Action Cableの修正です。

channel genetarorでファイルを生成する際にテスト用のファイルも生成するよう修正、及び、Testing Rails ApplicationsにAction Cableのテストについて説明したTesting Action Cableの項を追加しています。

これでaction-cable-testing gemのRailsへのマージ処理は終了との事です。

参考:Testing Rails Applications


Merge pull request #34934 from rmacklin/simplify-actioncable-methods-after-decaffeination

Action Cableの修正です。

不要な明示的なundefinedのreturnを削除、同じく不要なnullチェック処理の削除等のリファクタリングを行っています。

Action CableのCoffeeScript -> ES2015への変換はdecaffeinate/decaffeinateを使って行ったのですが、その際に不要な処理が含まれてしまっていたとの事です。


Refactor calculating beginning_of_quarter and end_of_quarter (#34927)

activesupport/lib/active_support/core_ext/date_and_time/calculations.rbの修正です。

beginning_of_quarterend_of_quarterメソッドで不要なArrayのオブジェクトを生成しないようリファクタリングをしています。


Merge pull request #34891 from gmcgibbon/ac_params_exists

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

ActiveRecord::Base#exists?の引数にActionController::Paramsインスタンスを指定出来るよう修正しています。


Document the ActionCable JS changes in the upgrade guide & release notes

rails guideのRuby on Rails 6.0 Release NotesUpgrading Ruby on Railsの修正です。

Action CableのJSがES2015に変換された事についての説明、及び、それにより発生したAPIのbreaking changesについての説明を追加しています。


Merge pull request #34931 from bogdanvlviv/add-mention-to-main-readme-about-new-libraries

README.mdrailties/RDOC_MAIN.rdocの修正です。

新たに追加されたAction MailboxとAction Textフレームワークについての説明を追加しています。


Remove unused Arel::Compatibility::Wheres

activerecord/lib/arel.rbactiverecord/lib/arel/compatibility/wheres.rbの修正です。

使用していないArel::Compatibility::Wheresクラスを削除しています。


Deprecate connection.visitor = ... which is not released internal usage

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

connection.visitor=をdepreacteにしています。

元々はvisitorをカスタマイズしたい時に使用する事を想定して提供していたようなのですが、現状その使用方法は正しく提供されていない、かつ、visitorをカスタマイズしたい場合はarel_visitorを使用すれば良いため、depreacteにしたとの事です。


Remove public prevent_writes writer

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

内部でだけ使用する変数の可視性がpublicになっていたのを修正しています。


Refs #28025 nullify *_type column on polymorphic associations on :nu… (#28078)

Active Recordの修正です。

polymorphic associations + dependent: :nullifyオプションを指定した場合に、_type columnがnullifyされないバグがあったのを修正しています。

rails commit log流し読み(2019/01/14)

2019/01/14分のコミットです。

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


Merge pull request #34845 from palkan/feature/action-cable-connection-testing

actioncable/lib/action_cable/connection.rbactioncable/lib/action_cable/connection/test_case.rbの修正です。

ActionCableのconnectionのテストの為のActionCable::Connection::TestCaseクラスを追加しています。

使用例。

class ApplicationCable::Connection < ActionCable::Connection::Base
  identified_by :user_id

  def connect
    self.user_id = request.params[:user_id] || cookies.signed[:user_id]
    reject_unauthorized_connection if user_id.nil?
  end

  def disconnect
    ActionCable.server.broadcast "users_presence", { id: user_id, event: "left" }
  end
end

class ApplicationCable::ConnectionTest < ActionCable::Connection::TestCase
  def test_connects_with_params
    # Simulate a connection opening
    connect params: { user_id: 42 }

    assert_equal connection.user_id, "42"
  end

  def test_connects_with_cookies
    # the same API as for integrations tests
    cookies.signed[:user_id] = 42

    # just call connect without any arguments
    connect

    assert_equal connection.user_id, "42"
  end

  def test_reject_connection
    assert_reject_connection { connect }
  end
end

Merge actioncable/README.md to the Action Cable Overview guide [ci skip]

actioncable/README.mdrails guideのAction Cable Overviewの修正です。

READMEにのみあったコンテンツをguideに移行、及び、重複している内容の削除を行い、READMEにはguideへのリンクをおくよう修正しています。

内容の重複があったのと、コンテンツの更新漏れ(guideは更新したがREADMEの更新が行われなかった)等があった為。


Fix "Action Cable Overview" guide [ci skip]

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

channel generatorが生成するファイルのパス名に誤りがあったのを修正しています。


Update Action Cable connection testing.

actioncable/lib/action_cable/connection/test_case.rbactioncable/test/connection/test_case_test.rbの修正です。

Action Cable connection testingのリファクタリングとして、不要な処理を削除、docのフォーマット・言い回しを修正、不足していたテストの追加、等を行っています。