週刊Railsウォッチ(20180615)TTY gemとHTTPClient gemは優秀、Rubyの謎フリップフロップ、ちょいゆるRubyスタイルガイドほか

こんにちは、hachi8833です。仙台疲れが今になって来たような気がしないでもありません。雨の降らない国に行きたいです。 晴耕雨読のウォッチ、いってみましょう。 各記事冒頭には⚓でパーマリンクを置いてあります: 社内やTwitterでの議論などにどうぞ ⚓Rails: 今週の改修(Rails公式ニュースより) 今回も主に公式のコミット情報からです。 ⚓TableDefinition#columnでカラム定義が重複すると例外を出すように修正 PR: Migrations will raise an exception if there are multiple column defin… by fedxgibson · Pull Request #33029 · rails/rails # activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb#L354 def column(name, type, options = {}) name = name.to_s type = type.to_sym if type options = options.dup – if @columns_hash[name] && @columns_hash[name].primary_key? – raise ArgumentError, “you can’t redefine the primary key column ‘#{name}’. To define a custom primary key, pass { id: false } to create_table.” + if @columns_hash[name] + if @columns_hash[name].primary_key? + raise ArgumentError, “you can’t redefine the primary key column ‘#{name}’. To define a custom primary key, pass { id: false } to create_table.” + else + raise ArgumentError, “you can’t define an already defined column ‘#{name}’.” + end end index_options = options.delete(:index) index(name, index_options.is_a?(Hash) ? index_options : {}) if index_options @columns_hash[name] = new_column_definition(name, type, options) self end つっつきボイス: 「TableDefinitionなんてのがあるのね」「マイグレーションがらみのようです」「create_tableでt.columnが呼ばれるときの重複チェックを今回修正したと: テストコードがわかりやすい↓」「普通やらかさないエラーだろうけどraiseはしとかないとね😋」 # activerecord/test/cases/migration/change_schema_test.rb#L199 + def test_create_table_raises_when_defining_existing_column + error = assert_raise(ArgumentError) do + connection.create_table :testings do |t| + t.column :testing_column, :string + t.column :testing_column, :integer + end + end + + assert_equal “you can’t define an already defined column … Continue reading 週刊Railsウォッチ(20180615)TTY gemとHTTPClient gemは優秀、Rubyの謎フリップフロップ、ちょいゆるRubyスタイルガイドほか