我从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
运行命令。谢谢!
答案 0 :(得分:1)
使用bundle exec命令的目的是查看/搜索要在当前包中运行的命令或在供应商目录中安装的gems。
如果您正在运行较新的rails(v5),那么请查看binstubs,它可以通过bin目录中可执行的命令进行复制。这样你就可以简单地调用
bin / rails服务器
这与我们目前拥有的部署解决方案遵循的方法相同。他们创建了一个.bundle目录,无需每次都进行捆绑安装。