ruby “rails s”不工作,但“bundle exec rails s”工作,为什么?为什么?

qmelpv7a  于 2023-10-17  发布在  Ruby
关注(0)|答案(3)|浏览(129)

我从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。
请告诉我为什么gem list命令看不到vendor/bundle目录中的gem,以及为什么我需要用bundle exec运行命令。谢谢你,谢谢!

exdqitrt

exdqitrt1#

使用bundle exec命令的目的是在当前bundle或已安装的gems中查找/搜索您想要在供应商目录中运行的命令。
如果你运行的是较新的rails(v5),那么看看bin存根,它复制了bin目录中的可执行命令。这样你就可以简单地调用
bin/rails服务器
这是我们目前拥有的部署解决方案所遵循的相同方法。他们创建了一个.bundle目录,这样就不需要每次都进行bundle安装。

eni9jsuy

eni9jsuy2#

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

r6hnlfcb

r6hnlfcb3#

是的,但是不起作用,我也试过这个。同样,当我在控制台捆绑包exec rails上应用时,这对我很有效。

相关问题