activerecord-sqlserver-adapter 5.2.0 → 6.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (152) hide show
  1. checksums.yaml +4 -4
  2. data/.editorconfig +9 -0
  3. data/.github/issue_template.md +23 -0
  4. data/.gitignore +1 -0
  5. data/.rubocop.yml +29 -0
  6. data/.travis.yml +6 -8
  7. data/CHANGELOG.md +46 -11
  8. data/{Dockerfile → Dockerfile.ci} +2 -2
  9. data/Gemfile +48 -41
  10. data/Guardfile +9 -8
  11. data/README.md +9 -37
  12. data/RUNNING_UNIT_TESTS.md +3 -0
  13. data/Rakefile +14 -16
  14. data/VERSION +1 -1
  15. data/activerecord-sqlserver-adapter.gemspec +25 -14
  16. data/appveyor.yml +24 -17
  17. data/docker-compose.ci.yml +7 -5
  18. data/guides/RELEASING.md +11 -0
  19. data/lib/active_record/connection_adapters/sqlserver/core_ext/active_record.rb +2 -4
  20. data/lib/active_record/connection_adapters/sqlserver/core_ext/attribute_methods.rb +3 -4
  21. data/lib/active_record/connection_adapters/sqlserver/core_ext/calculations.rb +22 -2
  22. data/lib/active_record/connection_adapters/sqlserver/core_ext/explain.rb +3 -3
  23. data/lib/active_record/connection_adapters/sqlserver/core_ext/explain_subscriber.rb +2 -0
  24. data/lib/active_record/connection_adapters/sqlserver/core_ext/finder_methods.rb +44 -0
  25. data/lib/active_record/connection_adapters/sqlserver/core_ext/preloader.rb +36 -0
  26. data/lib/active_record/connection_adapters/sqlserver/core_ext/query_methods.rb +28 -0
  27. data/lib/active_record/connection_adapters/sqlserver/database_limits.rb +9 -0
  28. data/lib/active_record/connection_adapters/sqlserver/database_statements.rb +88 -44
  29. data/lib/active_record/connection_adapters/sqlserver/database_tasks.rb +10 -12
  30. data/lib/active_record/connection_adapters/sqlserver/errors.rb +2 -3
  31. data/lib/active_record/connection_adapters/sqlserver/quoting.rb +46 -8
  32. data/lib/active_record/connection_adapters/sqlserver/schema_creation.rb +16 -5
  33. data/lib/active_record/connection_adapters/sqlserver/schema_dumper.rb +9 -7
  34. data/lib/active_record/connection_adapters/sqlserver/schema_statements.rb +197 -165
  35. data/lib/active_record/connection_adapters/sqlserver/showplan.rb +8 -8
  36. data/lib/active_record/connection_adapters/sqlserver/showplan/printer_table.rb +4 -2
  37. data/lib/active_record/connection_adapters/sqlserver/showplan/printer_xml.rb +3 -1
  38. data/lib/active_record/connection_adapters/sqlserver/sql_type_metadata.rb +2 -2
  39. data/lib/active_record/connection_adapters/sqlserver/table_definition.rb +43 -44
  40. data/lib/active_record/connection_adapters/sqlserver/transaction.rb +7 -9
  41. data/lib/active_record/connection_adapters/sqlserver/type.rb +37 -35
  42. data/lib/active_record/connection_adapters/sqlserver/type/big_integer.rb +3 -3
  43. data/lib/active_record/connection_adapters/sqlserver/type/binary.rb +5 -4
  44. data/lib/active_record/connection_adapters/sqlserver/type/boolean.rb +3 -3
  45. data/lib/active_record/connection_adapters/sqlserver/type/char.rb +7 -4
  46. data/lib/active_record/connection_adapters/sqlserver/type/data.rb +2 -2
  47. data/lib/active_record/connection_adapters/sqlserver/type/date.rb +4 -3
  48. data/lib/active_record/connection_adapters/sqlserver/type/datetime.rb +8 -8
  49. data/lib/active_record/connection_adapters/sqlserver/type/datetime2.rb +2 -2
  50. data/lib/active_record/connection_adapters/sqlserver/type/datetimeoffset.rb +2 -2
  51. data/lib/active_record/connection_adapters/sqlserver/type/decimal.rb +5 -4
  52. data/lib/active_record/connection_adapters/sqlserver/type/float.rb +3 -3
  53. data/lib/active_record/connection_adapters/sqlserver/type/integer.rb +3 -3
  54. data/lib/active_record/connection_adapters/sqlserver/type/json.rb +2 -1
  55. data/lib/active_record/connection_adapters/sqlserver/type/money.rb +4 -4
  56. data/lib/active_record/connection_adapters/sqlserver/type/real.rb +3 -3
  57. data/lib/active_record/connection_adapters/sqlserver/type/small_integer.rb +3 -3
  58. data/lib/active_record/connection_adapters/sqlserver/type/small_money.rb +4 -4
  59. data/lib/active_record/connection_adapters/sqlserver/type/smalldatetime.rb +3 -3
  60. data/lib/active_record/connection_adapters/sqlserver/type/string.rb +2 -2
  61. data/lib/active_record/connection_adapters/sqlserver/type/text.rb +3 -3
  62. data/lib/active_record/connection_adapters/sqlserver/type/time.rb +6 -6
  63. data/lib/active_record/connection_adapters/sqlserver/type/time_value_fractional.rb +8 -9
  64. data/lib/active_record/connection_adapters/sqlserver/type/timestamp.rb +3 -3
  65. data/lib/active_record/connection_adapters/sqlserver/type/tiny_integer.rb +3 -3
  66. data/lib/active_record/connection_adapters/sqlserver/type/unicode_char.rb +5 -4
  67. data/lib/active_record/connection_adapters/sqlserver/type/unicode_string.rb +2 -2
  68. data/lib/active_record/connection_adapters/sqlserver/type/unicode_text.rb +3 -3
  69. data/lib/active_record/connection_adapters/sqlserver/type/unicode_varchar.rb +6 -5
  70. data/lib/active_record/connection_adapters/sqlserver/type/unicode_varchar_max.rb +4 -4
  71. data/lib/active_record/connection_adapters/sqlserver/type/uuid.rb +4 -3
  72. data/lib/active_record/connection_adapters/sqlserver/type/varbinary.rb +6 -5
  73. data/lib/active_record/connection_adapters/sqlserver/type/varbinary_max.rb +4 -4
  74. data/lib/active_record/connection_adapters/sqlserver/type/varchar.rb +6 -5
  75. data/lib/active_record/connection_adapters/sqlserver/type/varchar_max.rb +4 -4
  76. data/lib/active_record/connection_adapters/sqlserver/utils.rb +10 -11
  77. data/lib/active_record/connection_adapters/sqlserver/version.rb +2 -2
  78. data/lib/active_record/connection_adapters/sqlserver_adapter.rb +132 -92
  79. data/lib/active_record/connection_adapters/sqlserver_column.rb +9 -5
  80. data/lib/active_record/sqlserver_base.rb +9 -1
  81. data/lib/active_record/tasks/sqlserver_database_tasks.rb +28 -32
  82. data/lib/activerecord-sqlserver-adapter.rb +3 -1
  83. data/lib/arel/visitors/sqlserver.rb +58 -24
  84. data/lib/arel_sqlserver.rb +4 -2
  85. data/test/appveyor/dbsetup.ps1 +4 -4
  86. data/test/cases/adapter_test_sqlserver.rb +223 -180
  87. data/test/cases/change_column_null_test_sqlserver.rb +17 -15
  88. data/test/cases/coerced_tests.rb +654 -360
  89. data/test/cases/column_test_sqlserver.rb +635 -604
  90. data/test/cases/connection_test_sqlserver.rb +18 -21
  91. data/test/cases/execute_procedure_test_sqlserver.rb +20 -20
  92. data/test/cases/fetch_test_sqlserver.rb +17 -23
  93. data/test/cases/fully_qualified_identifier_test_sqlserver.rb +15 -19
  94. data/test/cases/helper_sqlserver.rb +20 -15
  95. data/test/cases/in_clause_test_sqlserver.rb +36 -0
  96. data/test/cases/index_test_sqlserver.rb +15 -15
  97. data/test/cases/json_test_sqlserver.rb +25 -25
  98. data/test/cases/migration_test_sqlserver.rb +30 -26
  99. data/test/cases/order_test_sqlserver.rb +53 -54
  100. data/test/cases/pessimistic_locking_test_sqlserver.rb +31 -37
  101. data/test/cases/rake_test_sqlserver.rb +44 -56
  102. data/test/cases/schema_dumper_test_sqlserver.rb +117 -112
  103. data/test/cases/schema_test_sqlserver.rb +20 -26
  104. data/test/cases/scratchpad_test_sqlserver.rb +4 -4
  105. data/test/cases/showplan_test_sqlserver.rb +32 -39
  106. data/test/cases/specific_schema_test_sqlserver.rb +75 -72
  107. data/test/cases/transaction_test_sqlserver.rb +27 -29
  108. data/test/cases/trigger_test_sqlserver.rb +18 -17
  109. data/test/cases/utils_test_sqlserver.rb +78 -78
  110. data/test/cases/uuid_test_sqlserver.rb +19 -20
  111. data/test/debug.rb +8 -6
  112. data/test/migrations/create_clients_and_change_column_null.rb +3 -1
  113. data/test/migrations/transaction_table/1_table_will_never_be_created.rb +4 -4
  114. data/test/models/sqlserver/booking.rb +3 -1
  115. data/test/models/sqlserver/customers_view.rb +3 -1
  116. data/test/models/sqlserver/datatype.rb +2 -0
  117. data/test/models/sqlserver/datatype_migration.rb +2 -0
  118. data/test/models/sqlserver/dollar_table_name.rb +3 -1
  119. data/test/models/sqlserver/edge_schema.rb +3 -3
  120. data/test/models/sqlserver/fk_has_fk.rb +3 -1
  121. data/test/models/sqlserver/fk_has_pk.rb +3 -1
  122. data/test/models/sqlserver/natural_pk_data.rb +4 -2
  123. data/test/models/sqlserver/natural_pk_int_data.rb +3 -1
  124. data/test/models/sqlserver/no_pk_data.rb +3 -1
  125. data/test/models/sqlserver/object_default.rb +3 -1
  126. data/test/models/sqlserver/quoted_table.rb +4 -2
  127. data/test/models/sqlserver/quoted_view_1.rb +3 -1
  128. data/test/models/sqlserver/quoted_view_2.rb +3 -1
  129. data/test/models/sqlserver/sst_memory.rb +3 -1
  130. data/test/models/sqlserver/string_default.rb +3 -1
  131. data/test/models/sqlserver/string_defaults_big_view.rb +3 -1
  132. data/test/models/sqlserver/string_defaults_view.rb +3 -1
  133. data/test/models/sqlserver/tinyint_pk.rb +3 -1
  134. data/test/models/sqlserver/trigger.rb +4 -2
  135. data/test/models/sqlserver/trigger_history.rb +3 -1
  136. data/test/models/sqlserver/upper.rb +3 -1
  137. data/test/models/sqlserver/uppered.rb +3 -1
  138. data/test/models/sqlserver/uuid.rb +3 -1
  139. data/test/schema/datatypes/2012.sql +1 -0
  140. data/test/schema/sqlserver_specific_schema.rb +31 -21
  141. data/test/support/coerceable_test_sqlserver.rb +15 -9
  142. data/test/support/connection_reflection.rb +3 -2
  143. data/test/support/core_ext/query_cache.rb +4 -1
  144. data/test/support/load_schema_sqlserver.rb +5 -5
  145. data/test/support/minitest_sqlserver.rb +3 -1
  146. data/test/support/paths_sqlserver.rb +11 -11
  147. data/test/support/rake_helpers.rb +13 -10
  148. data/test/support/sql_counter_sqlserver.rb +3 -4
  149. data/test/support/test_in_memory_oltp.rb +9 -7
  150. metadata +23 -13
  151. data/BACKERS.md +0 -32
  152. data/circle.yml +0 -38
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a148546b3f7d4e6734c8c8a7d834c242a7e1cec5344601d527f0c567cd6ad2e1
4
- data.tar.gz: 261bd21097b324059eb205960c73c1eb3f1c8d4cb9a6da7c91876d64d33f8381
3
+ metadata.gz: 0a7160737c2d7b0946054cdf6e9fd7c26144cef8f1bc66be90d0b51b7e9ba91f
4
+ data.tar.gz: 67ef07c9e35bd3f4735bed2303f3c63f58d09e1bacb7203339b365457c03d296
5
5
  SHA512:
6
- metadata.gz: ed85ad0fb65a3e32312c10db899037786549abe289e5cfeb519634d0a4e090a39c4c193b89e8285ba3d3a786c68e4c317440e94e217cb256a109c68b8497fb3d
7
- data.tar.gz: 49f1e9767c1c411e9a86ff8678bc5ac6470d31bead60dba3ca6039fd2fb2a8435ed4c1dda6e59b9745ba4c32ea46166c28907cfce84614aaa64aae080214db5b
6
+ metadata.gz: 599f09313bdd68db576bd7282174f04ac9c7e848b2d84b73857e5da9ca5a76427bd22a63bc717e90cd7293747701bdcbcbbc4159e7309bd5328a8be8baa5a245
7
+ data.tar.gz: dd54538736ba65dd12ee1ce87aae3da4e324888ca3a9b7a793cae34817451f66ec5b19e0e67882335057e7136f55f1871dad89553f8dfca0824ecdd6c4f34540
data/.editorconfig ADDED
@@ -0,0 +1,9 @@
1
+ root = true
2
+
3
+ [*]
4
+ indent_style = space
5
+ indent_size = 2
6
+ end_of_line = lf
7
+ charset = utf-8
8
+ trim_trailing_whitespace = true
9
+ insert_final_newline = true
@@ -0,0 +1,23 @@
1
+ ## Issue
2
+ <!-- Give a brief summary of the issue. -->
3
+
4
+ ## Expected behavior
5
+ <!-- Tell us what should happen -->
6
+
7
+ ## Actual behavior
8
+ <!-- Tell us what happens instead -->
9
+
10
+ ## How to reproduce
11
+ <!-- See https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/wiki/How-to-report-a-bug -->
12
+
13
+ ## Details
14
+
15
+ - **Rails version**: `x.x.x`
16
+ - **SQL Server adapter version**: `x.x.x`
17
+ - **TinyTDS version**: `x.x.x`
18
+ - **FreeTDS details**:
19
+
20
+ ```
21
+ run `tsql -C` and paste here the output.
22
+ ```
23
+
data/.gitignore CHANGED
@@ -3,6 +3,7 @@ debug.log
3
3
  .DS_Store
4
4
  pkg/
5
5
  doc/
6
+ db/
6
7
  *.gem
7
8
  .bundle
8
9
  Gemfile.lock
data/.rubocop.yml ADDED
@@ -0,0 +1,29 @@
1
+ AllCops:
2
+ TargetRubyVersion: 2.5
3
+
4
+ Layout/LineLength:
5
+ Max: 120
6
+
7
+ Naming/AccessorMethodName:
8
+ Enabled: false
9
+
10
+ Naming/FileName:
11
+ Exclude:
12
+ - lib/activerecord-sqlserver-adapter.rb
13
+
14
+ Naming/MethodName:
15
+ IgnoredPatterns:
16
+ - visit_.*
17
+ - primary_Key_From_Table
18
+ - table_From_Statement
19
+ - distinct_One_As_One_Is_So_Not_Fetch
20
+ - make_Fetch_Possible_And_Deterministic
21
+
22
+ Naming/MethodParameterName:
23
+ Enabled: false
24
+
25
+ Naming/PredicateName:
26
+ Enabled: false
27
+
28
+ Style/StringLiterals:
29
+ EnforcedStyle: double_quotes
data/.travis.yml CHANGED
@@ -15,11 +15,9 @@ script:
15
15
  - docker-compose run ci
16
16
  matrix:
17
17
  include:
18
- - name: 2.3.8
19
- env: TARGET_VERSION=2.3.8
20
- - name: 2.4.5
21
- env: TARGET_VERSION=2.4.5
22
- - name: 2.5.3
23
- env: TARGET_VERSION=2.5.3
24
- - name: 2.6.0
25
- env: TARGET_VERSION=2.6.0
18
+ - name: 2.5.8
19
+ env: TARGET_VERSION=2.5.8
20
+ - name: 2.6.6
21
+ env: TARGET_VERSION=2.6.6
22
+ - name: 2.7.1
23
+ env: TARGET_VERSION=2.7.1
data/CHANGELOG.md CHANGED
@@ -1,25 +1,60 @@
1
- ## v5.2.0
1
+ ## v6.0.1
2
2
 
3
- - #686 sql_for_insert set table name in case when pk is not nil
3
+ #### Fixed
4
+
5
+ - [#851](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/851) Updated 'column_definitions_sql' to ensure that only primary key key constraints are queried for
6
+
7
+ ## v6.0.0
8
+
9
+ **No Changes**
4
10
 
5
- ## v5.2.0.rc2
11
+ ## v6.0.0.rc2
6
12
 
7
13
  #### Fixed
8
14
 
9
- - #681 change_column_null should not clear other column attributes. Fixes #582.
10
- - #684 Fix explain with array conditions. Fixes #673.
15
+ - [#639](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/639) Primary key should be lowercase if schema forced to lowercase
16
+ - [#720](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/720) quoted_date doesn't work for Type::DateTime
11
17
 
12
- ## v5.2.0.rc1
18
+ #### Changed
19
+
20
+ - [#826](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/826) Rubocop: Enable Style/StringLiterals cop
21
+ - [#827](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/827) Rubocop: Enable Layout/EmptyLinesAroundClassBody cop
22
+ - [#828](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/828) Rubocop: Enable Layout/EmptyLines cop
23
+ - [#829](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/829) Rubocop: Enable Layout/Layout/EmptyLinesAround* cops
24
+ - [#830](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/830) Rubocop: Enable Layout/IndentationWidth and Layout/TrailingWhitespace cops
25
+ - [#831](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/831) Rubocop: Enable Spacing cops
26
+ - [#832](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/832) Rubocop: Enable Bundler cops
27
+ - [#833](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/833) Rubocop: Enable Layout/* cops
28
+ - [#834](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/834) Rubocop: Enable Lint/UselessAssignment cop
29
+ - [#835](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/835) Rubocop: Configure Naming cops
30
+
31
+ ## v6.0.0.rc1
13
32
 
14
33
  #### Fixed
15
34
 
16
- - #638 Don't disable referential integrity for the same table twice.
17
- - #646 Make String equality check work for Type::Data values. Fixes #645.
18
- - #671 Fix tinyint columns schema migration. Fixes #670.
35
+ - [#690](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/690) Rails 6 support
36
+ - [#805](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/805) Rails 6: Fix database tasks tests for SQL Server
37
+ - [#807](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/807) Rails 6: Skip binary fixtures test on Windows
38
+ - [#809](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/809) Rails 6: Coerce reaper test using fork
39
+ - [#810](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/810) Rails 6: Fix randomly failing tests due to schema load
40
+ - [#812](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/812) Rails 6: Coerce ReloadModelsTest test on Windows
41
+ - [#818](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/818) Handle false return by TinyTDS if connection fails and fixed CI
42
+ - [#819](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/819) Fix Ruby 2.7 kwargs warnings
43
+ - [#825](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/825) Adjust error message when connection is dead
19
44
 
20
45
  #### Changed
21
46
 
22
- - #642 Added with (nolock) hint to information_schema.views.
47
+ - [#716](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/716) Translate the connection timed out error
48
+ - [#763](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/763) Refactor columns introspection query to make it faster
49
+ - [#783](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/783) Update test matrix
50
+ - [#820](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/820) Enable frozen strings for tests
51
+ - [#821](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/821) Enable frozen strings - part 1
52
+ - [#822](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/822) Enable frozen strings - part 2
53
+ - [#823](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/823) Enable frozen strings - final
54
+ - [#824](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/824) Tidy up Gemfile
55
+
56
+ #### Added
23
57
 
58
+ - [#726](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/726) How to Develop ActiveRecord SQL Server Adapter with Pre-Installed MS SQL
24
59
 
25
- Please check [5-1-stable](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/blob/5-1-stable/CHANGELOG.md) for previous changes.
60
+ Please check [5-2-stable](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/blob/5-2-stable/CHANGELOG.md) for previous changes.
@@ -1,6 +1,6 @@
1
- ARG TARGET_VERSION=2.5.3
1
+ ARG TARGET_VERSION=2.6.3
2
2
 
3
- FROM wpolicarpo/activerecord-sqlserver-adapter:${TARGET_VERSION}
3
+ FROM railssqlserver/activerecord-sqlserver-adapter:${TARGET_VERSION}
4
4
 
5
5
  ENV WORKDIR /activerecord-sqlserver-adapter
6
6
 
data/Gemfile CHANGED
@@ -1,62 +1,69 @@
1
- require 'openssl'
2
- source 'https://rubygems.org'
3
- gemspec
1
+ # frozen_string_literal: true
4
2
 
5
- gem 'sqlite3', '~> 1.3.6'
6
- gem 'bcrypt'
7
- gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
3
+ source "https://rubygems.org"
8
4
 
9
- if RbConfig::CONFIG["host_os"] =~ /darwin/
10
- gem 'terminal-notifier-guard'
11
- end
5
+ git_source(:github) { |repo| "https://github.com/#{repo}.git" }
6
+
7
+ gemspec
12
8
 
13
- if ENV['RAILS_SOURCE']
14
- gemspec path: ENV['RAILS_SOURCE']
9
+ gem "bcrypt"
10
+ gem "pg", ">= 0.18.0"
11
+ gem "sqlite3", "~> 1.4"
12
+ gem "tzinfo-data", platforms: [:mingw, :mswin, :x64_mingw, :jruby]
13
+
14
+ if ENV["RAILS_SOURCE"]
15
+ gemspec path: ENV["RAILS_SOURCE"]
15
16
  else
16
- # Need to get rails source beacause the gem doesn't include tests
17
- version = ENV['RAILS_VERSION'] || begin
18
- require 'net/http'
19
- require 'yaml'
20
- spec = eval(File.read('activerecord-sqlserver-adapter.gemspec'))
21
- ver = spec.dependencies.detect{ |d|d.name == 'activerecord' }.requirement.requirements.first.last.version
22
- major, minor, tiny, pre = ver.split('.')
23
- if !pre
24
- uri = URI.parse "https://rubygems.org/api/v1/versions/activerecord.yaml"
17
+ # Need to get rails source because the gem doesn't include tests
18
+ version = ENV["RAILS_VERSION"] || begin
19
+ require "openssl"
20
+ require "net/http"
21
+ require "yaml"
22
+
23
+ spec = eval(File.read("activerecord-sqlserver-adapter.gemspec"))
24
+ ver = spec.dependencies.detect { |d| d.name == "activerecord" }.requirement.requirements.first.last.version
25
+ major, minor, _tiny, pre = ver.split(".")
26
+
27
+ if pre
28
+ ver
29
+ else
30
+ uri = URI.parse("https://rubygems.org/api/v1/versions/activerecord.yaml")
25
31
  http = Net::HTTP.new(uri.host, uri.port)
26
32
  http.use_ssl = true
27
33
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE
28
- YAML.load(http.request(Net::HTTP::Get.new(uri.request_uri)).body).select do |data|
29
- a, b, c = data['number'].split('.')
30
- !data['prerelease'] && major == a && (minor.nil? || minor == b)
31
- end.first['number']
32
- else
33
- ver
34
+ YAML.load(http.request(Net::HTTP::Get.new(uri.request_uri)).body).find do |data|
35
+ a, b, = data["number"].split(".")
36
+ !data["prerelease"] && major == a && (minor.nil? || minor == b)
37
+ end["number"]
34
38
  end
35
39
  end
36
- gem 'rails', git: "git://github.com/rails/rails.git", tag: "v#{version}"
37
- end
38
-
39
- if ENV['AREL']
40
- gem 'arel', path: ENV['AREL']
40
+ gem "rails", github: "rails/rails", tag: "v#{version}"
41
41
  end
42
42
 
43
+ # rubocop:disable Bundler/DuplicatedGem
43
44
  group :tinytds do
44
- if ENV['TINYTDS_SOURCE']
45
- gem 'tiny_tds', path: ENV['TINYTDS_SOURCE']
46
- elsif ENV['TINYTDS_VERSION']
47
- gem 'tiny_tds', ENV['TINYTDS_VERSION']
45
+ if ENV["TINYTDS_SOURCE"]
46
+ gem "tiny_tds", path: ENV["TINYTDS_SOURCE"]
47
+ elsif ENV["TINYTDS_VERSION"]
48
+ gem "tiny_tds", ENV["TINYTDS_VERSION"]
48
49
  else
49
- gem 'tiny_tds'
50
+ gem "tiny_tds"
50
51
  end
51
52
  end
53
+ # rubocop:enable Bundler/DuplicatedGem
52
54
 
53
55
  group :development do
54
- gem 'byebug'
55
- gem 'mocha'
56
- gem 'minitest-spec-rails'
56
+ gem "minitest-spec-rails"
57
+ gem "mocha"
58
+ gem "pry-byebug", platform: [:mri, :mingw, :x64_mingw]
57
59
  end
58
60
 
59
61
  group :guard do
60
- gem 'guard'
61
- gem 'guard-minitest'
62
+ gem "guard"
63
+ gem "guard-minitest"
64
+ gem "terminal-notifier-guard" if RbConfig::CONFIG["host_os"] =~ /darwin/
65
+ end
66
+
67
+ group :rubocop do
68
+ gem "rubocop", require: false
62
69
  end
data/Guardfile CHANGED
@@ -1,29 +1,30 @@
1
+ # frozen_string_literal: true
1
2
 
2
- require_relative 'test/support/paths_sqlserver'
3
+ require_relative "test/support/paths_sqlserver"
3
4
 
4
5
  clearing :on
5
6
  notification :terminal_notifier if defined?(TerminalNotifier)
6
7
  ignore %r{debug\.log}
7
8
 
8
- ar_lib = File.join ARTest::SQLServer.root_activerecord, 'lib'
9
- ar_test = File.join ARTest::SQLServer.root_activerecord, 'test'
9
+ ar_lib = File.join ARTest::SQLServer.root_activerecord, "lib"
10
+ ar_test = File.join ARTest::SQLServer.root_activerecord, "test"
10
11
 
11
12
  guard :minitest, {
12
13
  all_on_start: false,
13
14
  autorun: false,
14
- include: ['lib', 'test', ar_lib, ar_test],
15
- test_folders: ['test'],
15
+ include: ["lib", "test", ar_lib, ar_test],
16
+ test_folders: ["test"],
16
17
  test_file_patterns: ["*_test.rb", "*_test_sqlserver.rb"]
17
18
  } do
18
19
  # Our project watchers.
19
- if ENV['TEST_FILES']
20
- ENV['TEST_FILES'].split(',').map(&:strip).each do |file|
20
+ if ENV["TEST_FILES"]
21
+ ENV["TEST_FILES"].split(",").map(&:strip).each do |file|
21
22
  watch(%r{.*}) { file }
22
23
  end
23
24
  else
24
25
  watch(%r{^test/cases/\w+_test_sqlserver\.rb$})
25
26
  watch(%r{^test/cases/coerced_tests\.rb$}) { "test/cases/coerced_tests.rb" }
26
27
  watch(%r{^lib/active_record/connection_adapters/sqlserver/([^/]+)\.rb$}) { |m| "test/cases/#{m[1]}_test_sqlserver.rb" }
27
- watch(%r{^test/cases/helper_sqlserver\.rb$}) { 'test' }
28
+ watch(%r{^test/cases/helper_sqlserver\.rb$}) { "test" }
28
29
  end
29
30
  end
data/README.md CHANGED
@@ -1,30 +1,23 @@
1
1
  # ActiveRecord SQL Server Adapter. For SQL Server 2012 And Higher.
2
2
 
3
3
  * [![TravisCI](https://travis-ci.org/rails-sqlserver/activerecord-sqlserver-adapter.svg?branch=master)](https://travis-ci.org/rails-sqlserver/activerecord-sqlserver-adapter) - TravisCI
4
- * [![CircleCI](https://circleci.com/gh/rails-sqlserver/activerecord-sqlserver-adapter/tree/master.svg?style=svg)](https://circleci.com/gh/rails-sqlserver/activerecord-sqlserver-adapter/tree/master) - CircleCI
5
4
  * [![Build Status](https://ci.appveyor.com/api/projects/status/mtgbx8f57vr7k2qa/branch/master?svg=true)](https://ci.appveyor.com/project/rails-sqlserver/activerecord-sqlserver-adapter/branch/master) - Appveyor
6
5
  * [![Gem Version](http://img.shields.io/gem/v/activerecord-sqlserver-adapter.svg)](https://rubygems.org/gems/activerecord-sqlserver-adapter) - Gem Version
7
- * [![Dependency Status](https://dependencyci.com/github/rails-sqlserver/activerecord-sqlserver-adapter/badge)](https://dependencyci.com/github/rails-sqlserver/activerecord-sqlserver-adapter) - Dependency Status
8
6
  * [![Gitter chat](https://img.shields.io/badge/%E2%8A%AA%20GITTER%20-JOIN%20CHAT%20%E2%86%92-brightgreen.svg?style=flat)](https://gitter.im/rails-sqlserver/activerecord-sqlserver-adapter) - Community
9
7
 
10
- ## Supporting TinyTDS/Adapter
11
-
12
- Both TinyTDS and the Rails SQL Server Adapter are MIT-licensed open source projects. Its ongoing development is made possible thanks to the support by these awesome [backers](https://github.com/rails-sqlserver/tiny_tds/blob/master/BACKERS.md). If you'd like to join them, check out our [Patreon Campaign](https://www.patreon.com/metaskills).
13
-
14
-
15
8
  ## About The Adapter
16
9
 
17
- The SQL Server adapter for ActiveRecord v5.2 using SQL Server 2012 or higher.
10
+ The SQL Server adapter for ActiveRecord v6.0 using SQL Server 2012 or higher.
18
11
 
19
- Interested in older versions? We follow a rational versioning policy that tracks Rails. That means that our 5.1.x version of the adapter is only for the latest 5.1 version of Rails. If you need the adapter for SQL Server 2008 or 2005, you are still in the right spot. Just install the latest 3.2.x to 4.1.x version of the adapter that matches your Rails version. We also have stable branches for each major/minor release of ActiveRecord.
12
+ Interested in older versions? We follow a rational versioning policy that tracks Rails. That means that our 5.2.x version of the adapter is only for the latest 5.2 version of Rails. If you need the adapter for SQL Server 2008 or 2005, you are still in the right spot. Just install the latest 3.2.x to 4.1.x version of the adapter that matches your Rails version. We also have stable branches for each major/minor release of ActiveRecord.
20
13
 
21
14
  #### Native Data Type Support
22
15
 
23
16
  We support every data type supported by FreeTDS. All simplified Rails types in migrations will coorespond to a matching SQL Server national (unicode) data type. Always check the `initialize_native_database_types` [(here)](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/blob/master/lib/active_record/connection_adapters/sqlserver/schema_statements.rb) for an updated list.
24
17
 
25
- The following types (date, datetime2, datetimeoffset, time) all require TDS version 7.3 with TinyTDS. We recommend using FreeTDS 1.0 or higher which default to using `TDSVER` to "7.3". The adapter also sets TinyTDS's `tds_version` to this as well if non is specified.
18
+ The following types (`date`, `datetime2`, `datetimeoffset`, `time`) all require TDS version `7.3` with TinyTDS. We recommend using FreeTDS 1.0 or higher which default to using `TDSVER` to `7.3`. The adapter also sets TinyTDS's `tds_version` to this as well if non is specified.
26
19
 
27
- The Rails v5 adapter supports ActiveRecord's `datetime_with_precision` setting. This means that passing `:precision` to a datetime column is supported. Using a pecision with the `:datetime` type will signal the adapter to use the `datetime2` type under the hood.
20
+ The Rails v5 adapter supports ActiveRecord's `datetime_with_precision` setting. This means that passing `:precision` to a datetime column is supported. Using a precision with the `:datetime` type will signal the adapter to use the `datetime2` type under the hood.
28
21
 
29
22
 
30
23
  #### Identity Inserts with Triggers
@@ -87,9 +80,9 @@ end
87
80
  Every class that sub classes ActiveRecord::Base will now have an execute_procedure class method to use. This method takes the name of the stored procedure which can be a string or symbol and any number of variables to pass to the procedure. Arguments will automatically be quoted per the connection's standards as normal. For example:
88
81
 
89
82
  ```ruby
90
- Account.execute_procedure :update_totals, 'admin', nil, true
83
+ Account.execute_procedure(:update_totals, 'admin', nil, true
91
84
  # Or with named parameters.
92
- Account.execute_procedure :update_totals, named: 'params'
85
+ Account.execute_procedure(:update_totals, named: 'params')
93
86
  ```
94
87
 
95
88
  #### Explain Support (SHOWPLAN)
@@ -126,7 +119,7 @@ ActiveRecord::ConnectionAdapters::SQLServerAdapter.showplan_option = 'SHOWPLAN_X
126
119
 
127
120
  ## Installation
128
121
 
129
- The adapter has no strict gem dependencies outside of ActiveRecord. You will have to pick a connection mode, the default is dblib which uses the TinyTDS gem. Just bundle the gem and the adapter will use it.
122
+ The adapter has no strict gem dependencies outside of `ActiveRecord`. You will have to pick a connection mode, the default is dblib which uses the `TinyTDS` gem. Just bundle the gem and the adapter will use it.
130
123
 
131
124
  ```ruby
132
125
  gem 'tiny_tds'
@@ -146,30 +139,9 @@ If you would like to contribute a feature or bugfix, thanks! To make sure your f
146
139
 
147
140
  Many many people have contributed. If you do not see your name here and it should be let us know. Also, many thanks go out to those that have pledged financial contributions.
148
141
 
149
-
150
- ## Contributors
151
-
152
- Up-to-date list of contributors: http://github.com/rails-sqlserver/activerecord-sqlserver-adapter/contributors
153
-
154
- * metaskills (Ken Collins)
155
- * Annaswims (Annaswims)
156
- * wbond (Will Bond)
157
- * Thirdshift (Garrett Hart)
158
- * h-lame (Murray Steele)
159
- * vegantech
160
- * cjheath (Clifford Heath)
161
- * fryguy (Jason Frey)
162
- * jrafanie (Joe Rafaniello)
163
- * nerdrew (Andrew Ryan)
164
- * snowblink (Jonathan Lim)
165
- * koppen (Jakob Skjerning)
166
- * ebryn (Erik Bryn)
167
- * adzap (Adam Meehan)
168
- * neomindryan (Ryan Findley)
169
- * jeremydurham (Jeremy Durham)
170
-
142
+ You can see an up-to-date list of contributors here: http://github.com/rails-sqlserver/activerecord-sqlserver-adapter/contributors
171
143
 
172
144
  ## License
173
145
 
174
- Copyright © 2008-2017. It is free software, and may be redistributed under the terms specified in the MIT-LICENSE file.
146
+ Copyright © 2008-2020. It is free software, and may be redistributed under the terms specified in the [MIT-LICENSE](MIT-LICENSE) file.
175
147
 
@@ -3,6 +3,9 @@
3
3
 
4
4
  This process is much easier than it has been before!
5
5
 
6
+ ## MS SQL SERVER
7
+
8
+ If you don't have easy access to MS SQL Server, you can set up a Vagrant/VirtualBox virtual machine with MS SQL Server. [Here's how](/https://github.com/rails-sqlserver/activerecord-sqlserver-adapter-dev-box).
6
9
 
7
10
  ## TL;DR
8
11
 
data/Rakefile CHANGED
@@ -1,37 +1,35 @@
1
- require 'bundler/gem_tasks'
2
- require 'rake/testtask'
3
- require_relative 'test/support/paths_sqlserver'
4
- require_relative 'test/support/rake_helpers'
1
+ # frozen_string_literal: true
5
2
 
6
- task test: ['test:dblib']
3
+ require "bundler/gem_tasks"
4
+ require "rake/testtask"
5
+ require_relative "test/support/paths_sqlserver"
6
+ require_relative "test/support/rake_helpers"
7
+
8
+ task test: ["test:dblib"]
7
9
  task default: [:test]
8
10
 
9
11
  namespace :test do
10
-
11
12
  %w(dblib).each do |mode|
12
-
13
13
  Rake::TestTask.new(mode) do |t|
14
14
  t.libs = ARTest::SQLServer.test_load_paths
15
15
  t.test_files = test_files
16
- t.warning = !!ENV['WARNING']
16
+ t.warning = !!ENV["WARNING"]
17
17
  t.verbose = false
18
18
  end
19
-
20
19
  end
21
20
 
22
- task 'dblib:env' do
23
- ENV['ARCONN'] = 'dblib'
21
+ task "dblib:env" do
22
+ ENV["ARCONN"] = "dblib"
24
23
  end
25
-
26
24
  end
27
25
 
28
- task 'test:dblib' => 'test:dblib:env'
26
+ task "test:dblib" => "test:dblib:env"
29
27
 
30
28
  namespace :profile do
31
- ['dblib'].each do |mode|
29
+ ["dblib"].each do |mode|
32
30
  namespace mode.to_sym do
33
- Dir.glob('test/profile/*_profile_case.rb').sort.each do |test_file|
34
- profile_case = File.basename(test_file).sub('_profile_case.rb', '')
31
+ Dir.glob("test/profile/*_profile_case.rb").sort.each do |test_file|
32
+ profile_case = File.basename(test_file).sub("_profile_case.rb", "")
35
33
  Rake::TestTask.new(profile_case) do |t|
36
34
  t.libs = ARTest::SQLServer.test_load_paths
37
35
  t.test_files = [test_file]