Title: plugin clashes with RuboCop's Style/SingleLineDoEndBlock and Style/BlockDelimiters · Issue #1460 · prettier/plugin-ruby · GitHub
Open Graph Title: plugin clashes with RuboCop's Style/SingleLineDoEndBlock and Style/BlockDelimiters · Issue #1460 · prettier/plugin-ruby
X Title: plugin clashes with RuboCop's Style/SingleLineDoEndBlock and Style/BlockDelimiters · Issue #1460 · prettier/plugin-ruby
Description: Hello there! I'm working on a project which is using this plugin to format ruby code along with RuboCop for additional linting and style consistency. We're following the documented "Usage with RuboCop" procedure of inheriting from the .r...
Open Graph Description: Hello there! I'm working on a project which is using this plugin to format ruby code along with RuboCop for additional linting and style consistency. We're following the documented "Usage with Rubo...
X Description: Hello there! I'm working on a project which is using this plugin to format ruby code along with RuboCop for additional linting and style consistency. We're following the documented "Us...
Opengraph URL: https://github.com/prettier/plugin-ruby/issues/1460
X: @github
Domain: patch-diff.githubusercontent.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"plugin clashes with RuboCop's Style/SingleLineDoEndBlock and Style/BlockDelimiters","articleBody":"Hello there!\n\nI'm working on a project which is using this plugin to format ruby code along with RuboCop for additional linting and style consistency.\n\nWe're following the documented \"[Usage with RuboCop](https://github.com/prettier/plugin-ruby/issues/new)\" procedure of inheriting from the `.rubocop.yml` provided by this plugin.\n\nNevertheless, we've noticed an example where the two tools clash with each other. I've made a sample repo to reproduce this here: https://github.com/maxjacobson/prettier-plugin-ruby-example/\n\nI'll summarize the gist of the issue here as well.\n\n## Expected behavior:\n\nGiven a file `app.rb`\n\n```ruby\nexpect do\n foo\nend.to change(Bar, :baz, 1)\n```\n\nWhen I run `bundle exec rubocop --auto-correct \u0026\u0026 node_modules/.bin/prettier --write .`\n\nAnd I run `bundle exec rubocop`\n\nThen zero RuboCop offenses will be reported\n\n## Actual behavior\n\nprettier changes that file to \n\n```ruby\nexpect do foo end.to change(Bar, :baz, 1)\n```\n\nAnd rubocop finds these offenses:\n\n```\n$ bundle exec rubocop\nInspecting 2 files\n.C\n\nOffenses:\n\napp.rb:1:1: C: [Correctable] Style/SingleLineDoEndBlock: Prefer multiline do...end block.\nexpect do foo end.to change(Bar, :baz, 1)\n^^^^^^^^^^^^^^^^^\napp.rb:1:8: C: [Correctable] Style/BlockDelimiters: Prefer {...} over do...end for single-line blocks.\nexpect do foo end.to change(Bar, :baz, 1)\n ^^\n\n2 files inspected, 2 offenses detected, 2 offenses autocorrectable\n```\n\nIt seems that those two RuboCop cops, Style/SingleLineDoEndBlock and Style/BlockDelimiters, clash with this plugin. RuboCop wants this snippet to be three lines and prettier wants this snippet to be one line, so the file keeps bouncing back and forth trying to please both masters.\n\n## Brainstorming options\n\n- the plugin's `.rubocop.yml` could disable those two cops\n- perhaps the plugin's `.rubocop.yml` could _configure_ those two cops to be better aligned with this plugin's behavior\n- perhaps the plugin shouldn't touch this code at all? I'm not sure that the one line version is actually better than the three line version. It's not particularly idiomatic to have single line do end blocks, is it?\n- or if this plugin really does want to squash this block onto one line, perhaps it should use a curly-brace-delimited block instead of a do/end block. That would avoid tripping those RuboCop cops\n\n## one more question...\n\nOut of curiosity, I'm wondering if this project is still being worked on? It overall is pretty stable and very useful, but it has been pretty quiet release-wise all the same. \n\nMany thanks!","author":{"url":"https://github.com/maxjacobson","@type":"Person","name":"maxjacobson"},"datePublished":"2025-05-07T13:59:52.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":0},"url":"https://github.com/1460/plugin-ruby/issues/1460"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:bd8c4760-f9df-8fcf-5e68-9375a4188f51 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | 9BCE:1545B1:27C11:31B13:698D0501 |
| html-safe-nonce | 5b54046490e7cebd66db5de38ae88d928f8a50fbe7721608c964f56803175d58 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI5QkNFOjE1NDVCMToyN0MxMTozMUIxMzo2OThEMDUwMSIsInZpc2l0b3JfaWQiOiI2OTcxOTU1ODc1OTQ2ODM2NDkiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | d4cccff096e683e6a35946818a10e6edeaa58c532462b96d512924de65fbcaa7 |
| hovercard-subject-tag | issue:3046078064 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/prettier/plugin-ruby/1460/issue_layout |
| twitter:image | https://opengraph.githubassets.com/f32dfa0d4aee233f25f987d86c467811f6650f5cb2a02065175b51ee76901588/prettier/plugin-ruby/issues/1460 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/f32dfa0d4aee233f25f987d86c467811f6650f5cb2a02065175b51ee76901588/prettier/plugin-ruby/issues/1460 |
| og:image:alt | Hello there! I'm working on a project which is using this plugin to format ruby code along with RuboCop for additional linting and style consistency. We're following the documented "Usage with Rubo... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | maxjacobson |
| hostname | github.com |
| expected-hostname | github.com |
| None | f2da95634bce8a94cfa4123788169bfabdf845fd1d790fbaaaaab09dcfebdf28 |
| turbo-cache-control | no-preview |
| go-import | github.com/prettier/plugin-ruby git https://github.com/prettier/plugin-ruby.git |
| octolytics-dimension-user_id | 25822731 |
| octolytics-dimension-user_login | prettier |
| octolytics-dimension-repository_id | 134440972 |
| octolytics-dimension-repository_nwo | prettier/plugin-ruby |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 134440972 |
| octolytics-dimension-repository_network_root_nwo | prettier/plugin-ruby |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | c21843b18feba17d11efb1895a7db61e8672f2cf |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width