如何在没有 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。
我今天实际上遇到了同样的问题。 我已经为我的两个 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 rehash
和gem 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
,你会得到同样的错误吗?
这是一个非常奇怪的场景。 命令“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”时得到的结果的输出。 你能提供的任何帮助都会很棒。
您的问题可能是由您似乎已安装的rbenv-bundler
插件引起的。 相关:#394
rm ~/.rbenv/plugins/bundler
rm ~/.rbenv/shims
rbenv rehash
非常感谢@mislav似乎已经修复了它。 :+1:
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 ~/.bashrc
和gedit ~/.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 -)"
最有用的评论
对于要在 Bundler 项目之外使用
rails
命令的每个 Ruby 版本,您需要gem install rails
。 看起来你已经为 1.8.7-p352 安装了它,但不是 1.9.2-p290。