繁体   English   中英

“rails s”不起作用,但“bundle exec rails s”起作用。 为什么?

[英]"rails s" doesn't work but "bundle exec rails s" works. Why?

我从 Github 复制了该应用程序。 使用 rbenv 安装了正确版本的 Ruby。 我通过gem install bundler并运行了bundle install --path vendor/bundle 所有 gem 都安装在应用程序的vendor/bundle目录中。 现在我想知道,为什么rails s命令不起作用但bundle exec rails s起作用? rspec命令相同。 这是因为我在vendor/bundle目录中安装了 gems 吗? 我很困惑。

另外,当我运行gem list时,我只得到一些 gem,但在vendor/bundle目录中有很多。

请告诉我为什么gem list命令看不到vendor/bundle目录中的 gem,以及为什么我需要使用bundle exec运行命令。 谢谢!

使用bundle exec命令的目的是查找/搜索要在当前bundle中运行的命令或要在供应商目录中安装的gem的命令。

如果您正在运行较新的导轨(v5),请查看binstub,它们复制到bin目录中可执行的命令。 这样您就可以简单地致电

箱/轨服务器

这是我们当前拥有的部署解决方案所遵循的相同方法。 他们创建一个.bundle目录,从而无需每次都进行捆绑安装。

为命令添加前缀bundle exec会执行该命令,因为它不是 Rails 的。 要修复它,我们可以简单地运行: gem install rails这将安装 rails 的所有依赖项和命令,如rails srails c将在没有bundle exec的情况下工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM