Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .rubocop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ AllCops:

Naming/FileName:
Exclude:
- 'lib/rubocop-database_validations.rb'
- 'example/Gemfile'
- 'example/Rakefile'

Expand Down
6 changes: 5 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
# Changelog

## [2.0.0] - 20-03-2026
## Unreleased - xxxx-xx-xx

- Add RuboCop plugin system via LintRoller for RuboCop >= 1.72

## [2.0.0] - 2026-03-20
### Improvements

- Add Rails 8.1 support
Expand Down
4 changes: 0 additions & 4 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,4 @@ git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
# Specify your gem's dependencies in database_validations.gemspec
gemspec

group :test do
gem 'rspec_junit_formatter', '~> 0.4.1'
end

eval(File.read(ENV['GEMFILE_PATH'])) if ENV['GEMFILE_PATH'] # rubocop:disable Security/Eval
14 changes: 8 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -247,18 +247,20 @@ end
## Using with RuboCop

DatabaseValidations provides custom cops for RuboCop to help you consistently apply the improvements.
To use all of them, use `rubocop --require database_validations/rubocop/cops` or add to your `.rubocop.yml` file:

For RuboCop >= 1.72, add the plugin to your `.rubocop.yml` file:

```yaml
require:
- database_validations/rubocop/cops
plugins:
- database_validations:
require_path: rubocop-database_validations
```

Or you case use some specific cop directly:
For older versions of RuboCop, use `require` instead:

```yaml
require:
- database_validations/rubocop/cop/belongs_to
- database_validations/rubocop/cop/uniqueness_of
- database_validations/rubocop/cops
```

## Development
Expand Down
5 changes: 5 additions & 0 deletions config/rubocop-default.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
DatabaseValidations/BelongsTo:
Enabled: true

DatabaseValidations/UniquenessOf:
Enabled: true
5 changes: 4 additions & 1 deletion database_validations.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,14 @@ The main goal of the gem is to provide compatibility between database constraint
and ActiveRecord validations with better performance and consistency."
spec.homepage = 'https://github.com/toptal/database_validations'
spec.license = 'MIT'
spec.files = Dir['lib/**/*']
spec.files = Dir['lib/**/*', 'config/**/*']
spec.require_paths = ['lib']
spec.required_ruby_version = '>= 3.2.0'

spec.metadata['default_lint_roller_plugin'] = 'RuboCop::DatabaseValidations::Plugin'

spec.add_dependency 'activerecord', '>= 7.2.0'
spec.add_dependency 'lint_roller'

spec.add_development_dependency 'benchmark-ips'
spec.add_development_dependency 'bundler'
Expand Down
4 changes: 4 additions & 0 deletions lib/rubocop-database_validations.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
require 'rubocop'

require_relative 'rubocop/database_validations'
require_relative 'rubocop/database_validations/plugin'
2 changes: 2 additions & 0 deletions lib/rubocop/database_validations.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
require_relative '../../lib/database_validations/rubocop/cop/belongs_to'
require_relative '../../lib/database_validations/rubocop/cop/uniqueness_of'
29 changes: 29 additions & 0 deletions lib/rubocop/database_validations/plugin.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
require 'lint_roller'
require 'database_validations/version'

module RuboCop
module DatabaseValidations
class Plugin < LintRoller::Plugin
def about
LintRoller::About.new(
name: 'rubocop-database_validations',
version: ::DatabaseValidations::VERSION,
homepage: 'https://github.com/toptal/database_validations',
description: 'RuboCop cops for database_validations gem.'
)
end

def supported?(context)
context.engine == :rubocop
end

def rules(_context)
LintRoller::Rules.new(
type: :path,
config_format: :rubocop,
value: File.join(__dir__, '..', '..', '..', 'config', 'rubocop-default.yml')
)
end
end
end
end
2 changes: 1 addition & 1 deletion spec/rubocop/spec_helper.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
require 'rubocop'
require 'rubocop-database_validations'
require 'rubocop/rspec/support'
require 'database_validations/rubocop/cops'

Expand Down