なるようになるブログ

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

rails commit log流し読み(2014/10/29)

2014/10/29分のコミットです。

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

actionpack/CHANGELOG.md

activerecord/CHANGELOG.md


Fix doc markup for NumberHelper [ci skip]

actionview/lib/action_view/helpers/number_helper.rbactivesupport/lib/active_support/number_helper.rbのdocの修正です。

不要な"*"があったのを削除しています。


Deprecate the only_path option on *_path helpers.

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

*_path ヘルパーメソッドonly_pathオプションを指定するのがdeprecateになりました。Rails 5で削除予定

そもそも、*_pathを使用している際に、only_pathオプションは要らない筈ですよねえ。


Mention only_path deprecation in release notes [ci skip]

guides/source/4_2_release_notes.mdの修正です。

上記対応をrelease noteに追記しています。


Typos in the deprecation message

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

上記*_pathの対応で出力されるdeprecation messageにタイポがあったのを修正しています。


Merge pull request #17039 from zv1n/add_prefix_delimiter

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

元々"_"決め打ちだったActiveJobのQueue名のデリミタを、configで指定出来るよう対応しています。

# config/application.rb
module YourApp
  class Application < Rails::Application
    config.active_job.queue_name_prefix = Rails.env
    config.active_job.queue_name_delimiter = '.'
  end
end
# app/jobs/guests_cleanup.rb
class GuestsCleanupJob < ActiveJob::Base
  queue_as :low_priority
  #....
end

上記の場合、productionでのqueue名は、production.low_priorityとなります。


Call value methods when merging relations, rather than accessing keys


Fix uninitialized ivar warning in tests

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

初期化していない変数を使用してwarningが出ていたのを対応しています。


Remove unneccessary default values from relation merger

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

merge_multi_valuesメソッドで、other.where_valuesother.bind_valuesnilの場合、空配列を設定するようにしていたのですが、それぞれ自動で空配列を返すので、nilのチェックは不要との事で削除しています。


let's warn with heredocs

warningの出力にStringを使用していた箇所を、heredoc + squishで置き換えています。

squish、知らなかったのですが、空白や改行コードの除去を行ってくれるメソッドなんですねえ。

%{ Multi-line
   string }.squish                   # => "Multi-line string"
" foo   bar    \n   \t   boo".squish # => "foo bar boo"

これにより、不要な"や"\"を削除出来たので、大分スッキリしましたねえ。


Implement #== for column

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

Column#==メソッドを追加していmす。


Implement hash equality on column

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

==メソッドエイリアスとしてeql?メソッドの追加、及びhashメソッドの追加を行っています。

def hash
  [self.class, name, default, cast_type, sql_type, null].hash
end

hash値をユニークにする為、ですかねえ。


💣

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

上記対応でコケてしまったテストを修正しています。


Add mysql and pg specific attributes to Column#== and hash

activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rbactiverecord/lib/active_record/connection_adapters/column.rbの修正です。

MySQL Adapterでは==メソッドで、collationstrictextraの値も見るよう修正しています。

また、Column#attributes_for_hashメソッドを追加し、hashの生成処理をそちらに移動しています。

def attributes_for_hash
  [self.class, name, default, cast_type, sql_type, null, default_function]
end

edit pass over all warnings

warningメッセージの整理を行っています。

  • 最初の文字を大文字に修正
  • メッセージの最後のピリオドを追加
  • "Rails 5.0"を"Rails 5"に統一
  • メソッド名とインラインコードにバッククォートの追加

:nodoc: for abstract_mysql_adapter

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

change_column_defaultメソッド:nodoc:を設定しています。


Added 'tzinfo-data' if we are using jruby

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

JRubyの場合に、tzinfo-dataを追加するよう修正しています。

Windowsで開発する際に必要なんですねえ、tzinfo-data


fix MySQL enum type lookup with values matching another type. Closes #17402.

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

MySQLenum型を使用している場合に、SchemaDumperenum型のカラムを正しく扱えず、stack level too deepが発生してしまう問題があったのを修正しています。


better example for tokenizer lambda [ci skip]

rails guideのActive Record Validationsの修正です。

tokenizerオプションのサンプルを修正しています。

-    tokenizer: lambda { |str| str.scan(/\w+/) },
+    tokenizer: lambda { |str| str.split(/\s+/) },

splitの方が、意味が解りやすいだろうとの事です。