下载所有宝石依赖项。

31

我想通过下载必要文件并将它们带到另一台没有联网的机器上来安装Compass。我已经下载了Compass的源代码包,但是在非联网的机器上运行gem时,它会抱怨缺少依赖项。有什么解决方法吗?


1
我不知道你的使用情况是什么,但如果你还没有使用Bundler,我敢打赌它会解决你的一些问题。它很容易上手,并且是一股清新的空气。 - John Bachir
3个回答

48

这正是我遇到的问题。

在搜索了一段时间后,我找到了一个使用 Bundler https://bundler.io/ 的解决方案。

获取带有依赖项的 Gem:

  • 创建一个名为 Gemfile 的新文件夹。
  • 在文件中写入源和你想要获取依赖项的 Gem。
  • 例如:

    source "http://rubygems.org"
    gem 'rails', '3.2.1'

  • 在该文件夹打开命令行并执行:bundle install
  • 这将下载并安装所有依赖项。
  • 如果你想查看它,请执行命令 bundle list
  • 执行命令 bundle package
  • 这将创建目录结构 vendor/cache
  • 现在,缓存目录中包含了你所需的所有 Gem 依赖项。

在没有网络连接的机器上安装 Gem:

  • 将缓存文件夹复制到机器上
  • 在缓存文件夹内打开命令行并执行gem install --local Gemname.gem
  • 例如:

gem install --local rails-3.2.1.gem


我认为它会下载您的依赖项的依赖项,但不包括仅用于开发 gem 本身的依赖项(请参阅 John Bachir 的答案 - https://dev59.com/pm855IYBdhLWcg3wViu3)。 - Jeremiah Flaga
非常感谢!这节省了我很多时间! - DavidZemon
1
使用 bundle package --no-install 命令将跳过安装步骤。 - xoryves
在你的第三个要点中,“Bsp”是什么意思? - MartinThurn
@MartinThurn:Bsp是德语单词“Beispiel”的缩写。由于我是德国的母语者,所以无意中使用了它。我通过使用相应的英语单词“Example”进行了更正。感谢您的提问。 - jadephantom
显示剩余3条评论

4

我做了

export GEM_HOME=.
export GEM_PATH=.
gem install --no-ri --no-rdoc --install-dir . <gem>

3

嗯,这有点困难。gem dependency 可以显示一个 gem 的依赖关系,但它不能一直往下展开。

➔ gem dependency compass
Gem compass-0.10.5
  haml (>= 3.0.4, runtime)

Gem compass-0.10.6
  haml (>= 3.0.4, runtime)

➔ gem dependency haml   
Gem haml-3.0.21
  maruku (>= 0.5.9, development)
  yard (>= 0.5.3, development)

Gem haml-3.0.22
  maruku (>= 0.5.9, development)
  yard (>= 0.5.3, development)

Gem haml-3.0.23
  maruku (>= 0.5.9, development)
  yard (>= 0.5.3, development)

Gem haml-3.0.24
  maruku (>= 0.5.9, development)
  yard (>= 0.5.3, development)

“development” 意味着只在开发 gem 本身时需要它。“runtime” 意味着你需要它来使用它。

因此,在这种情况下,唯一的依赖项是 haml。如果它是一个更复杂的 gem,我不知道生成整个树的好方法。


FYI:在 Compass v0.11 中有一些新的依赖关系。 - chriseppstein

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接