Когда я пишу многострочный блок, который возвращает значение, мне нравится использовать фигурные скобки вместо do
- end
, чтобы сделать очевидным, что цель блока - вернуть вещи, в противоположность делать что-то.Разрешить скобки для блоков, которые возвращают
Стандартная конфигурация Rubocop не позволяет этого, и rubocop -a
преобразует любой многострочный блок в блок do
- end
.
# I like but Rubocop hates.
expect {
delete :destroy, id: thing.to_param
}.to change(Thing, :count).by(-1)
# I don't like but Rubocop does.
expect do
delete :destroy, id: thing.to_param
end.to change(Thing, :count).by(-1)
# That, we both like.
before do
stub_api_calls
admin_sign_in create(:super_admin)
end
Есть ли какой-либо параметр конфигурации в Rubocop, который допускает это различие?
Редактировать: Или, по крайней мере, это позволяет избежать изменения блока скобок, если после закрывающей скобки есть точка (.).
Очевидно, что вы не можете позволить Rubocop различать, предназначен ли способ вернуть что-то или сделать что-то. Это скорее прагматично, чем семантично. Так что все, что вы можете сделать, это, по возможности, отключить предпочтение Rubocop 'do' ...' end' для многострочных блоков. – sawa
Ну, что может легко реализовать Rubocop, если есть точка ('.') Сразу после закрывающей скобки. – Daniel
Что делать, если блок является частью последнего выражения в определении метода? – sawa