Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
&引用;“PHP编写器”;与「;红宝石和捆扎机“;_Php_Ruby_Gem_Composer Php_Bundler - Fatal编程技术网

&引用;“PHP编写器”;与「;红宝石和捆扎机“;

&引用;“PHP编写器”;与「;红宝石和捆扎机“;,php,ruby,gem,composer-php,bundler,Php,Ruby,Gem,Composer Php,Bundler,(作为第一个问题,这个问题不是“哪一个更好”的问题。我只是想知道它们在功能方面有什么相似之处和不同之处。) 我是php开发者,目前正在学习ruby。 如今,许多php开发人员被鼓励使用Composer进行依赖关系管理。在提问之前,我想先验证一下我的知识 据我了解, Composer是用于php库(或包)的依赖项管理工具 Composer根据每个项目(所谓的本地)安装php库。我的意思是,如果不为project2重新安装,为project1安装的php库就不能为project2重用 我注意到,

(作为第一个问题,这个问题不是“哪一个更好”的问题。我只是想知道它们在功能方面有什么相似之处和不同之处。)

我是php开发者,目前正在学习ruby。 如今,许多php开发人员被鼓励使用
Composer
进行依赖关系管理。在提问之前,我想先验证一下我的知识

据我了解,

  • Composer
    是用于php库(或包)的依赖项管理工具
  • Composer
    根据每个项目(所谓的本地)安装php库。我的意思是,如果不为project2重新安装,为project1安装的php库就不能为project2重用
我注意到,Ruby也有非常好的依赖关系管理工具“
RubyGems
”。 据我所知,

  • RubyGems
    ”是“Gems”的包管理器
  • Gem
    ”是以标准格式打包的Ruby程序或库,用于共享。(Rails也是一颗宝石。)
  • Gem
    可以通过类似
    Gem install sinatra
    的命令安装
  • 但是,也有所谓的“
    Bundler
    ”,它也是为应用程序绑定gem的gem
  • 当运行命令
    bundle install
    时(在特定的ruby项目目录下),GEM文件中列出的所有GEM都将安装到此ruby项目
我的问题就在这里

  • Composer
    类似于
    RubyGems
    还是
    Bundler
  • 运行
    gem install sinatra
    时,它是否安装在系统级
  • 运行
    bundle install
    时,Gems是在本地(仅在本项目上)还是在系统范围内安装的
  • 如果我需要一个
    gem
    (例如sinatra)的两个版本用于不同的项目,我应该如何处理
  • (对不起,我的问题太长了。如果我的理解有误,请再次道歉,并指出正确的答案。)

    1)作曲家与邦德更相似。 Composer将所有内容都带到项目中,bundler将所有内容带到系统中,并在项目上下文中“链接”它们。Bundler正在处理背面的宝石

    2) 对。gem install在系统范围内(或者如果您使用诸如rbenv或rvm之类的工具,则为每个用户)执行操作

    3) 见1。通过bundle exec运行时,根据GEM文件正确拾取系统范围的和

    4) 我建议使用一个Gemfile,将您感兴趣的版本放在那里,然后让bundler完成其余的工作(它将在后面安装多个版本并选择正确的版本)。但一定要运行“bundle exec”。
    如果您喜欢rvm,您还可以选择使用rvm gemset,但这很难处理,而且在尝试部署时会遇到非常糟糕的情况。

    值得注意的是,对于#2,它可能只为您的用户安装,并且只为一个Ruby版本安装。使用或之类的东西来管理多个版本是很常见的。是的。没错。为了你的问题,我尽量保持简单,我在800万个月前你所在的地方。你问了我所有的问题我简直不敢相信。就好像我自己在问这个问题。