diff --git a/CHANGELOG.md b/CHANGELOG.md index 21013b4d91..e2a0f75f46 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## master (unreleased) +### Bug fixes + +* [#515](https://github.com/rubocop/rubocop-rails/issues/515): Fix an error for `Rails/BulkChangeTable` when using Psych 4.0. ([@koic][]) + ## 2.11.1 (2021-06-25) ### Bug fixes diff --git a/lib/rubocop/cop/rails/bulk_change_table.rb b/lib/rubocop/cop/rails/bulk_change_table.rb index 0d31f62ef5..fab0fa5796 100644 --- a/lib/rubocop/cop/rails/bulk_change_table.rb +++ b/lib/rubocop/cop/rails/bulk_change_table.rb @@ -194,7 +194,11 @@ def database_from_yaml def database_yaml return nil unless File.exist?('config/database.yml') - yaml = YAML.load_file('config/database.yml') + yaml = if YAML.respond_to?(:unsafe_load_file) + YAML.unsafe_load_file('config/database.yml') + else + YAML.load_file('config/database.yml') + end return nil unless yaml.is_a? Hash config = yaml['development'] diff --git a/spec/rubocop/cop/rails/bulk_change_table_spec.rb b/spec/rubocop/cop/rails/bulk_change_table_spec.rb index b4e239aadc..f3cc7588d8 100644 --- a/spec/rubocop/cop/rails/bulk_change_table_spec.rb +++ b/spec/rubocop/cop/rails/bulk_change_table_spec.rb @@ -414,12 +414,9 @@ def change let(:yaml) { nil } before do - allow(File).to receive(:exist?) - .with('config/database.yml') - .and_return(true) - allow(YAML).to receive(:load_file) - .with('config/database.yml') - .and_return(yaml) + allow(File).to receive(:exist?).with('config/database.yml').and_return(true) + allow(YAML).to receive(:load_file).with('config/database.yml').and_return(yaml) + allow(YAML).to receive(:unsafe_load_file).with('config/database.yml').and_return(yaml) end context 'mysql2' do