Tag: composer php

“PHP Composer”与“Ruby Gems and Bundler”相比

(首先,这个问题不是“哪个更好”的问题。我只是想知道它们是如何相似的,并且在function方面有所不同。) 我是php开发人员,目前正在学习ruby 。 在这些日子里,鼓励许多php开发人员使用Composer进行依赖管理。 在提问之前,我想首先validation我的知识。 根据我的理解, Composer是php库(或包)的依赖管理工具。 Composer按项目安装php库(所谓的本地)。 我的意思是为project1安装的php库不能重新用于project2而不再为project2安装。 我注意到Ruby也有非常好的依赖管理工具“ RubyGems ”。 据我所知, “ RubyGems ”是“ RubyGems ”的包管理器。 “ Gem ”是一个以标准格式打包的Ruby程序或库,用于共享。 (Rails也是一个gem。) Gem可以通过命令安装,就像gem install sinatra 。 但是,也有所谓的“ Bundler ”,它也是为应用程序捆绑gem的gem。 当命令bundle install运行时(在特定的ruby项目目录下),将为此ruby项目安装Gemfile中列出的所有gem。 所以,我的问题就在这里。 Composer类似于RubyGems还是Bundler ? 运行gem install sinatra ,它是否安装在系统级别? 运行bundle install ,是否在本地(仅在此项目上)或系统级别安装Gems? 如果我需要两个版本的一个gem (例如sinatra )用于不同的项目,我应该如何处理? (对不起,我的问题很长。如果我的理解有问题,请再次抱歉,请指出正确的。)

Capistrano 3在目录中执行

我正在尝试为Capistrano 3编写一个涉及在当前版本目录中执行“composer install”的任务。 它看起来像这样: namespace :composer do desc ‘Install dependencies with Composer’ task :install do on roles(:web) do within release_path do execute “#{fetch(:composer_command)} install” end end end end composer_command在登台和生产文件中设置 – 在我的特定情况下设置为php /home/user/composer.phar 由于某种原因,此命令实际上并不在当前版本目录中运行,而是在父目录中运行(包含当前,共享,版本等) 我深入研究了这一点,发现当我运行单个单词命令时,如: within release_path do execute “pwd” end 它工作正常,并在当前版本目录中运行该命令。 但是……当我运行带空格的命令时,例如: within release_path do execute “pwd && ls” end 它在父目录中运行,而不是由within块设置的目录。 有人可以对此有所了解吗? 谢谢!