"Rails S"不起作用,但"Bundle exec Rails S"有效。为什么?



我从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 srails c这样的命令将在没有bundle exec的情况下工作。

最新更新