'Asdf wont switch local version based on tool-versions or using the local command
I downloaded asdf the other day and am trying to use it with a ruby on rails project I downloaded from Github.
When I run asdf install
, I get this response:
firebase 9.10.0 is already installed
ruby 2.7.2 is already installed
Then I run rails s
:
No preset version installed for command rails
Please install a version by running one of the following:
asdf install ruby 2.7.2
or add one of the following versions in your config file at
/Users/******/Desktop/****/.tool-versions
ruby 3.0.1
The project runs on ruby 2.7.2.
.tool-versions:
ruby 2.7.2
node 12.18.3
I installed asdf with homebrew and use oh-my-zhs with the asdf plugin.
EDIT: running
asdf install ruby 2.7.2
just says
ruby 2.7.2 is already installed
Solution 1:[1]
You need to reshim ruby. Run asdf reshim ruby
and then try running rails s
again.
Solution 2:[2]
If Ruby 2.7.2 is already in your .tool-versions
file, you can fix this by simply running
$ bundle
This will install the correct version of the Rails gem and everything should work again.
Try looking at the output of shim-versions
first and you will most likely see that Ruby 2.7.2 is there, but Rails 2.7.2 is not:
$ asdf shim-versions rails
ruby 2.7.0
$ asdf shim-versions ruby
ruby 2.7.2
ruby 2.7.0
Solution 3:[3]
I had a similar issue and I just reinstalled rails.
gem install rails
Solution 4:[4]
For RubyMine users
If you run the terminal commands inside of your integrated RubyMine terminal, nothing will change until you change the project SDK to the newly installed version. After restarting your terminal, everything should work as expected.
Solution 5:[5]
For people experiencing this issue, who've installed asdf via Homebrew and who are using the standard ZSH shell (no oh-my-zsh plugins), don't forget to source the asdf bash script:
echo -e "\n. $(brew --prefix asdf)/libexec/asdf.sh" >> ${ZDOTDIR:-~}/.zshrc
Solution 6:[6]
for diagnostics, please check out outputs of
which ruby
and
ruby --version
in the working directory of your project. If it indeed shows you ruby version 2.7.2, then run "gem install rails" or ("bundle install" if gemfile.lock is present) from this working directory again.
One common mistake is not to open new shell after modification of shell config files. Also zsh requires to run "rehash" command if some program is installed at different path, but reopening shell will solve that.
Solution 7:[7]
The following steps given by purplespline that I found in this Reddit thread worked for me:
asdf exec gem install rails
then you should be able to run other rails commands.
Solution 8:[8]
You should install bundle gem first
gem install bundle
then you can run bundle
or bundle install
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | OBCENEIKON |
Solution 2 | otherguy |
Solution 3 | NaguiHW |
Solution 4 | Rich Steinmetz |
Solution 5 | Roman |
Solution 6 | codesnik |
Solution 7 | Lahiru Jayaratne |
Solution 8 | yosefbennywidyo |