Skip to content

Commit

Permalink
[Fix #515] Fix an error for Rails/BulkChangeTable
Browse files Browse the repository at this point in the history
Fixes #515
Follow up ruby/psych#487 and rails/rails@255b5ff

This PR fixes an error for `Rails/BulkChangeTable` when using Psych 4.0.
  • Loading branch information
koic committed Jul 1, 2021
1 parent 7485ea7 commit e4cf5b4
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 7 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
6 changes: 5 additions & 1 deletion lib/rubocop/cop/rails/bulk_change_table.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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']
Expand Down
9 changes: 3 additions & 6 deletions spec/rubocop/cop/rails/bulk_change_table_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit e4cf5b4

Please sign in to comment.