Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Master sync #5

Merged
merged 143 commits into from
Mar 28, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
143 commits
Select commit Hold shift + click to select a range
fb01ff7
sidekiq: Allow dequeue even if tenant not found
wata727 Oct 13, 2021
7679ee1
Bump up mimemagic
alpaca-tc Dec 23, 2021
082837d
Bump up minitest
alpaca-tc Dec 23, 2021
8f12718
Fixed spec for rails7
alpaca-tc Dec 23, 2021
a91f008
Testing with AR 7.0
alpaca-tc Dec 23, 2021
9caef2c
Merge pull request #126 from alpaca-tc/support_rails7
serprex Feb 23, 2022
a2d0799
Merge pull request #123 from wata727/switch_with_id_when_tenant_not_f…
serprex Feb 23, 2022
6107112
Bump nokogiri from 1.11.1 to 1.13.3
dependabot[bot] Feb 23, 2022
598e8a6
Use Github Actions for CI
mlarraz Feb 11, 2021
a28bb25
Merge pull request #117 from mlarraz/master
serprex Feb 24, 2022
d69b931
fix incorrect SQL generated when joining two models and one has a
serch Feb 10, 2021
c968eb7
Remove Travis CI
Feb 24, 2022
4174319
Merge pull request #132 from citusdata/fix-incorrect-sql
serprex Feb 24, 2022
8aa6fe5
Merge pull request #134 from citusdata/remove-travis
serprex Feb 24, 2022
ec434e4
Update for Rails 5+ removal of type_cast_for_database
jodyrodd Oct 26, 2021
37d388c
Merge pull request #135 from citusdata/rails-5-2-type-cast-fix
serprex Feb 24, 2022
bca020a
Test Rails 7 and Ruby 3.0/3.1
mlarraz Feb 24, 2022
2b53373
Fix lockfiles
mlarraz Feb 24, 2022
ed17ccc
Merge pull request #130 from citusdata/dependabot/bundler/nokogiri-1.…
serprex Feb 28, 2022
c45d3e3
workaround .and_call_original issue
Mar 2, 2022
88a1439
Exclude incompatible ruby/rails pairs from CI
Mar 3, 2022
662d010
Merge pull request #137 from citusdata/ruby3rails7support
serprex Mar 3, 2022
5823ed8
Bump activestorage from 6.0.3.3 to 6.0.4.7
dependabot[bot] Mar 8, 2022
ad0b5f1
Merge pull request #138 from citusdata/dependabot/bundler/activestora…
serprex Mar 9, 2022
0eb509c
Bump sidekiq from 5.2.7 to 6.4.1
dependabot[bot] Mar 9, 2022
7ff1abd
Merge pull request #133 from citusdata/dependabot/bundler/sidekiq-6.4.1
serprex Mar 9, 2022
19e0d5d
Add lockfiles to gitignore
mlarraz Feb 11, 2021
1dab7d2
Force Rails 5.2 to be < 5.2.4 to unblock the build
mlarraz Mar 24, 2022
7a3333f
Merge pull request #116 from mlarraz/ignore_lockfiles
serprex Mar 24, 2022
bd578b6
Replace RequestStore with CurrentAttributes
mlarraz Mar 24, 2022
4d0d41d
1.2.0
Mar 29, 2022
fc0f219
Merge pull request #142 from citusdata/1-2-0
serprex Apr 11, 2022
a9e9645
Merge pull request #139 from mlarraz/rm_request_store
serprex Apr 11, 2022
9360c8b
Fixed bug when changing table_name after calling multi_tenant.
alpaca-tc Jan 31, 2022
2b082ff
Remove _table_name parameter
Apr 11, 2022
c8ce1af
Merge pull request #128 from alpaca-tc/recalculate_table_name
serprex Apr 11, 2022
3d3d649
Allow to use uuid as primary key on partition table
edsonlima Jan 18, 2021
e053c87
Uses self.class.primary_key to get primary key name instead of 'id'
edsonlima Mar 16, 2022
f200d66
Merge pull request #112 from edsonlima/master
serprex Apr 11, 2022
d6af5d7
Fix for latest rails 5.2
mintuhouse May 11, 2022
17eebde
Update lib/activerecord-multi-tenant/query_rewriter.rb
serprex May 13, 2022
db5018a
Revert "Update lib/activerecord-multi-tenant/query_rewriter.rb"
serprex May 13, 2022
b7bb41b
Revert "Fix for latest rails 5.2 See https://github.com/citusdata/act…
serprex May 13, 2022
8e2d5be
Fix for latest rails 5.2
mintuhouse May 11, 2022
bcf93ec
Rails 5+: Support optional: true for belongs_to
shayonj May 18, 2022
8a7b92c
2.0.0
May 19, 2022
2de5052
Merge pull request #148 from citusdata/2-0-0
serprex May 19, 2022
a184dd7
Fix query building for models with missmatched partition_keys
mmontagna Aug 17, 2022
7c891b4
Fix tests.
mmontagna Aug 17, 2022
6039ea4
Fix r/l swap
mmontagna Aug 17, 2022
34cc22b
Identify tenant even if class name is nonstandard.
mmontagna Aug 18, 2022
b2d0029
Add test for nonstandard tenant model name.
mmontagna Aug 18, 2022
a2bd1e4
Merge pull request #150 from mmontagna/fix-left-right-mixup
serprex Aug 18, 2022
8e688ce
Merge pull request #1 from mmontagna/instacart-fix-tenant-identification
mmontagna Aug 18, 2022
140f9c7
Merge pull request #152 from mmontagna/master
serprex Aug 19, 2022
a566c9f
Make create_distributed_table, create_reference_table reversible & ad…
mintuhouse Sep 24, 2022
1f0b126
Merge pull request #155 from mintuhouse/migrations_helpers
serprex Sep 25, 2022
a3cfc5f
Add current_tenant_id to WHERE clauses when calling methods on active…
mintuhouse Sep 24, 2022
0c2cd71
Support create_{distributed|reference}_table in schema.rb generated f…
mintuhouse Sep 26, 2022
80f9d94
Merge pull request #154 from mintuhouse/wrap_methods
mintuhouse Sep 26, 2022
363363c
Merge pull request #156 from mintuhouse/schema_dumper
mintuhouse Sep 26, 2022
1fea082
Add client and server sidekiq middleware to sidekiq middleware chain
shayonj Oct 19, 2022
e2cc8c0
Remove defined? call
shayonj Oct 19, 2022
3990e9d
Merge pull request #158 from shayonj/s/sidekiq-middleware
serprex Oct 20, 2022
0cf100f
2.1.1
Oct 20, 2022
e1d50b4
Merge pull request #159 from citusdata/2-1-1
serprex Oct 20, 2022
0e9a2e2
Fixes issue when wraping methods that require a block
danielnc Oct 26, 2022
ae497b4
Merge pull request #162 from danielnc/patch-1
mintuhouse Oct 26, 2022
901540f
2.1.2
Oct 26, 2022
0ef780a
Merge pull request #163 from citusdata/2-1-2
serprex Oct 26, 2022
90043ad
Fix error when calling methods that take keyword arguments with M`ult…
osyo-manga Oct 27, 2022
ed6a149
Add support Ruby 2.6 or lower.
osyo-manga Oct 27, 2022
893e08e
Merge pull request #164 from osyo-manga/fix-wrap_methods-with-keyword…
serprex Oct 27, 2022
d7481d6
2.1.3
Oct 27, 2022
db5eec6
Merge pull request #165 from citusdata/2-1-3
serprex Oct 27, 2022
497f11e
Update README Rail version details
Oct 27, 2022
1b12d53
Fixes #166 where db:schema:dump is broken when using this gem with MySQL
mintuhouse Nov 3, 2022
1a03f48
Merge pull request #167 from mintuhouse/use_with_mysql
serprex Nov 3, 2022
1c1def9
2.1.4
Nov 3, 2022
202a614
Include test cases for joins
Nov 17, 2022
88aa29a
resolving nested children
Nov 18, 2022
8104621
drop support for rails 5.2.3
Nov 20, 2022
66a6df2
Merge pull request #168 from jainharsheet77/scoping_issue_when_tenant…
serprex Nov 20, 2022
a82fd75
2.1.5
Nov 20, 2022
fadba86
updated check for ruby version
harsheetjain Nov 23, 2022
be4c949
Merge pull request #170 from jainharsheet77/fix-wrap_methods-error
serprex Nov 23, 2022
38ba34f
2.1.6
Nov 23, 2022
2684eb0
Fix version string
Nov 23, 2022
9ec1194
Allow Partitioned tables to be created without a primary key
danielnc Nov 27, 2022
881bbb1
Handle updating a record tenant from nil to a reference
Nov 30, 2022
61374df
Merge pull request #173 from DougEdey/de/handle_nil_initial
serprex Dec 1, 2022
a6c8c2d
Merge pull request #172 from danielnc/patch-2
serprex Dec 1, 2022
a0f4370
Only attempt to reload with MultiTenant when parition_key is present
shayonj Dec 2, 2022
805db10
Merge pull request #175 from shayonj/s/fix-missing-attribute
serprex Dec 6, 2022
ebb1975
2.2.0: Remove support for Ruby 2.5 & ActiveRecord 5.2
Dec 6, 2022
8da5a40
Merge pull request #176 from citusdata/remove-5-2-support
serprex Dec 6, 2022
baf3a4d
Update model_extensions.rb
mpantel Feb 2, 2023
f8b9324
Merge pull request #177 from mpantel/mpantel-patch-Rails-7.1-compatib…
serprex Feb 2, 2023
e3dcc7d
Updates citus versions and actions version
gurkanindibay Mar 24, 2023
dd35cf3
Adds the django-multitenant docker-compose
gurkanindibay Mar 24, 2023
c7ed74a
Adds citus version into matrix
gurkanindibay Mar 24, 2023
47f39db
Fixes Citus version list
gurkanindibay Mar 24, 2023
88c50ed
Convert citus version into string
gurkanindibay Mar 24, 2023
db0c9b6
Adds citus version into job name
gurkanindibay Mar 24, 2023
331850f
Adds codecov integration
gurkanindibay Mar 24, 2023
8dd50cc
Adds codecov into activrecord dependency
gurkanindibay Mar 24, 2023
767bdb4
Removes eol ruby versions
gurkanindibay Mar 24, 2023
d14f65d
Merge pull request #179 from citusdata/citus_version_update
serprex Mar 27, 2023
0cc1a8b
Merge pull request #180 from citusdata/code_coverage
serprex Mar 28, 2023
63542e9
Removes prepared statement cases from tests (#181)
gurkanindibay Mar 28, 2023
41b5c14
Enables appraisal usage (#182)
gurkanindibay Apr 2, 2023
325f486
Fixes rubocop warnings (#184)
gurkanindibay Apr 14, 2023
37c1105
Removes workaround for citus/1236 (#185)
gurkanindibay Apr 18, 2023
c85fc83
Adds comments to make code more readable (#187)
gurkanindibay May 3, 2023
4ec77f7
Introduces ApplicationRecord (#188)
gurkanindibay May 8, 2023
91532c4
Stop defining methods in global String that are only used for testing…
alpaca-tc May 8, 2023
5b1f6bc
Modified file name so bundler can automatically require gem (#190)
alpaca-tc May 9, 2023
5c88325
Revert "Introduces ApplicationRecord (#188)" (#191)
alpaca-tc May 9, 2023
07163dc
Adds has_and_belongs_to_many feature with tenant (#193)
gurkanindibay May 15, 2023
99b5af2
Fixes code coverage issue (#194)
gurkanindibay May 18, 2023
2588c0e
Adds documentation in ReadTheDocs platform (#196)
gurkanindibay May 27, 2023
fa0e2b3
Organizes badges in documentation and README.md (#197)
gurkanindibay May 28, 2023
e6a7d4c
Changes order of badges in docs
gurkanindibay May 28, 2023
076db75
Fixes url problem in documentation
gurkanindibay May 28, 2023
16fd851
Aligns badges
gurkanindibay Jun 2, 2023
7b6bb2f
Wrap ActiveRecord::Base with ActiveSupport.on_load (#199)
nipe0324 Jun 5, 2023
fd42dbd
Adds Changelog entries for 2.3.0 (#201)
gurkanindibay Jun 6, 2023
bed29b1
update logic inside the tenant_klass_defined? method (#202)
msasaki666 Jun 16, 2023
5217915
Bump certifi from 2023.5.7 to 2023.7.22 in /docs (#204)
dependabot[bot] Jul 26, 2023
100ac67
Fix missing scope in habtm.rb (#207)
Laykou Sep 7, 2023
648f353
Support rails 7.1 (#208)
alpaca-tc Sep 14, 2023
cf1b412
Adds citus 12 to test matrix (#210)
gurkanindibay Sep 22, 2023
9939b5e
Bump version to 2.4.0
gurkanindibay Sep 22, 2023
c192594
Update CHANGELOG.md (#211)
gurkanindibay Oct 2, 2023
aa0e161
Bump urllib3 from 2.0.2 to 2.0.6 in /docs (#212)
dependabot[bot] Oct 3, 2023
48e6a42
Remove beta1 from rails 7.1.0 (#213)
alpaca-tc Oct 9, 2023
de48c9f
Bump urllib3 from 2.0.6 to 2.0.7 in /docs (#214)
dependabot[bot] Oct 18, 2023
f1f043d
Fix rubocop warnings (#215)
serprex Oct 23, 2023
d23bc78
Use prepend instead of alias (#216)
alpaca-tc Nov 2, 2023
e33732a
Fix issue to avoid errors when `table_name` is nil (#218)
dlwr Dec 2, 2023
d91e62c
Fixes static code analysis checks (#220)
gurkanindibay Dec 3, 2023
20d09a8
Fixes Model.limit(n).delete_all & Model.limit(n).update_all generates…
gurkanindibay Dec 4, 2023
e3d2c88
Fix the tenant scoping for update_all (#223)
Amit909Singh Jan 5, 2024
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
83 changes: 83 additions & 0 deletions .github/workflows/active-record-multi-tenant-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
name: Active Record Multi-Tenant Tests

env:
CI: true
on:
push:
branches:
- "**"
pull_request:
types: [ opened, reopened, synchronize ]

jobs:

static-checks:
runs-on: ubuntu-latest
steps:
- uses: ruby/setup-ruby@v1
with:
ruby-version: 3.2
bundler-cache: true
- uses: actions/checkout@v3
- name: Rubocop static code analysis
run: |
gem install rubocop
rubocop
doc_checks:
runs-on: ubuntu-latest
steps:
- uses: actions/setup-python@v4
with:
python-version: 3.9
- uses: actions/checkout@v3
- name: Install python dependencies
run: |
pip install -r docs/requirements.txt
- name: Documentation Checks
run: |
cd docs
sphinx-build -W -b html source builds

build:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
ruby:
- '3.0'
- '3.1'
- '3.2'
appraisal:
- rails-6.0
- rails-6.1
- rails-7.0
- rails-7.1
- active-record-6.0
- active-record-6.1
- active-record-7.0
- active-record-7.1
citus_version:
- '10'
- '11'
- '12'

name: Ruby ${{ matrix.ruby }}/${{ matrix.gemfile }} / Citus ${{ matrix.citus_version }}
env:
APPRAISAL: ${{ matrix.appraisal }}
CITUS_VERSION: ${{ matrix.citus_version }}
steps:
- uses: actions/checkout@v3

- name: Start Citus Database environment
run: docker-compose up -d

- uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
bundler-cache: true

- name: Execute tests
run: bundle exec rake spec

- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v3
8 changes: 8 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,11 @@ spec/debug.log
pkg/
*.rb#
*.*~
Gemfile.lock
*.gemfile.lock
.idea/
.vagrant/
Vagrantfile
coverage/
docs/build/
.yardoc/
15 changes: 15 additions & 0 deletions .readthedocs.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
version: 2

build:
os: "ubuntu-22.04"
tools:
python: "3.11"

# Build from the docs/ directory with Sphinx
sphinx:
configuration: docs/source/conf.py

# Explicitly set the version of Python and its requirements
python:
install:
- requirements: docs/requirements.txt
1 change: 1 addition & 0 deletions .rspec
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
--force-color
59 changes: 59 additions & 0 deletions .rubocop.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# This is an example RuboCop configuration file with some commonly used options.

# Run RuboCop on all Ruby files, except those in `vendor` and `node_modules` directories
AllCops:
Exclude:
- 'vendor/**/*'
- 'node_modules/**/*'
- 'Vagrantfile'
TargetRubyVersion: 3.0
SuggestExtensions: false
NewCops: enable

Gemspec/DevelopmentDependencies:
Enabled: false

Lint/ConstantDefinitionInBlock:
Enabled: false

Lint/EmptyBlock:
Enabled: false

Style/ClassAndModuleChildren:
Enabled: false

Style/Documentation:
Exclude:
- '**/*.rb'
Enabled: false

Style/DocumentDynamicEvalDefinition:
Enabled: false

Metrics/BlockLength:
Max: 650

Metrics/MethodLength:
Max: 150

Metrics/ClassLength:
Max: 200

Metrics/ModuleLength:
Max: 200

Metrics/AbcSize:
Enabled: false

Metrics/PerceivedComplexity:
Enabled: false

Metrics/CyclomaticComplexity:
Enabled: false

Metrics/BlockNesting:
Enabled: false

Naming/FileName:
Exclude:
- 'lib/activerecord-multi-tenant.rb'
34 changes: 0 additions & 34 deletions .travis.yml

This file was deleted.

36 changes: 15 additions & 21 deletions Appraisals
Original file line number Diff line number Diff line change
@@ -1,14 +1,4 @@
appraise 'rails-5.2' do
gem 'rails', '~> 5.2.0'
gem 'i18n', '~> 0.9.5'
gem 'nokogiri', '~> 1.7.1'
gem 'nio4r', '~> 2.3.1'
gem 'sprockets', '~> 3.7.1'
gem 'byebug', '~> 11.0'
gem 'rake', '12.0.0'
gem 'redis', '3.3.3'
gem 'pry-byebug', '3.9.0'
end
# frozen_string_literal: true

appraise 'rails-6.0' do
gem 'rails', '~> 6.0.3'
Expand All @@ -18,16 +8,12 @@ appraise 'rails-6.1' do
gem 'rails', '~> 6.1.0'
end

appraise 'active-record-5.2' do
gem 'activerecord', '~> 5.2.0'
gem 'i18n', '~> 0.9.5'
gem 'nokogiri', '~> 1.7.1'
gem 'nio4r', '~> 2.3.1'
gem 'sprockets', '~> 3.7.1'
gem 'byebug', '~> 11.0'
gem 'rake', '12.0.0'
gem 'redis', '3.3.3'
gem 'pry-byebug', '3.9.0'
appraise 'rails-7.0' do
gem 'rails', '~> 7.0.0'
end

appraise 'rails-7.1' do
gem 'rails', '~> 7.1.0'
end

appraise 'active-record-6.0' do
Expand All @@ -37,3 +23,11 @@ end
appraise 'active-record-6.1' do
gem 'activerecord', '~> 6.1.0'
end

appraise 'active-record-7.0' do
gem 'activerecord', '~> 7.0.0'
end

appraise 'active-record-7.1' do
gem 'activerecord', '~> 7.1.0'
end
59 changes: 59 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,64 @@
# Changelog

## 2.4.0 2023-09-22
* Adds citus 12 to test matrix (#210)
* Adds Support for rails 7.1 (#208)
* Fix missing scope in habtm.rb (#207)
* Update logic inside the tenant_klass_defined? method (#202)

## 2.3.0 2023-06-05
* Adds has_and_belongs_to_many feature with tenant (#193)
* Removes eol ruby versions
* Adds documentation in ReadTheDocs platform (#196)
* Organizes badges in documentation and README.md (#197)
* Wrap ActiveRecord::Base with ActiveSupport.on_load (#199)

## 2.2.0 2022-12-06
* Handle changing tenant from `nil` to a value [#173](https://github.com/citusdata/activerecord-multi-tenant/pull/173)
* Allow Partitioned tables to be created without a primary key [#172](https://github.com/citusdata/activerecord-multi-tenant/pull/172)
* Only attempt to reload with MultiTenant when parition_key is present [#175](https://github.com/citusdata/activerecord-multi-tenant/pull/175)
* Remove support for Ruby 2.5 & ActiveRecord 5.2

## 2.1.6 2022-11-23
* Fix undefined wrap_methods error & wrap_methods version check [#170](https://github.com/citusdata/activerecord-multi-tenant/pull/170)

## 2.1.5 2022-11-20
* Fix `MultiTenant.without` codegen bug in Rails 6.1+ [#168](https://github.com/citusdata/activerecord-multi-tenant/pull/168)

## 2.1.4 2022-11-03
* Fixes #166 where db:schema:dump is broken when using this gem with MySQL [#167](https://github.com/citusdata/activerecord-multi-tenant/pull/167)

## 2.1.3 2022-10-27
* Error when calling a method that takes keyword arguments with MultiTenant.wrap_methods [#164](https://github.com/citusdata/activerecord-multi-tenant/pull/164)

## 2.1.2 2022-10-26
* Fixes issue when wraping methods that require a block [#162](https://github.com/citusdata/activerecord-multi-tenant/pull/162)

## 2.1.1 2022-10-20
* Fix query building for models with mismatched partition_keys [#150](https://github.com/citusdata/activerecord-multi-tenant/pull/150)
* Identify tenant even if class name is nonstandard [#152](https://github.com/citusdata/activerecord-multi-tenant/pull/152)
* Add current_tenant_id to WHERE clauses when calling methods on activerecord instance or its associations [#154](https://github.com/citusdata/activerecord-multi-tenant/pull/154)
* Make create_distributed_table, create_reference_table reversible & add ruby wrapper for rebalance_table_shards [#155](https://github.com/citusdata/activerecord-multi-tenant/pull/155)
* Support create_distributed_table, create_reference_table in schema.rb [#156](https://github.com/citusdata/activerecord-multi-tenant/pull/156)
* Add client and server sidekiq middleware to sidekiq middleware chain [#158](https://github.com/citusdata/activerecord-multi-tenant/pull/158)

## 2.0.0 2022-05-19

* Replace RequestStore with CurrentAttributes [#139](https://github.com/citusdata/activerecord-multi-tenant/pull/139)
* Support changing table_name after calling multi_tenant [#128](https://github.com/citusdata/activerecord-multi-tenant/pull/128)
* Allow to use uuid as primary key on partition table [#112](https://github.com/citusdata/activerecord-multi-tenant/pull/112)
* Support latest Rails 5.2 [#145](https://github.com/citusdata/activerecord-multi-tenant/pull/145)
* Support optional: true for belongs_to [#147](https://github.com/citusdata/activerecord-multi-tenant/pull/147)


## 1.2.0 2022-03-29

* Test Rails 7 & Ruby 3
* Fix regression in 1.1.1 involving deleted tenants [#123](https://github.com/citusdata/activerecord-multi-tenant/pull/123)
* Fix incorrect SQL generated when joining two models and one has a default scope [#132](https://github.com/citusdata/activerecord-multi-tenant/pull/132)
* Update for Rails 5+ removal of type_cast_for_database [#135](https://github.com/citusdata/activerecord-multi-tenant/pull/135)


## 1.1.1 2021-01-15

* Add support for Rails 6.1 [#108](https://github.com/citusdata/activerecord-multi-tenant/pull/108)
Expand Down
6 changes: 5 additions & 1 deletion Gemfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# frozen_string_literal: true

source 'https://rubygems.org'

gemspec

gem 'appraisal'
gem 'rubocop', require: false, group: 'test'
gem 'simplecov'
gem 'simplecov-cobertura'
Loading
Loading