diff --git a/CHANGELOG.md b/CHANGELOG.md index cda67f6b5..ef6c03e98 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ - [#783](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/783) Update test matrix - [#820](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/820) Enable frozen strings for tests - [#821](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/821) Enable frozen strings - part 1 +- [#822](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/822) Enable frozen strings - part 2 #### Added diff --git a/lib/active_record/connection_adapters/sqlserver/type/big_integer.rb b/lib/active_record/connection_adapters/sqlserver/type/big_integer.rb index 18f1207af..083b736be 100644 --- a/lib/active_record/connection_adapters/sqlserver/type/big_integer.rb +++ b/lib/active_record/connection_adapters/sqlserver/type/big_integer.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module ActiveRecord module ConnectionAdapters module SQLServer @@ -5,7 +7,7 @@ module Type class BigInteger < Integer def sqlserver_type - 'bigint'.freeze + "bigint" end end diff --git a/lib/active_record/connection_adapters/sqlserver/type/binary.rb b/lib/active_record/connection_adapters/sqlserver/type/binary.rb index 06cb42b37..a700846a4 100644 --- a/lib/active_record/connection_adapters/sqlserver/type/binary.rb +++ b/lib/active_record/connection_adapters/sqlserver/type/binary.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module ActiveRecord module ConnectionAdapters module SQLServer @@ -9,8 +11,9 @@ def type end def sqlserver_type - 'binary'.tap do |type| - type << "(#{limit})" if limit + "binary".yield_self do |type| + type += "(#{limit})" if limit + type end end diff --git a/lib/active_record/connection_adapters/sqlserver/type/boolean.rb b/lib/active_record/connection_adapters/sqlserver/type/boolean.rb index e2b48e701..1b56ebc16 100644 --- a/lib/active_record/connection_adapters/sqlserver/type/boolean.rb +++ b/lib/active_record/connection_adapters/sqlserver/type/boolean.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module ActiveRecord module ConnectionAdapters module SQLServer @@ -5,7 +7,7 @@ module Type class Boolean < ActiveRecord::Type::Boolean def sqlserver_type - 'bit'.freeze + "bit" end end diff --git a/lib/active_record/connection_adapters/sqlserver/type/char.rb b/lib/active_record/connection_adapters/sqlserver/type/char.rb index 47fb3e0d6..96832ad52 100644 --- a/lib/active_record/connection_adapters/sqlserver/type/char.rb +++ b/lib/active_record/connection_adapters/sqlserver/type/char.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module ActiveRecord module ConnectionAdapters module SQLServer @@ -15,8 +17,9 @@ def serialize(value) end def sqlserver_type - 'char'.tap do |type| - type << "(#{limit})" if limit + "char".yield_self do |type| + type += "(#{limit})" if limit + type end end diff --git a/lib/active_record/connection_adapters/sqlserver/type/data.rb b/lib/active_record/connection_adapters/sqlserver/type/data.rb index 683e0f7c8..599b49ee7 100644 --- a/lib/active_record/connection_adapters/sqlserver/type/data.rb +++ b/lib/active_record/connection_adapters/sqlserver/type/data.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module ActiveRecord module ConnectionAdapters module SQLServer diff --git a/lib/active_record/connection_adapters/sqlserver/type/date.rb b/lib/active_record/connection_adapters/sqlserver/type/date.rb index 87fa8333a..845f2b6db 100644 --- a/lib/active_record/connection_adapters/sqlserver/type/date.rb +++ b/lib/active_record/connection_adapters/sqlserver/type/date.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module ActiveRecord module ConnectionAdapters module SQLServer @@ -5,7 +7,7 @@ module Type class Date < ActiveRecord::Type::Date def sqlserver_type - 'date'.freeze + 'date' end def serialize(value) diff --git a/lib/active_record/connection_adapters/sqlserver/type/datetime.rb b/lib/active_record/connection_adapters/sqlserver/type/datetime.rb index 700c99e82..59429cdc0 100644 --- a/lib/active_record/connection_adapters/sqlserver/type/datetime.rb +++ b/lib/active_record/connection_adapters/sqlserver/type/datetime.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module ActiveRecord module ConnectionAdapters module SQLServer @@ -7,16 +9,15 @@ class DateTime < ActiveRecord::Type::DateTime include TimeValueFractional def sqlserver_type - 'datetime'.freeze + "datetime" end def serialize(value) value = super return value unless value.acts_like?(:time) - datetime = value.to_s(:_sqlserver_datetime).tap do |v| - fraction = quote_fractional(value) - v << ".#{fraction}" - end + + datetime = "#{value.to_s(:_sqlserver_datetime)}.#{quote_fractional(value)}" + Data.new datetime, self end @@ -43,7 +44,7 @@ def fast_string_to_time(string) end def fast_string_to_time_format - "#{::Time::DATE_FORMATS[:_sqlserver_datetime]}.%N".freeze + "#{::Time::DATE_FORMATS[:_sqlserver_datetime]}.%N" end end end diff --git a/lib/active_record/connection_adapters/sqlserver/type/datetime2.rb b/lib/active_record/connection_adapters/sqlserver/type/datetime2.rb index 510e831c3..77ab42f22 100644 --- a/lib/active_record/connection_adapters/sqlserver/type/datetime2.rb +++ b/lib/active_record/connection_adapters/sqlserver/type/datetime2.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module ActiveRecord module ConnectionAdapters module SQLServer diff --git a/lib/active_record/connection_adapters/sqlserver/type/datetimeoffset.rb b/lib/active_record/connection_adapters/sqlserver/type/datetimeoffset.rb index 9564dadda..71f3d3529 100644 --- a/lib/active_record/connection_adapters/sqlserver/type/datetimeoffset.rb +++ b/lib/active_record/connection_adapters/sqlserver/type/datetimeoffset.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module ActiveRecord module ConnectionAdapters module SQLServer diff --git a/lib/active_record/connection_adapters/sqlserver/type/decimal.rb b/lib/active_record/connection_adapters/sqlserver/type/decimal.rb index 1383de37e..7bf421f71 100644 --- a/lib/active_record/connection_adapters/sqlserver/type/decimal.rb +++ b/lib/active_record/connection_adapters/sqlserver/type/decimal.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module ActiveRecord module ConnectionAdapters module SQLServer @@ -5,8 +7,9 @@ module Type class Decimal < ActiveRecord::Type::Decimal def sqlserver_type - 'decimal'.tap do |type| - type << "(#{precision.to_i},#{scale.to_i})" if precision || scale + "decimal".yield_self do |type| + type += "(#{precision.to_i},#{scale.to_i})" if precision || scale + type end end diff --git a/lib/active_record/connection_adapters/sqlserver/type/float.rb b/lib/active_record/connection_adapters/sqlserver/type/float.rb index d26433dd3..aecb7438d 100644 --- a/lib/active_record/connection_adapters/sqlserver/type/float.rb +++ b/lib/active_record/connection_adapters/sqlserver/type/float.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module ActiveRecord module ConnectionAdapters module SQLServer @@ -9,7 +11,7 @@ def type end def sqlserver_type - 'float'.freeze + "float" end end diff --git a/lib/active_record/connection_adapters/sqlserver/type/integer.rb b/lib/active_record/connection_adapters/sqlserver/type/integer.rb index 72f93e275..9b4d63725 100644 --- a/lib/active_record/connection_adapters/sqlserver/type/integer.rb +++ b/lib/active_record/connection_adapters/sqlserver/type/integer.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module ActiveRecord module ConnectionAdapters module SQLServer @@ -5,7 +7,7 @@ module Type class Integer < ActiveRecord::Type::Integer def sqlserver_type - 'int'.freeze + "int" end end diff --git a/lib/active_record/connection_adapters/sqlserver/type/json.rb b/lib/active_record/connection_adapters/sqlserver/type/json.rb index 403261b5b..d942cd3a1 100644 --- a/lib/active_record/connection_adapters/sqlserver/type/json.rb +++ b/lib/active_record/connection_adapters/sqlserver/type/json.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module ActiveRecord module ConnectionAdapters module SQLServer diff --git a/lib/active_record/connection_adapters/sqlserver/type/money.rb b/lib/active_record/connection_adapters/sqlserver/type/money.rb index 516971f41..2906859e3 100644 --- a/lib/active_record/connection_adapters/sqlserver/type/money.rb +++ b/lib/active_record/connection_adapters/sqlserver/type/money.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module ActiveRecord module ConnectionAdapters module SQLServer @@ -15,7 +17,7 @@ def type end def sqlserver_type - 'money'.freeze + "money" end end diff --git a/lib/active_record/connection_adapters/sqlserver/type/real.rb b/lib/active_record/connection_adapters/sqlserver/type/real.rb index c0c143c52..7a5a36922 100644 --- a/lib/active_record/connection_adapters/sqlserver/type/real.rb +++ b/lib/active_record/connection_adapters/sqlserver/type/real.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module ActiveRecord module ConnectionAdapters module SQLServer @@ -9,7 +11,7 @@ def type end def sqlserver_type - 'real'.freeze + "real" end end diff --git a/lib/active_record/connection_adapters/sqlserver/type/small_integer.rb b/lib/active_record/connection_adapters/sqlserver/type/small_integer.rb index ab2659455..1dff23244 100644 --- a/lib/active_record/connection_adapters/sqlserver/type/small_integer.rb +++ b/lib/active_record/connection_adapters/sqlserver/type/small_integer.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module ActiveRecord module ConnectionAdapters module SQLServer @@ -5,7 +7,7 @@ module Type class SmallInteger < Integer def sqlserver_type - 'smallint'.freeze + "smallint" end end diff --git a/lib/active_record/connection_adapters/sqlserver/type/small_money.rb b/lib/active_record/connection_adapters/sqlserver/type/small_money.rb index d4a2e2375..0ecfa00c8 100644 --- a/lib/active_record/connection_adapters/sqlserver/type/small_money.rb +++ b/lib/active_record/connection_adapters/sqlserver/type/small_money.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module ActiveRecord module ConnectionAdapters module SQLServer @@ -15,7 +17,7 @@ def type end def sqlserver_type - 'smallmoney'.freeze + "smallmoney" end end diff --git a/lib/active_record/connection_adapters/sqlserver/type/smalldatetime.rb b/lib/active_record/connection_adapters/sqlserver/type/smalldatetime.rb index 427809fcf..99dc70a8a 100644 --- a/lib/active_record/connection_adapters/sqlserver/type/smalldatetime.rb +++ b/lib/active_record/connection_adapters/sqlserver/type/smalldatetime.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module ActiveRecord module ConnectionAdapters module SQLServer @@ -9,7 +11,7 @@ def type end def sqlserver_type - 'smalldatetime'.freeze + "smalldatetime" end private diff --git a/lib/active_record/connection_adapters/sqlserver/type/string.rb b/lib/active_record/connection_adapters/sqlserver/type/string.rb index a1439f45b..110bcebde 100644 --- a/lib/active_record/connection_adapters/sqlserver/type/string.rb +++ b/lib/active_record/connection_adapters/sqlserver/type/string.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module ActiveRecord module ConnectionAdapters module SQLServer diff --git a/lib/active_record/connection_adapters/sqlserver/type/text.rb b/lib/active_record/connection_adapters/sqlserver/type/text.rb index 8d49ff731..087b8fb85 100644 --- a/lib/active_record/connection_adapters/sqlserver/type/text.rb +++ b/lib/active_record/connection_adapters/sqlserver/type/text.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module ActiveRecord module ConnectionAdapters module SQLServer @@ -9,7 +11,7 @@ def type end def sqlserver_type - 'text'.freeze + "text" end end diff --git a/lib/active_record/connection_adapters/sqlserver/type/time.rb b/lib/active_record/connection_adapters/sqlserver/type/time.rb index f8bc0dec8..38f2354c9 100644 --- a/lib/active_record/connection_adapters/sqlserver/type/time.rb +++ b/lib/active_record/connection_adapters/sqlserver/type/time.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module ActiveRecord module ConnectionAdapters module SQLServer @@ -9,10 +11,9 @@ class Time < ActiveRecord::Type::Time def serialize(value) value = super return value unless value.acts_like?(:time) - time = value.to_s(:_sqlserver_time).tap do |v| - fraction = quote_fractional(value) - v << ".#{fraction}" - end + + time = "#{value.to_s(:_sqlserver_time)}.#{quote_fractional(value)}" + Data.new time, self end diff --git a/lib/active_record/connection_adapters/sqlserver/type/time_value_fractional.rb b/lib/active_record/connection_adapters/sqlserver/type/time_value_fractional.rb index 412958795..aa0b0ed73 100644 --- a/lib/active_record/connection_adapters/sqlserver/type/time_value_fractional.rb +++ b/lib/active_record/connection_adapters/sqlserver/type/time_value_fractional.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module ActiveRecord module ConnectionAdapters module SQLServer diff --git a/lib/active_record/connection_adapters/sqlserver/type/timestamp.rb b/lib/active_record/connection_adapters/sqlserver/type/timestamp.rb index b0e38a827..15125e849 100644 --- a/lib/active_record/connection_adapters/sqlserver/type/timestamp.rb +++ b/lib/active_record/connection_adapters/sqlserver/type/timestamp.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module ActiveRecord module ConnectionAdapters module SQLServer @@ -9,7 +11,7 @@ def type end def sqlserver_type - 'timestamp'.freeze + "timestamp" end end diff --git a/lib/active_record/connection_adapters/sqlserver/type/tiny_integer.rb b/lib/active_record/connection_adapters/sqlserver/type/tiny_integer.rb index 739b51347..4370bc574 100644 --- a/lib/active_record/connection_adapters/sqlserver/type/tiny_integer.rb +++ b/lib/active_record/connection_adapters/sqlserver/type/tiny_integer.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module ActiveRecord module ConnectionAdapters module SQLServer @@ -5,7 +7,7 @@ module Type class TinyInteger < Integer def sqlserver_type - 'tinyint'.freeze + "tinyint" end private diff --git a/lib/active_record/connection_adapters/sqlserver/type/unicode_char.rb b/lib/active_record/connection_adapters/sqlserver/type/unicode_char.rb index 6934073e1..26ad415aa 100644 --- a/lib/active_record/connection_adapters/sqlserver/type/unicode_char.rb +++ b/lib/active_record/connection_adapters/sqlserver/type/unicode_char.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module ActiveRecord module ConnectionAdapters module SQLServer @@ -9,8 +11,9 @@ def type end def sqlserver_type - 'nchar'.tap do |type| - type << "(#{limit})" if limit + 'nchar'.yield_self do |type| + type += "(#{limit})" if limit + type end end diff --git a/lib/active_record/connection_adapters/sqlserver/type/unicode_string.rb b/lib/active_record/connection_adapters/sqlserver/type/unicode_string.rb index 351de8ec2..c2e376c89 100644 --- a/lib/active_record/connection_adapters/sqlserver/type/unicode_string.rb +++ b/lib/active_record/connection_adapters/sqlserver/type/unicode_string.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module ActiveRecord module ConnectionAdapters module SQLServer diff --git a/lib/active_record/connection_adapters/sqlserver/type/unicode_text.rb b/lib/active_record/connection_adapters/sqlserver/type/unicode_text.rb index c39e18a11..38139f2b7 100644 --- a/lib/active_record/connection_adapters/sqlserver/type/unicode_text.rb +++ b/lib/active_record/connection_adapters/sqlserver/type/unicode_text.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module ActiveRecord module ConnectionAdapters module SQLServer @@ -9,7 +11,7 @@ def type end def sqlserver_type - 'ntext'.freeze + "ntext" end end diff --git a/lib/active_record/connection_adapters/sqlserver/type/unicode_varchar.rb b/lib/active_record/connection_adapters/sqlserver/type/unicode_varchar.rb index 4378e61ea..a100b6baa 100644 --- a/lib/active_record/connection_adapters/sqlserver/type/unicode_varchar.rb +++ b/lib/active_record/connection_adapters/sqlserver/type/unicode_varchar.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module ActiveRecord module ConnectionAdapters module SQLServer @@ -14,8 +16,9 @@ def type end def sqlserver_type - 'nvarchar'.tap do |type| - type << "(#{limit})" if limit + "nvarchar".yield_self do |type| + type += "(#{limit})" if limit + type end end diff --git a/lib/active_record/connection_adapters/sqlserver/type/unicode_varchar_max.rb b/lib/active_record/connection_adapters/sqlserver/type/unicode_varchar_max.rb index f9cedeac3..160a1f80a 100644 --- a/lib/active_record/connection_adapters/sqlserver/type/unicode_varchar_max.rb +++ b/lib/active_record/connection_adapters/sqlserver/type/unicode_varchar_max.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module ActiveRecord module ConnectionAdapters module SQLServer @@ -14,7 +16,7 @@ def type end def sqlserver_type - 'nvarchar(max)'.freeze + "nvarchar(max)" end end diff --git a/lib/active_record/connection_adapters/sqlserver/type/uuid.rb b/lib/active_record/connection_adapters/sqlserver/type/uuid.rb index c5e479986..07b9682a7 100644 --- a/lib/active_record/connection_adapters/sqlserver/type/uuid.rb +++ b/lib/active_record/connection_adapters/sqlserver/type/uuid.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module ActiveRecord module ConnectionAdapters module SQLServer @@ -13,7 +15,7 @@ def type end def sqlserver_type - 'uniqueidentifier'.freeze + "uniqueidentifier" end def serialize(value) diff --git a/lib/active_record/connection_adapters/sqlserver/type/varbinary.rb b/lib/active_record/connection_adapters/sqlserver/type/varbinary.rb index 8e4e5571a..6ae0af9cd 100644 --- a/lib/active_record/connection_adapters/sqlserver/type/varbinary.rb +++ b/lib/active_record/connection_adapters/sqlserver/type/varbinary.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module ActiveRecord module ConnectionAdapters module SQLServer @@ -14,8 +16,9 @@ def type end def sqlserver_type - 'varbinary'.tap do |type| - type << "(#{limit})" if limit + 'varbinary'.yield_self do |type| + type += "(#{limit})" if limit + type end end diff --git a/lib/active_record/connection_adapters/sqlserver/type/varbinary_max.rb b/lib/active_record/connection_adapters/sqlserver/type/varbinary_max.rb index cb1832210..21476e544 100644 --- a/lib/active_record/connection_adapters/sqlserver/type/varbinary_max.rb +++ b/lib/active_record/connection_adapters/sqlserver/type/varbinary_max.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module ActiveRecord module ConnectionAdapters module SQLServer @@ -14,7 +16,7 @@ def type end def sqlserver_type - 'varbinary(max)'.freeze + "varbinary(max)" end end diff --git a/lib/active_record/connection_adapters/sqlserver/type/varchar.rb b/lib/active_record/connection_adapters/sqlserver/type/varchar.rb index a386ec49c..a19216696 100644 --- a/lib/active_record/connection_adapters/sqlserver/type/varchar.rb +++ b/lib/active_record/connection_adapters/sqlserver/type/varchar.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module ActiveRecord module ConnectionAdapters module SQLServer @@ -14,8 +16,9 @@ def type end def sqlserver_type - 'varchar'.tap do |type| - type << "(#{limit})" if limit + 'varchar'.yield_self do |type| + type += "(#{limit})" if limit + type end end diff --git a/lib/active_record/connection_adapters/sqlserver/type/varchar_max.rb b/lib/active_record/connection_adapters/sqlserver/type/varchar_max.rb index ecbb77a70..1582e500d 100644 --- a/lib/active_record/connection_adapters/sqlserver/type/varchar_max.rb +++ b/lib/active_record/connection_adapters/sqlserver/type/varchar_max.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module ActiveRecord module ConnectionAdapters module SQLServer @@ -14,7 +16,7 @@ def type end def sqlserver_type - 'varchar(max)'.freeze + "varchar(max)" end end