ruby gemspec中的依賴

問題的來源--sidekiq 4.1.3中的提交中有如下這么一個(gè)commit

sidekiq依賴于sinatra,在這個(gè)提交中,sinatra由development_dependency提升為dependency, 導(dǎo)致升級sidekiq后,bundle install 正常,當(dāng)時(shí)啟動或者重啟sidekiq失敗,發(fā)現(xiàn)sinatra依賴1.4.x版本。

翻遍了個(gè)整個(gè)網(wǎng)絡(luò),找到如下兩篇文件
github中關(guān)于dependency的討論還是挺多的(囧,文章好長)
rubygems官方說明

首先看一下sidekiq的gemspec文件

# -*- encoding: utf-8 -*-

require File.expand_path('../lib/sidekiq/version', __FILE__)

Gem::Specification.new do |gem|

gem.authors = ["Mike Perham"]

gem.email = ["mperham@gmail.com"]

gem.summary = "Simple, efficient background processing for Ruby"

gem.description = "Simple, efficient background processing for Ruby."

gem.homepage = "http://sidekiq.org"

gem.license = "LGPL-3.0"

gem.executables = ['sidekiq', 'sidekiqctl']

gem.files = `git ls-files | grep -Ev '^(myapp|examples)'`.split("\n")

gem.test_files = `git ls-files -- test/*`.split("\n")

gem.name = "sidekiq"

gem.require_paths = ["lib"]

gem.version = Sidekiq::VERSION

gem.add_dependency 'redis', '~> 3.2', '>= 3.2.1'

gem.add_dependency 'connection_pool', '~> 2.2', '>= 2.2.0'

gem.add_dependency 'concurrent-ruby', '~> 1.0'

gem.add_dependency 'rack-protection', '>= 1.5.0'

gem.add_development_dependency 'redis-namespace', '~> 1.5', '>= 1.5.2'

gem.add_development_dependency 'minitest', '~> 5.7', '>= 5.7.0'

gem.add_development_dependency 'rake', '~> 10.0'

gem.add_development_dependency 'rails', '>= 3.2.0'

end

該gemspec中指定了runtime dependency和development dependency。

runtime dependency有redis, connection_pool, concurrent-ruby, rack-protection這些都是sidekiq運(yùn)行時(shí)所必需的
development dependency有redis-namepace, minitest, rake, rake, rails是sidekiq build(啟動)以及test所需要的

那么gem install安裝的時(shí)候如何安裝所有的依賴呢?

可用過gem install --dev sidekiq 或者gem install --development-all sidekiq, 前者會安裝development dependency, 后者會安裝包括依賴的依賴。development dependency默認(rèn)不會被安裝,并且當(dāng)gem被require的時(shí)候,它們不會被激活(加載)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Awesome Ruby Toolbox Awesome A collection of awesome Ruby...
    debbbbie閱讀 3,088評論 0 3
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,275評論 6 342
  • 多走走,多看看,多學(xué)習(xí)。我說的走走是多到一些地方看看,和多一些的人溝通,就是多見見人,多到一些地方,不要把自己封鎖...
    果然太弱閱讀 192評論 0 1
  • 今天周四,我倆都沒課。真是喜歡這種我倆同步的感覺,周一三都有課,前后腳出門,可以的話一起回家;周二四五休息,可以一...
    layilayo閱讀 243評論 0 1

友情鏈接更多精彩內(nèi)容