我从Github复制了该应用程序。使用 rbenv 安装了正确版本的 Ruby。我按gem install bundler
安装了捆绑器并运行了bundle install --path vendor/bundle
.所有 gem 都安装在应用程序的vendor/bundle
目录中。现在我想知道,为什么rails s
命令不起作用,但bundle exec rails s
有效?rspec
命令也是如此。这是因为我在目录中安装了 gem vendor/bundle
吗?我很困惑。
另外,当我运行gem list
时,我只得到几个 gem,但目录中有很多vendor/bundle
gem。
请告诉我为什么gem list
命令看不到目录中vendor/bundle
gem 以及为什么我需要使用 bundle exec
运行命令。谢谢!
使用 bundle exec 命令的目的是查找/搜索要在当前捆绑软件中运行的命令或在供应商目录中安装的 gem。
如果您运行的是较新的 rails (v5(,请查看复制可在 bin 目录中执行的命令的 binstub。这样您就可以简单地打电话
箱/导轨服务器
这与我们目前拥有的部署解决方案所遵循的方法相同。他们创建了一个 .bundle 目录,无需每次都进行捆绑安装。
为命令添加前缀bundle exec
执行命令,因为它不是轨道。要修复它,我们可以简单地运行: gem install rails
这将安装rails的所有依赖项,并且像rails s
或rails c
这样的命令将在没有bundle exec
的情况下工作。