Den*_*nov 9 gem bundle rubygems npm
我对全局依赖的Bundle/Gem方法感到困惑.我认为全球依赖已成为过去.我向您介绍两种处理依赖关系的方法,NPM vs Bundle/Gem.
让我展示一下NPM的力量.假设您有一个具有以下文件夹结构的应用:
/app
/admin
package.json
/front-end
package.json
Run Code Online (Sandbox Code Playgroud)
您可以在我的应用程序中看到我有两个其他迷你应用程序.每个都有自己的package.json.
说两者都有q要求,但版本不同.npm install在这两个文件夹中运行将为node_modules每个迷你应用程序安装适当的版本.一切都很好地隔离,并且运作良好.
捆绑方式略有不同.您Gemfile用来指定依赖项.运行后bundle install,宝石将被放入系统范围的位置.这意味着,如果我的应用程序需要在其迷你应用程序中使用不同版本的gem,那么它将无法工作.
解决对我来说没有意义的事情:
我知道有一个bundle install --deployment,但它仅用于生产中的部署.我的代码应该如何在开发中工作?
此外,我知道您可以选择在代码中要求特定版本的gem,但这样可以方便地Gemfile使用特定版本.因为你已经拥有,所以在生产环境中也没有任何意义bundle install
--deployment.
我百分百肯定我在这里遗漏了一些非常微不足道的东西.请指出我正确的方向.
我找到了'答案'.
Ruby与Node.js不同,它没有内置的对本地node_modules的支持,比如实现.因此你必须使用Bundler.但是要在代码中使用依赖项,您需要让Ruby知道这些依赖项所在的位置.Bundler通过您的应用代码中的以下行轻松实现:
require 'rubygems'
require 'bundler/setup'
Run Code Online (Sandbox Code Playgroud)
这将读取您的Gemfile.lock并在您的应用程序需要某些内容时应用正确的路径.这是我错过的部分.
您还可以使用bundle exec {rubygem}为您的应用程序运行由bundler安装的gem,而不是全局安装的gem.
我希望这可以帮助别人!
| 归档时间: |
|
| 查看次数: |
3374 次 |
| 最近记录: |