diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 06a32fc..69ea8d3 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -22,13 +22,12 @@ jobs: ruby: - 2.7 - 2.6 - - 2.5 - - 2.4 - jruby gemfile: + - Rails-7_0 + - Rails-6_1 + - Rails-6_0 - Rails-5_2 - - Rails-5_1 - - Rails-5_0 backend: - sqlite3 - mysql @@ -37,6 +36,10 @@ jobs: # Allow test failures for some configurations - ruby: jruby allow-failures: true + exclude: + # Rails 7 depends on ruby 2.7 + - ruby: 2.6 + gemfile: Rails-7_0 env: # For Bundler control variables, refer to: @@ -78,7 +81,7 @@ jobs: username: root password: verysecret database: activeid_test - encoding: utf8mb4 + encoding: binary EOF - name: Run tests (with monkey patches) @@ -98,6 +101,8 @@ jobs: env: MYSQL_ROOT_PASSWORD: verysecret MYSQL_DATABASE: activeid_test + MARIADB_DEFAULT_CHARACTER_SET: binary + MARIADB_DEFAULT_COLLATE: binary options: >- --health-cmd="mysqladmin ping" --health-interval=7s diff --git a/.rubocop.yml b/.rubocop.yml index e150d76..811b553 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -4,6 +4,12 @@ inherit_from: - https://raw.githubusercontent.com/riboseinc/oss-guides/master/ci/rubocop.yml +# .rubocop.yml + +require: + - rubocop-performance + - rubocop-rails + AllCops: DisplayCopNames: false StyleGuideCopsOnly: false diff --git a/Gemfile b/Gemfile index f80dbeb..5bf137f 100644 --- a/Gemfile +++ b/Gemfile @@ -3,5 +3,9 @@ source "http://rubygems.org" # Specify your gem's dependencies in activeid.gemspec gemspec -gem "codecov", require: false, group: :test -gem "simplecov", require: false, group: :test +group :test do + gem "codecov", require: false + gem "rubocop-performance", require: false + gem "rubocop-rails", require: false + gem "simplecov", require: false +end diff --git a/activeid.gemspec b/activeid.gemspec index 91c71ab..bca2378 100644 --- a/activeid.gemspec +++ b/activeid.gemspec @@ -1,7 +1,7 @@ # -*- encoding: utf-8 -*- $:.push File.expand_path("../lib", __FILE__) -require "active_id/version" +require "activeid/version" Gem::Specification.new do |s| s.name = "activeid" @@ -34,9 +34,9 @@ Gem::Specification.new do |s| else s.add_development_dependency "mysql2" s.add_development_dependency "pg" - s.add_development_dependency "sqlite3", "~> 1.3.6" + s.add_development_dependency "sqlite3", "~> 1.4.0" end - s.add_runtime_dependency "activerecord", ">= 5.0", "< 6.0" + s.add_runtime_dependency "activerecord", ">= 5.2", "< 7.1" s.add_runtime_dependency "uuidtools" end diff --git a/examples/name_based_uuids.rb b/examples/name_based_uuids.rb index 9cb0d2a..7c57136 100644 --- a/examples/name_based_uuids.rb +++ b/examples/name_based_uuids.rb @@ -6,7 +6,7 @@ require "bundler/setup" Bundler.require :development -require "active_id" +require "activeid" require_relative "../spec/support/0_logger" require_relative "../spec/support/1_db_connection" diff --git a/examples/registering_active_record_type.rb b/examples/registering_active_record_type.rb index ef08a34..d7bfd55 100644 --- a/examples/registering_active_record_type.rb +++ b/examples/registering_active_record_type.rb @@ -9,7 +9,7 @@ require "bundler/setup" Bundler.require :development -require "active_id" +require "activeid" require_relative "../spec/support/0_logger" require_relative "../spec/support/1_db_connection" diff --git a/examples/storing_uuids_as_binaries.rb b/examples/storing_uuids_as_binaries.rb index 0168b52..b77b3e2 100644 --- a/examples/storing_uuids_as_binaries.rb +++ b/examples/storing_uuids_as_binaries.rb @@ -13,7 +13,7 @@ require "bundler/setup" Bundler.require :development -require "active_id" +require "activeid" require_relative "../spec/support/0_logger" require_relative "../spec/support/1_db_connection" diff --git a/examples/storing_uuids_as_strings.rb b/examples/storing_uuids_as_strings.rb index 7f7fc8e..b7db886 100644 --- a/examples/storing_uuids_as_strings.rb +++ b/examples/storing_uuids_as_strings.rb @@ -5,7 +5,7 @@ require "bundler/setup" Bundler.require :development -require "active_id" +require "activeid" require_relative "../spec/support/0_logger" require_relative "../spec/support/1_db_connection" diff --git a/examples/storing_uuids_natively.rb b/examples/storing_uuids_natively.rb index 1fe1d78..4d875e7 100644 --- a/examples/storing_uuids_natively.rb +++ b/examples/storing_uuids_natively.rb @@ -15,7 +15,7 @@ require "bundler/setup" Bundler.require :development -require "active_id" +require "activeid" require_relative "../spec/support/0_logger" require_relative "../spec/support/1_db_connection" diff --git a/examples/time_based_uuids.rb b/examples/time_based_uuids.rb index 6da1eb9..07681b8 100644 --- a/examples/time_based_uuids.rb +++ b/examples/time_based_uuids.rb @@ -7,7 +7,7 @@ require "bundler/setup" Bundler.require :development -require "active_id" +require "activeid" require_relative "../spec/support/0_logger" require_relative "../spec/support/1_db_connection" diff --git a/examples/using_migrations.rb b/examples/using_migrations.rb index 926d5e6..672ad60 100644 --- a/examples/using_migrations.rb +++ b/examples/using_migrations.rb @@ -1,14 +1,14 @@ # Active UUID features a convenience #uuid method, which may be used to create # a binary column in database migration. Since it involves monkey patching, -# "active_id/all" must be loaded. +# "activeid/all" must be loaded. ENV["DB"] ||= "sqlite3" require "bundler/setup" Bundler.require :development -# Note "active_id/all", which registers new column definitions! -require "active_id/all" +# Note "activeid/all", which registers new column definitions! +require "activeid/all" require_relative "../spec/support/0_logger" require_relative "../spec/support/1_db_connection" diff --git a/gemfiles/Rails-5_0.gemfile b/gemfiles/Rails-5_0.gemfile deleted file mode 100644 index 7b374a2..0000000 --- a/gemfiles/Rails-5_0.gemfile +++ /dev/null @@ -1,8 +0,0 @@ -source "http://rubygems.org" - -gemspec path: "../" - -gem "activerecord", "~> 5.0.0" - -gem "codecov", require: false, group: :test -gem "simplecov", require: false, group: :test diff --git a/gemfiles/Rails-5_1.gemfile b/gemfiles/Rails-5_1.gemfile deleted file mode 100644 index 3105c3b..0000000 --- a/gemfiles/Rails-5_1.gemfile +++ /dev/null @@ -1,8 +0,0 @@ -source "http://rubygems.org" - -gemspec path: "../" - -gem "activerecord", "~> 5.1.0" - -gem "codecov", require: false, group: :test -gem "simplecov", require: false, group: :test diff --git a/gemfiles/Rails-5_2.gemfile b/gemfiles/Rails-5_2.gemfile index ac56928..189703f 100644 --- a/gemfiles/Rails-5_2.gemfile +++ b/gemfiles/Rails-5_2.gemfile @@ -4,5 +4,9 @@ gemspec path: "../" gem "activerecord", "~> 5.2.0" -gem "codecov", require: false, group: :test -gem "simplecov", require: false, group: :test +group :test do + gem "codecov", require: false + gem "rubocop-performance", require: false + gem "rubocop-rails", require: false + gem "simplecov", require: false +end diff --git a/gemfiles/Rails-6_0.gemfile b/gemfiles/Rails-6_0.gemfile new file mode 100644 index 0000000..96b5f7e --- /dev/null +++ b/gemfiles/Rails-6_0.gemfile @@ -0,0 +1,12 @@ +source "http://rubygems.org" + +gemspec path: "../" + +gem "activerecord", "~> 6.0.0" + +group :test do + gem "codecov", require: false + gem "rubocop-performance", require: false + gem "rubocop-rails", require: false + gem "simplecov", require: false +end diff --git a/gemfiles/Rails-6_1.gemfile b/gemfiles/Rails-6_1.gemfile new file mode 100644 index 0000000..cd09a22 --- /dev/null +++ b/gemfiles/Rails-6_1.gemfile @@ -0,0 +1,12 @@ +source "http://rubygems.org" + +gemspec path: "../" + +gem "activerecord", "~> 6.1.0" + +group :test do + gem "codecov", require: false + gem "rubocop-performance", require: false + gem "rubocop-rails", require: false + gem "simplecov", require: false +end diff --git a/gemfiles/Rails-7_0.gemfile b/gemfiles/Rails-7_0.gemfile new file mode 100644 index 0000000..c7d3b92 --- /dev/null +++ b/gemfiles/Rails-7_0.gemfile @@ -0,0 +1,12 @@ +source "http://rubygems.org" + +gemspec path: "../" + +gem "activerecord", "~> 7.0.0" + +group :test do + gem "codecov", require: false + gem "rubocop-performance", require: false + gem "rubocop-rails", require: false + gem "simplecov", require: false +end diff --git a/gemfiles/Rails-head.gemfile b/gemfiles/Rails-head.gemfile index a19adfc..640cd07 100644 --- a/gemfiles/Rails-head.gemfile +++ b/gemfiles/Rails-head.gemfile @@ -4,5 +4,9 @@ gemspec path: "../" gem "activerecord", github: "rails/rails" -gem "codecov", require: false, group: :test -gem "simplecov", require: false, group: :test +group :test do + gem "codecov", require: false + gem "rubocop-performance", require: false + gem "rubocop-rails", require: false + gem "simplecov", require: false +end diff --git a/lib/active_id.rb b/lib/active_id.rb deleted file mode 100644 index f326ee4..0000000 --- a/lib/active_id.rb +++ /dev/null @@ -1,12 +0,0 @@ -require "active_id/version" -require "active_id/utils" -require "active_id/model" -require "active_id/type" -require "active_id/railtie" if defined?(Rails::Railtie) -require "pp" - -module ActiveID - class << self - delegate :quote_as_binary, to: Utils - end -end diff --git a/lib/activeid.rb b/lib/activeid.rb new file mode 100644 index 0000000..835af1a --- /dev/null +++ b/lib/activeid.rb @@ -0,0 +1,12 @@ +require "activeid/version" +require "activeid/utils" +require "activeid/model" +require "activeid/type" +require "activeid/railtie" if defined?(Rails::Railtie) +require "pp" + +module ActiveID + class << self + delegate :quote_as_binary, to: Utils + end +end diff --git a/lib/active_id/all.rb b/lib/activeid/all.rb similarity index 54% rename from lib/active_id/all.rb rename to lib/activeid/all.rb index 01ea556..f5cb16d 100644 --- a/lib/active_id/all.rb +++ b/lib/activeid/all.rb @@ -1,2 +1,2 @@ -require_relative "../active_id" +require_relative "../activeid" require_relative "connection_patches" diff --git a/lib/active_id/connection_patches.rb b/lib/activeid/connection_patches.rb similarity index 92% rename from lib/active_id/connection_patches.rb rename to lib/activeid/connection_patches.rb index 809d443..ecb312b 100644 --- a/lib/active_id/connection_patches.rb +++ b/lib/activeid/connection_patches.rb @@ -1,11 +1,12 @@ require "active_record" require "active_support/concern" +require "active_id/railtie" if defined?(Rails::Railtie) module ActiveID module ConnectionPatches module ColumnMethods def uuid(*args, **options) - args.each { |name| column(name, :uuid, options) } + args.each { |name| column(name, :uuid, **options) } end end diff --git a/lib/active_id/model.rb b/lib/activeid/model.rb similarity index 100% rename from lib/active_id/model.rb rename to lib/activeid/model.rb diff --git a/lib/active_id/railtie.rb b/lib/activeid/railtie.rb similarity index 89% rename from lib/active_id/railtie.rb rename to lib/activeid/railtie.rb index b6248e7..8bb1ed2 100644 --- a/lib/active_id/railtie.rb +++ b/lib/activeid/railtie.rb @@ -1,4 +1,4 @@ -require "active_id" +require "activeid" require "rails" module ActiveID diff --git a/lib/active_id/type.rb b/lib/activeid/type.rb similarity index 100% rename from lib/active_id/type.rb rename to lib/activeid/type.rb diff --git a/lib/active_id/utils.rb b/lib/activeid/utils.rb similarity index 100% rename from lib/active_id/utils.rb rename to lib/activeid/utils.rb diff --git a/lib/active_id/version.rb b/lib/activeid/version.rb similarity index 100% rename from lib/active_id/version.rb rename to lib/activeid/version.rb diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index f11e6ff..16d4923 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -12,9 +12,9 @@ Bundler.require :development if ENV.fetch("NO_PATCHES", false) - require "active_id" + require "activeid" else - require "active_id/all" + require "activeid/all" end Dir[File.expand_path("support/**/*.rb", __dir__)].sort.each { |f| require f }