Communities

Writing
Writing
Codidact Meta
Codidact Meta
The Great Outdoors
The Great Outdoors
Photography & Video
Photography & Video
Scientific Speculation
Scientific Speculation
Cooking
Cooking
Electrical Engineering
Electrical Engineering
Judaism
Judaism
Languages & Linguistics
Languages & Linguistics
Software Development
Software Development
Mathematics
Mathematics
Christianity
Christianity
Code Golf
Code Golf
Music
Music
Physics
Physics
Linux Systems
Linux Systems
Power Users
Power Users
Tabletop RPGs
Tabletop RPGs
Community Proposals
Community Proposals
tag:snake search within a tag
answers:0 unanswered questions
user:xxxx search by author id
score:0.5 posts with 0.5+ score
"snake oil" exact phrase
votes:4 posts with 4+ votes
created:<1w created < 1 week ago
post_type:xxxx type of post
Search help
Notifications
Mark all as read See all your notifications »
Q&A

Post History

#2: Post edited by user avatar Taeir‭ · 2023-08-06T11:31:04Z (10 months ago)
  • I believe that rvm has a mechanism where it will automatically switch to the correct ruby version based on the lockfile. So if the lockfile of an application were to say:
  • `ruby '3.1'`, rvm will detect that and automatically switch to using the correct Ruby version for the project. It may also support versions like `ruby '>= 3.1`.
  • Now the problem is that somewhat recently ruby 2.7 became End-Of-Life. Ruby 3.0 made some syntax/behavior changes which actually broke compatibility with older code (hence why it went from Ruby 2 to Ruby 3). We updated QPixel to support these new versions of Ruby 3 but for now we also maintain compatibility with Ruby 2.7 to give people more time to update.
  • In doing so, we had to switch from listing a *specific* ruby version to a range of versions, defined as `>= 2.7, < 4`. That is, 2.7 is supported, and all Ruby 3 versions are supported (and should work), but Ruby 4 (when that is released) probably won't be. RVM does not support this statement in it's auto version switching, hence why you see the error.
  • So to answer your questions:
  • 1. Because we have a range version listed in our lockfile
  • 2. RVM is unable to determine the version of ruby to auto-switch to
  • 3. No, RVM's fallback behavior for if the auto-switching does not work, is to use the "currently set version of ruby", which in almost all cases is a supported version.
  • I believe that rvm has a mechanism where it will automatically switch to the correct ruby version based on the lockfile. So if the lockfile of an application were to say:
  • `ruby '3.1'`, rvm will detect that and automatically switch to using the correct Ruby version for the project out of the potentially many versions you have installed (or prompt you to install it, or maybe it even installs it for you).
  • Now the problem is that somewhat recently ruby 2.7 became End-Of-Life. Ruby 3.0 made some syntax/behavior changes which actually broke compatibility with older code (hence why it went from Ruby 2 to Ruby 3). We updated QPixel to support these new versions of Ruby 3 but for now we also maintain compatibility with Ruby 2.7 to give people more time to update.
  • In doing so, we had to switch from listing a *specific* ruby version to a range of versions, defined as `>= 2.7, < 4`. That is, 2.7 is supported, and all Ruby 3 versions are supported (and should work), but Ruby 4 (when that is released) probably won't be. RVM does not support this statement in it's auto version switching, hence why you see the error.
  • So to answer your questions:
  • 1. Because we have a range version listed in our lockfile
  • 2. RVM is unable to determine the version of ruby to auto-switch to
  • 3. No, RVM's fallback behavior for if the auto-switching does not work, is to use the "currently set version of ruby", which in almost all cases is a supported version.
#1: Initial revision by user avatar Taeir‭ · 2023-08-06T11:29:54Z (10 months ago)
I believe that rvm has a mechanism where it will automatically switch to the correct ruby version based on the lockfile. So if the lockfile of an application were to say:
`ruby '3.1'`, rvm will detect that and automatically switch to using the correct Ruby version for the project. It may also support versions like `ruby '>= 3.1`.

Now the problem is that somewhat recently ruby 2.7 became End-Of-Life. Ruby 3.0 made some syntax/behavior changes which actually broke compatibility with older code (hence why it went from Ruby 2 to Ruby 3). We updated QPixel to support these new versions of Ruby 3 but for now we also maintain compatibility with Ruby 2.7 to give people more time to update.

In doing so, we had to switch from listing a *specific* ruby version to a range of versions, defined as `>= 2.7, < 4`. That is, 2.7 is supported, and all Ruby 3 versions are supported (and should work), but Ruby 4 (when that is released) probably won't be. RVM does not support this statement in it's auto version switching, hence why you see the error.

So to answer your questions:

1. Because we have a range version listed in our lockfile
2. RVM is unable to determine the version of ruby to auto-switch to
3. No, RVM's fallback behavior for if the auto-switching does not work, is to use the "currently set version of ruby", which in almost all cases is a supported version.