<p>rbenv:rails:找不到命令</p>

创建于 2011-09-02  ·  85评论  ·  资料来源: rbenv/rbenv

如何在没有 Bundler / bundle exec的情况下运行 gem 可执行文件?

~ $ rbenv rehash
~ $ rbenv global
1.9.2-p290
~ $ gem which rails
/Users/meleyal/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/railties-3.1.0/lib/rails.rb
~ $ rails new test
rbenv: rails: command not found

The `rails' command exists in these Ruby versions:
  1.8.7-p352

~ $ bundle exec rails new test
Could not locate Gemfile

可能与#40、#61有关

最有用的评论

对于要在 Bundler 项目之外使用rails命令的每个 Ruby 版本,您需要gem install rails 。 看起来你已经为 1.8.7-p352 安装了它,但不是 1.9.2-p290。

所有85条评论

对于要在 Bundler 项目之外使用rails命令的每个 Ruby 版本,您需要gem install rails 。 看起来你已经为 1.8.7-p352 安装了它,但不是 1.9.2-p290。

我今天实际上遇到了同样的问题。 我已经为我的两个 Rails 版本安装了 Rails,但是在除 _1.8.7_ 之外的其他版本中运行rails -v时,我仍然得到以下结果。

rbenv: rails: command not found
The `rails' command exists in these Ruby versions:
  1.8.7-p352

站在我当前的项目中,有一个包含1.9.2-p290并运行rbenv rehashgem list rails的 _.rbenv-version_ 文件,我得到以下输出:

 rails (3.0.9)

我通过rbenv version仔细检查了这是否是正确的 Ruby 版本,并得到以下输出:

1.9.2-p290 (set by /Users/kevin/Sites/Rails/kryast/.rbenv-version)

关于这个问题的任何想法?

我对 rspec 有同样的问题。 它安装在 2 个红宝石中,但 1.9.2 抱怨它不存在并指向 1.8.7。 如果我 gem install rspec 并再试一次,同样的事情。

Rails 二进制文件也有同样的问题。 宝石已安装; 使用 bundle exec 运行 rails 工作正常。

运行 rbenv exec rails 也可以正常工作。

只运行 rails 抱怨 Rails gem 没有安装,我应该 sudo gem install rails 让它可用。

其他二进制文件(cap、rspec、cucumber)在没有 * exec 帮助的情况下都可以正常工作。

实际上,我通过手动安装 rails gem install rails修复了这个错误,而不使用捆绑器。 之后,再次运行rails -v并且 rbenv 找到了我的安装。 因此,通过捆绑程序安装 Rails 似乎会出现问题。

嗯...想知道为什么这个问题被关闭了? 我刚刚干安装了 rbenv/ruby-build(没有以前的 rvm),并且没有为捆绑的 gem 创建垫片。 当我跑回去做 gem install gem name 时,一切都很好。 这是我们应该为下一个版本保留的东西吗?

这不是一个“问题”。 Bundler 不能以这种方式工作。

请参阅捆绑程序--binstubs标志。

抱歉,我们没有添加任何特定于 rbenv 的捆绑程序。

rbenv-bundler 看起来很棒——但这正是我们首先拥有插件系统的原因。 rbenv 本身对 RubyGems 或 Bundler 一无所知。

我刚刚重新安装了 Lion。 安装 rbenv、ruby 和 rails 后,我无法从终端运行rails 。 它只是说明"Rails is not currently installed..." 。 但是,我可以毫无问题地运行rbenv exec rails 。 有什么建议?

不是为了让事情继续运行,而是你执行了 rbenv rehash 吗?

2011 年 10 月 4 日,星期二,下午 12:56,迈克尔·明顿 <
回复@reply.github.com>写道:

我刚刚重新安装了 Lion。 安装 rbenv、ruby 和 rails 后
我无法从终端运行导轨。 它只是说“Rails 不是
当前安装...”。但是,我可以运行 rbenv exec rails 而无需
问题。 有什么建议?

直接回复此邮件或在 GitHub 上查看:
https://github.com/sstephenson/rbenv/issues/73#issuecomment -2288674

我做到了。

更新:
我通过 Homebrew 安装并错过了您必须手动将eval "$(rbenv init -)"添加到您的个人资料中。 这很可能也是你的问题,埃里克。 _/叹_

我有相同或类似的问题...

> rails
Rails is not currently installed on this system. To get the latest version, simply type:

    $ sudo gem install rails

原来我在/usr/bin/rails有一些东西。 我不太确定它是从哪里来的,但我sudo rm把它搞定了。 希望能帮助到你。

@blakefrost :对我来说也一样,我也删除了该命令,一切正常。

对我来说同样的问题。 这不应该被关闭。
我尝试删除 /usr/bin/rails 命令但仍然无法使用它。
得到这个错误:
$导轨-v
-bash: /usr/bin/rails: 没有这样的文件或目录
在我得到这个之前:
导轨 c
Rails 目前没有安装在这个系统上。 要获取最新版本,只需键入:

$ sudo gem install rails

然后,您可以重新运行“rails”命令。

@rebelwarrior 提供了一些上下文:-)

$ rbenv 版本
$红宝石-v
$ rbenv 重新散列
$ gem list rails
$ unname -a

@mauriziodemagnis
rbenv 版本为您提供了我安装的唯一一个 1.9.3p0,与 ruby​​-v 相同的结果,即使在重新哈希之后,gem list rails 也会列出它。 我不知道 uname -a 是什么或做什么,所以我从来没有运行它(现在配备它)。 -- 哦,我在 MacBook OSX 10.6 上

我设法通过 sudo rm -rf /usr/bin/rails (和 rake)解决了这个问题,然后再次使用 ruby​​_build 重新安装 1.9.3p0。 然后关闭终端并重新启动它,它现在似乎可以工作了。 我接下来需要测试 erb,因为我没有从 /user/bin/ 中删除那个,但我认为重新安装解决了我遇到的任何问题。

仅供参考,我已经安装了 jruby(不是在 rbenv 上,而是正常的)。

我遇到了与此线程中描述的问题类似的问题。 我认为 rbenv 需要更好的 install/convert-from-rvm 指令来解释事情如何/应该如何工作。

新安装的 rbenv 和新建的 rubies。 将 1.9.3 设置为我的全局红宝石。 然后尝试:

➜ gem install rails
...
➜ rbenv rehash
➜ rails -v
Rails is not currently installed on this system. To get the latest version, simply type:

    $ sudo gem install rails

You can then rerun your "rails" command.
➜  rbenv versions
  1.8.7-p352
  1.9.2-p290
* 1.9.3-p0 (set by /Users/dprior/.rbenv/version)
  ree-1.8.7-2010.01
➜  which rails
/Users/dprior/.rbenv/shims/rails

但是,如果我打开一个新终端, rails -v 会报告正确的版本。 这到底是怎么回事? 有任何想法吗?

和这里的许多问题一样。 尝试了所有建议,没有运气,感到困惑,然后吹走了版本目录〜/ .rbenv/versions /,rbenv install 1.9.2-p290,gem install rails,rbenv rehash,成功。

问题似乎出在使用捆绑器安装导轨时。 我在我的 Gemfile 中指定了 rails,这就是我的结果:

捆绑安装
宝石清单导轨

导轨 (3.1.3)
rbenv 重新散列
导轨 c
找不到命令:rails
宝石卸载导轨
宝石安装导轨
rvenv 重新散列
导轨 c
加载开发环境(Rails 3.1.3)

@espen这是捆绑器的记录行为。 bundler 安装的 Gem 不会将它们的二进制文件放在共享的 bin 目录中(即 gem 的 EXECUTABLE DIRECTORY)。

那么处理这个问题的最佳方法是什么? 使用 gemset 所以只有一个 rails gem? 使用 bundler --path DIR 在本地打包 gem 并使用 bundle exec rails ? rbenv 或任何插件是否为此提供了最佳实践解决方案?

gem install rails && rbenv rehash

安装多个 rails gem 不是问题。 Rails 将加载 Gemfile.lock 中指定的版本。

或者您可以bundle exec rails或使用--binstubs ./bin/rails

例如,我可以在使用 bin/rails 的 rails 项目中使用 rails(因为我将--binstubs与 bundler 一起使用)

cd ~/Projects/my_app
bin/rails -v         # 3.2.1

但我似乎没有办法在 rails 项目之外安装 rails 命令

gem install rails    # installs 3.2.1 gem
rbenv rehash
which ruby           # /Users/mjo/.rbenv/shims/ruby
rbenv which ruby     # /Users/mjo/.rbenv/versions/1.9.2-p290/bin/ruby
rbenv which rails    # rails command not found
which rails          # /opt/local/bin/rails  (installed before I started using rbenv)
rails -v             # 2.3.5
echo $PATH           # /Users/mjo/.rbenv/shims:/Users/mjo/.rbenv/bin:/usr/local/bin:/opt/local/bin:......

好像不能解决这个问题,在这里尝试了所有方法都没有成功,切换回rvm,更容易使用

事实证明,您需要使用 rbenv exec 在正确的位置获取 rails 二进制文件:
rbenv exec gem install rails

感谢您的建议,但它对我不起作用:

rbenv exec gem install rails  # install's 3.2.1 gem
rbenv rehash
rbenv which rails             # rbenv: rails: command not found

感谢 cschiewek 的建议,但仍然对我不起作用:

rbenv exec gem install rails   # installs 3.2.1
rbenv rehash
rbenv which rails              # not found

没有一个解决方案对我有用......
在重新安装 ruby​​ 之前,我每次都必须在 bundler 的上下文中运行 rails。 然后,我没有急于在我的项目目录中使用bundle ,而是通过gem install rails安装了 rails,然后捆绑了我需要的其余 gem。 这似乎为我解决了 rails 可执行问题。

这已经在一台新的开发机器上第二次发生了,我现在也怀疑@muxcmux似乎是,如果您在执行gem install rails之前在项目上运行捆绑包,那么所有对gem install rails的尝试都会失败。 我已经通过吹走所有 rbenv、重新安装并确保在执行任何项目bundle操作之前先gem install rails解决了这两次问题。

我也遇到过这个问题。 到目前为止没有找到解决方案。 我安装了旧版本的 rails (3.1.3),在~/.rbenv/versions/1.9.3-p0/lib/ruby/gems/1.9.1/gems/rails-3.1.3/bin中找到了一个名为rails $ 的二进制文件。 在安装新版本的 Rails (3.2.1) 时,创建的目录保持为空。

+1
如果安装了 rails 项目: RAILS_APP/script/rails

我和@haarts 有同样的经历。 rbenv 似乎安装了最新的 Rails (3.2.1),但目录/Users/andy/.rbenv/versions/1.9.3-p0/lib/ruby/gems/1.9.1/gems/rails-3.2.1/是空的,而不是包含bin目录。

为了解决这个问题,我创建了一个新目录,我想要我的 Rails 3.2.1 应用程序,其中包含一个带有单行gem 'rails', '3.2.1'的 Gemfile。 然后我将其捆绑并运行rails new myapp以获取应用程序骨架。 IE:

$ mkdir tmp
$ cd tmp
$ echo 'gem "rails", "3.2.1"' > Gemfile
$ bundle
$ bundle exec rails new myapp
$ mv myapp ..
$ cd ..
$ rm -r tmp

我遇到了同样的问题。 我尝试删除/usr/bin/rails并重做gem install rails ,但 rbenv 仍然抱怨没有安装 rails。 我看到了 minton 关于eval "$(rbenv init -)"的评论,并仔细检查了它实际上已添加到我的个人资料中。 然后我重新启动了我的终端,你知道吗,它成功了! 所以我想知道eval "$(rbenv init -)"是否需要再次运行?

我尝试卸载并再次尝试以测试我的理论。 rails gem 应该被卸载了,但是 rbenv 仍然在某个地方找到 rails。 有没有其他人发现它可以再次运行eval "$(rbenv init -)" (或至少通过重新启动终端)?

我遇到了同样的问题,我通过重新安装 railties(而不是 rails)解决了这个问题,因为 rails 二进制文件在 railties gem 中:

$ gem install railties && rbenv rehash

安装 railties 对我有用,谢谢@veilleperso!

哦耶! 谢谢你veilleperso!

感谢@veilleperso ,这对 Rails 很好,但是我们可以为 rspec 做什么?

对于 rspec,请尝试:

gem uninstall rspec rspec-core
gem install rspec
rbenv rehash

为我工作。

是的..也为我工作! 谢谢@rssaddict!!

实际上,在提取了最新版本的 rbenv 之后,这似乎不再是 0.3.0 的问题......有人可以确认吗?

不。对我来说,问题仍然存在,今天才开始使用 rbenv。 在执行 gem install rails 之前在项目目录中运行了 bundle。 @veilleperso解决方案有效,谢谢。

与@rzmz 相同。 感谢@veilleperso的诀窍:-)。

谢谢@veilleperso ,它就像一个魅力!

gem 安装 railties 再次对我有用。 有人知道为什么吗?

我安装了 rbenv(按照说明),安装了 ruby​​ 1.9.3-p125 并运行了 rbenv rehash。 然后我运行“gem install rails”,安装后,我再次运行 rbenv rehash。 然后我完全退出终端并重新打开它并运行'rails -v'并且它起作用了。 对我来说,关键是完全退出终端,然后重新打开。 希望这可以帮助某人。

是的,我也这样做了,将 gemfile 添加到空白目录,然后捆绑新的 testapp

我尝试升级(git pull on .rbenv)并安装最新的 ruby​​ 和 rbenv rehash,但没有任何乐趣

希望这对某人有所帮助:就我而言,我遵循有关使用 rvm 安装 rails 的说明(http://spyrestudios.com/setting-up-a-rails-development-system-on-mac-osx-snow-leopard/ )。 而且几乎不知道自己在做什么,当我打开第二个终端窗口并且无法进入轨道时,我陷入了困境。

为了纠正这个问题,我首先不得不摆弄我的 shell 文件以确保添加了路径。 但关键是输入'rvm use 1.9。 [email protected] ' 命令。 一旦我这样做了,我突然拿回了我已经安装的所有东西。

@senortim先生,当您不知道自己在说什么时,通常最好什么都不说。

我遵循@fernandoaleman提到的重启终端,第一次没有运气,但在我再试一次后,它就可以了。

+1 退出终端(iTerm2)并重新启动它的解决方案 - 现在工作正常

$ rbenv 版本
1.9.3-p0(由 /Users/jones/.rbenv/version 设置)
$哪个轨道
/Users/jones/.rbenv/shims/rails
$导轨-v
导轨 3.2.5

这是在 Mac OS X Lion 上

我刚刚经历过这个问题。 我使用 Mac OS X Lion。

经过几个小时的谷歌搜索和挣扎,我找到了它发生的原因。 导致此问题的罪魁祸首是 $GEM_HOME 环境变量。 这指向了旧的 ruby​​ get 目录,所以我正在执行的 gem 来自这个 $GEM_HOME 层次结构的某个地方。 该 gem 用于 Mac 的默认 ruby​​ 安装。 所以无论我执行多少次“gem install rails”,rails 也安装在 $GEM_HOME 下。 这就是为什么找不到命令并且总是返回“找不到命令”消息的原因。

您需要做的是 unser GEM_HOME,然后再次安装 rails。 这样,rails 将安装在 .rbenv/somewhere 下,'rails -v' 将显示版本号。

是的,只需退出终端并打开一个新外壳。

谢谢@dukejones和@nodayoshikazu。 在我看到这个之前,我觉得自己像个白痴。

<br i="5"/> {12-10-03 13:15}[1.9.3-p194]vps:~ carcia% which rails<br i="6"/> rails not found<br i="7"/> {12-10-03 13:15}[1.9.3-p194]vps:~ carcia% gem install rails<br i="8"/> Successfully installed rails-3.2.8<br i="9"/> 1 gem installed<br i="10"/> {12-10-03 13:16}[1.9.3-p194]vps:~ carcia% which rails<br i="11"/> rails not found<br i="12"/> {12-10-03 13:16}[1.9.3-p194]vps:~ carcia% rbenv rehash<br i="13"/> Could not load the bundler gem for Ruby version 1.9.3-p194.<br i="14"/> {12-10-03 13:17}[1.9.3-p194]vps:~ carcia% which rails<br i="15"/> rails not found<br i="16"/>

(我正在使用 zsh。)不要退出你的 shell,而是运行eval "$(rbenv init -)" 。 它似乎更新了 zsh 完成,这使我的 shell 找到了正确的rails~/.rbenv/shims/rails )。 我想知道为什么rbenv rehash没有解决这个问题。

编辑:

我不能重复它,现在rbenv rehash工作正常:

$ gem uninstall rails railties 
Successfully uninstalled rails-3.2.8
Remove executables:
    rails

in addition to the gem? [Yn]  y
Removing rails
Successfully uninstalled railties-3.2.8
$ eval "$(rbenv init -)"       
$ rails -v
Rails is not currently installed on this system. To get the latest version, simply type:

    $ sudo gem install rails

You can then rerun your "rails" command.
$ gem install rails            
Fetching: railties-3.2.8.gem (100%)
Fetching: rails-3.2.8.gem (100%)
Successfully installed railties-3.2.8
Successfully installed rails-3.2.8
2 gems installed
$ rails -v
Rails is not currently installed on this system. To get the latest version, simply type:

    $ sudo gem install rails

You can then rerun your "rails" command.
$ rbenv rehash
$ rails -v    
Rails 3.2.8

有这个问题。 @veilleperso的解决方案对我有用。

$ rails -v
Rails 2.3.14

$ gem install railties && rbenv rehash

(然后完全关闭终端并重新打开)

$ rails -v
Rails 3.2.9

我有同样的问题。 运行 'rbenv rehash' 修复了它

由于以下之间的细微环境差异,人们可能会遇到这种情况:

sudo rbenv rehash

sudo su -
rbenv rehash

在我的环境中,第二种方法会更新垫片,而第一种方法不会...

你们中的一些人可能会因为安装后没有重新加载 shell 而遇到这个问题。

@veilleperso ftw,谢谢!

+1 退出终端(iTerm2)并重新启动它的解决方案 - 现在工作正常
谢谢

对于你们中的一些人……我家中有一个 .gem 文件夹……我保存了它,问题就消失了。 :-)

我遇到了完全相同的问题。 我已经尝试了上面的所有方法,但没有一个奏效。 真的很失望,因为我不愿意回到 rvm。 如果我在我的站点目录中的文件夹中创建子文件夹,似乎只有一个问题。

@rosco77你使用的是哪个 rbenv 版本? 检查rbenv version 。 如果你gem install rails ,安装是否成功完成? 之后执行rbenv rehash 。 现在如果你尝试rails ,你会得到同样的错误吗?

您是否正确安装了 rbenv

这是一个非常奇怪的场景。 命令“rails new myproject”可以按预期在我的系统上的任何位置运行,除非我在 ~./Sites 目录的子文件夹中尝试运行它。 例如,它适用于“~/Desktop/child-folder/third-level”或“~/rails-projects/child-folder”。

如果我运行 rbenv 版本,我会得到“2.0.0-p247(由 /Users/rosco77/.rbenv/version 设置)”。

如果我运行 gem install rails 它安装成功,我收到以下消息“成功安装 rails-4.0.1
已安装 1 个宝石”。

我已经运行了 rbenv rehash,但当我尝试在该特定文件夹中运行命令时,仍然收到相同的错误消息“无法找到 Gemfile”。

我试图删除有问题的文件夹。 尝试了不同的名称等,但它不起作用。

我检查了我的安装,这是我运行 echo $PATH | 时得到的输出 grep --color=auto "$(rbenv root)/shims":

"/Users/rosco77/.rbenv/shims:/Users/rosco77/.rbenv/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin 。”

我附上了运行“curl -s https://gist.github.com/mislav/4728286/raw/rbenv-doctor.sh | bash -x 2>&1”时得到的结果的输出。 你能提供的任何帮助都会很棒。

screen shot 2013-11-15 at 16 42 39

您的问题可能是由您似乎已安装的rbenv-bundler插件引起的。 相关:#394

  1. rm ~/.rbenv/plugins/bundler
  2. rm ~/.rbenv/shims
  3. rbenv rehash
  4. 再试一次。

非常感谢@mislav似乎已经修复了它。 :+1:

gem install railties 成功了!

gem install railties && rbenv rehash

我有同样的问题,上面的解决方案并没有解决我的问题。 在将我的全局 Ruby 版本升级到 2.2.2 后,我出现了这个错误。 升级后我必须运行:

rbenv 外壳 2.2.2

一旦我设置好了,我就可以安装捆绑器,然后捆绑到我的应用程序目录中。 这是帮助我的stackoverflow帖子: http ://stackoverflow.com/questions/17562426/installing-gems-to-which-ruby-with-rbenv

@tmartyny您必须为每个打算使用它的Ruby版本安装Bundler。 当您执行rbenv global 2.2.2时,这并不意味着全局版本已应用于您的当前目录。 也许本地目录中有一个.ruby-version文件指定了不同的 Ruby 版本。 在任何情况下,您都可以为所有 Ruby 版本安装 bundler:

for ver in `rbenv versions --bare`; do RBENV_VERSION=$ver gem i bundler; done

首先删除任何以前的 yaml 文档

光盘 .rvm/src
sudo rm -rf yaml*
然后您可以通过以下方式完成其余的安装 -

rvm pkg 安装 libyaml

PS 在此之后您将需要重新安装 ruby​​。

@FWOliver您似乎在使用 RVM,它是与“rbenv”不同的 Ruby 版本管理器,这是我们在这里讨论的内容。

嘿 - 我正在使用 zsh 并且想知道为什么每次启动终端时都会收到以下警告: /Users/user/.zshenv:2: command not found: rbenv

一切似乎都很好,我正在使用 rbenv 通过以下.zshenv文件管理我的版本(如各种在线资源中所建议的那样,在.zshrc中不起作用。)

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
alias bex="bundle exec"

似乎~/.rbenv/bin/rbenv不存在,这表明您可能没有正确安装 rbenv?

谢谢@mislav 。 没有~/.rbenv/bin/rbenv - 它不存在。 目录~/.rbenv/确实存在并且仅包含plugins shims version versions

哪个红宝石给出/Users/user/.rbenv/shims/ruby 。 我已经能够将我正在处理的项目的 ruby​​ 版本设置为 2.2.3,并且一直在使用 bundle install 安装 gems。 经调查,特定的 gem 已安装到~/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems
在 2.2.3 目录中有一个 2.2.0 目录似乎很奇怪。
不太清楚发生了什么。 我用自制软件安装。

@mislav解决方案也为我做了,但~/.rbenv/shims是一个文件夹,所以我必须输入rm -rf ~/.rbenv/shims才能使其正常工作。 非常感谢米斯拉夫!

@abcbots谢谢你,伙计! 它有助于。

当我运行 chef-client 时,即使我使用 rbenv 安装了 2.1.0 和 2.3.1 两个 ruby​​ 版本,我也会收到此错误。

`bundle' 命令存在于这些 Ruby 版本中:
2.1.0
卡在这个问题上,谁能帮帮我

我在 Intellij IDEA 上遇到了同样的问题,我所做的只是将 SDK 从 2.4 更改为 2.3.3
然后$ gem install rails -> $ bundle install 😊希望它有所帮助

宝石安装捆绑器

您应该将部分初始化导轨从文件bashrc复制到zshrc ,我使用gedit ~/.bashrcgedit ~/.zshrc打开它们。
像我这样的 :

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"

希望它有用:)
sr,如果我的英语很糟糕:(
谢谢你帮我修好我的英语:)

以防万一。 在 Ubuntu 16.04 上工作
rbenv 通常使用 .bashrc 安装
就我而言,我还向 .profile 添加了最后几行,现在 cron 工作正常:

我将这些行添加到 .profile,从 .bashrc 复制

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
此页面是否有帮助?
0 / 5 - 0 等级