Testdouble Standard Versions Save

Ruby's bikeshed-proof linter and formatter 🚲

v1.31.0

8 months ago

v0.0.36.1

1 year ago

Early versions of the gem had an open-ended >= version specifier on its dependency to the rubocop gem. Once we realized how often rubocop config YAML changes would break standard, we opted to fix to an exact version. And now that rubocop usually avoids introducing breaking changes in patch releases, we pin it to ~>, as you might have expected us to from the start.

I would have been content just making this change and not telling anyone (in fact I know I would have, because it's what I literally did, years ago), but unfortunately the Bundler resolver will often resolve the last version of standard with an open dependency on >=, which was 0.0.36. This leads to a pretty rotten new user experience, especially because the issue tends to only arise when adding standard to a Gemfile that already has rubocop in it, as documented in https://github.com/testdouble/standard/issues/340.

Now if you add standard and Bundler resolves to this open-ended version, it'll install this special 0.0.36.1 release and users will see this:

$ bundle
Fetching gem metadata from https://rubygems.org/.........
Resolving dependencies...
Using ast 2.4.2
Using bundler 2.4.10
Using json 2.6.3
Using parallel 1.22.1
Using regexp_parser 2.7.0
Using rexml 3.2.5
Using unicode-display_width 2.4.2
Using ruby-progressbar 1.13.0
Using rainbow 3.1.1
Using parser 3.2.2.0
Using rubocop-ast 1.28.0
Using rubocop 1.49.0
Fetching standard 0.0.36.1
Installing standard 0.0.36.1
Bundle complete! 2 Gemfile dependencies, 13 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
Post-install message from standard:
============================================================================
= WARNING: You do not want to run this very, very old version of Standard! =
============================================================================

What's going on here?
---------------------
Versions of Standard prior to 0.0.37 depended on `>= 0.63' of RuboCop, which
means that Bundler continues to resolve to those (now ancient) versions
whenever `gem "standard"' is added to a Gemfile that has already locked
to a newer version of RuboCop than standard currently depends on.

"How do I fix this?", you might be asking.

How to fix this
---------------
If you add a version specifier pinning `standard' to a version newer
than 0.0.36.1, Bundler will resolve appropriate versions of `standard',
`rubocop', and any other rubocop-dependent gems you may have installed.

1. Update your Gemfile to pin standard to be at least one such version:

  gem "standard", ">= 1.0"

2. Run `bundle`, which will install and lock more appropriate versions

  Example output:
    Using rubocop 1.48.1 (was 1.49.0)
    Using rubocop-performance 1.16.0
    Using standard 1.26.0 (was 0.0.36)

This version (0.0.36.1) is an inoperative placeholder gem that exists
solely to print this message.

We're very sorry for this inconvenience!

============================================================================
=                         END OF BIG SCARY WARNING                         =
============================================================================

As the message explains, the CLI and Rake tasks will not work, instead they'll just reprint the message. In the (hard to fathom) case that anyone is intentionally using the 0.0.36 version of Standard, they can always downgrade from 0.0.36.1 back to it.

The only people impacted by this very odd release will be folks who find themselves paying the consequences for my youthful indiscretion—my bad, everybody. Sorry for the annoyance!

v1.25.0

1 year ago

What's Changed

New Contributors

Full Changelog: https://github.com/testdouble/standard/compare/v1.24.3...v1.25.0

v1.24.3

1 year ago

v1.24.2

1 year ago

v1.24.1

1 year ago

v1.24.0

1 year ago

v1.23.0

1 year ago

v1.21.0

1 year ago

v1.9.0

2 years ago