6

我正在尝试在我们的一台本地服务器上设置一个 gem 存储库。这是我正在运行的步骤,我从几个指南中遵循了这些步骤。

1)我创建了BASEDIR文件夹/var/www/html/gems
2)sudo cp -r /usr/lib/ruby/gems/1.8/gems/someGem /var/www/html/gems
3)sudo gem generate_index -d /var/www/html/gems

但是,当我运行它时,我得到以下输出:

Loading 0 gems from /var/www/html/gems

Loaded all gems
Generating quick index gemspecs for 0 gems

Complete
Generating specs index
Generating latest specs index
Generating quick index
Generating latest index
Generating Marshal master index
Generating YAML master index for 0 gems (this may take a while)

Complete
Compressing indicies

由于某种原因,它没有加载 gem。我确实看到了建议将BASEDIR设置为/var/www/html/rubygems/的指南,然后在BASEDIR中进一步创建gems/目录并将所需的 gem 复制到此gems/目录。我也试过这个,但得到了相同的结果。

不幸的是,我们的服务器拥有与本文所述相同的配置 RHEL5、ruby 1.8.5、/var 和 /tmp 在单独的分区上),但我们按照建议升级到 ruby​​ 1.8.6,但它仍然无法t 加载 gem。

有没有人遇到过这个?找到解决方案了吗?

4

4 回答 4

5

我偶然发现了我的旧帖子,并意识到我实际上已经在一段时间前解决了这个问题,所以我想我会发布我的答案。

问题是我的第 2 步:复制 gems 操作。

在OP中,我尝试过

2) sudo cp -r /usr/lib/ruby/gems/1.8/gems/someGem /var/www/html/gems

我发现我需要复制实际的.gem文件,这些文件位于 .../gems/1.8/gems/ cache 。所以我真正需要为第 2 步做的是:

sudo cp .../gems/1.8/gems/cache/*.gem /var/www/html/gems

正确复制 gem 后,索引按预期工作,然后我们可以通过将其添加为各种机器上的 gem 源来使用我们的服务器。然后安装我们的自定义 gems 工作顺利。

于 2010-07-01T17:43:13.057 回答
5

我们在内部使用Artifactory来管理我们内部的 ruby​​gem - 其中一些是专有的,一些是公开发布的。我们可以在我们的不同组之间强制执行安全性(开发、质量保证 - 预发布、发布……)

此外,rubygems.org在本地进行代理和缓存,这有助于我们获得更好的性能并避免远程停机。

最终,开发人员使用单一源 URL,透明地聚合远程和本地存储库。

于 2013-08-27T07:34:39.743 回答
4

您应该不在 gems 子目录上生成索引。但基于他们的一个。

sudo gem generate_index -d /var/www/html

它会自动获取“gems”子目录中的宝石。
并在 basedir 中生成索引。

于 2009-11-12T09:47:30.217 回答
0

同样的事情发生在我身上,所以我开始浏览 Gem::Indexer 的代码并编写了几行代码来从我的主机目的地(./gems 上面的那个)启动的 irb 进行索引:

require 'rubygems'
require 'rubygems/indexer'

i=Gem::Indexer.new '.'
i.generate_index

如果您想稍后更新索引:

require 'rubygems'
require 'rubygems/indexer'

i=Gem::Indexer.new '.'
i.update_index

我怀疑 gem 命令的问题必须存在于命令解析级别更高的地方,但我没有调查它(我只是想创建我的存储库并继续前进)。

于 2010-02-14T15:09:47.843 回答