asdf-vm/asdf

bug: No times executable found for ruby 3.3.0

dorianmariecom opened this issue · 3 comments

Describe the Bug

I have a gem, dorian-times which has an executable times

I can do gem install dorian-times

But when I do times I get:

> times
No times executable found for ruby 3.3.0

Other projects like dorian-each work just fine and use the same setup

Steps to Reproduce

  1. asdf install ruby 3.3.0
  2. asdf local ruby 3.3.0 or asdf global ruby 3.3.0
  3. gem install dorian-times
  4. times

Expected Behaviour

Shows the help message

Actual Behaviour

Shows an error message

Environment

OS:
Darwin Dorians-MacBook-Air.local 23.4.0 Darwin Kernel Version 23.4.0: Fri Mar 15 00:19:22 PDT 2024; root:xnu-10063.101.17~1/RELEASE_ARM64_T8112 arm64

SHELL:
fish, version 3.7.0

BASH VERSION:
3.2.57(1)-release

ASDF VERSION:
v0.14.0-ccdd47d

ASDF INTERNAL VARIABLES:
ASDF_DEFAULT_TOOL_VERSIONS_FILENAME=.tool-versions
ASDF_DATA_DIR=/Users/dorianmariefr/.asdf
ASDF_DIR=/Users/dorianmariefr/.asdf
ASDF_CONFIG_FILE=/Users/dorianmariefr/.asdfrc

ASDF INSTALLED PLUGINS:
nodejs                       https://github.com/asdf-vm/asdf-nodejs.git master c5b7c40
ruby                         https://github.com/asdf-vm/asdf-ruby.git master 7a22142
rust                         https://github.com/code-lever/asdf-rust.git master 95acf4f
yarn                         https://github.com/twuni/asdf-yarn.git main 376c540

asdf plugins affected (if relevant)

ruby

I came across the same issue myself. It seems that the shim path is not being added in the right place in your $PATH variable, i.e. right at the beginning.

I updated my /opt/homebrew/opt/asdf/libexec/asdf.fish script on lines 19-21 to:

if not test (contains -i $_asdf_shims $PATH) -eq 1
    set -gx --prepend PATH $_asdf_shims
end

I am also suffering from a similar problem. I think the problem was caused by the v0.14.0 release. Since I recently ran a brew upgrade, the combination of fish and asdf ruby no longer works correctly.

_

I think the PATH environment variable in the initial setup script for fish is not set properly.

I had more issues with PATH being in dir1:dir2 format during the running of /opt/homebrew/opt/asdf/libexec/asdf.fish instead of the fish format of dir1 dir2.

I updated /opt/homebrew/opt/asdf/libexec/asdf.fish to simply just prepend the shim path without doing any checks. It's hacky, but it works for now.

set -gx --prepend PATH $_asdf_shims $PATH

instead of

if not test (contains -i $_asdf_shims $PATH) -eq 1
    set -gx --prepend PATH $_asdf_shims
end