我从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
运行命令。谢谢你,谢谢!
3条答案
按热度按时间exdqitrt1#
使用bundle exec命令的目的是在当前bundle或已安装的gems中查找/搜索您想要在供应商目录中运行的命令。
如果你运行的是较新的rails(v5),那么看看bin存根,它复制了bin目录中的可执行命令。这样你就可以简单地调用
bin/rails服务器
这是我们目前拥有的部署解决方案所遵循的相同方法。他们创建了一个.bundle目录,这样就不需要每次都进行bundle安装。
eni9jsuy2#
将
bundle exec
作为命令的前缀执行命令,因为它不是rails的。要修复它,我们可以简单地运行:**gem install rails
**这将安装rails的所有依赖项,并且像rails s
或rails c
这样的命令将在没有bundle exec
的情况下工作。r6hnlfcb3#
是的,但是不起作用,我也试过这个。同样,当我在控制台捆绑包exec rails上应用时,这对我很有效。