“rails s”不起作用,但“捆绑exec rails s”有效。为什么?

时间:2017-05-24 09:32:03

标签: ruby-on-rails ruby rubygems bundler

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

此外,当我运行gem list时,我只获得了一些宝石,但vendor/bundle目录中有很多宝石。

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

1 个答案:

答案 0 :(得分:1)

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

如果您正在运行较新的rails(v5),那么请查看binstubs,它可以通过bin目录中可执行的命令进行复制。这样你就可以简单地调用

bin / rails服务器

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