开发者

Ruby gems repository

I'm trying to set a gem repository on one of our local servers. Here are the steps I'm running, that I've followed from several guides.

1) I create the BASEDIR folder /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

However, when I run this, I get the following output:

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

Loaded all gems
Generating quick index gem开发者_JAVA技巧specs 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

It's not loading the gem for some reason. I did see a guide that recommended making the BASEDIR as /var/www/html/rubygems/ and then further make a gems/ directory within the BASEDIR and copy the desired gems to this gems/ directory. I also tried this, but was getting the same results.

Our server had the unfortunate luck of having the same configuration as mentioned in this post (RHEL5, ruby 1.8.5, /var and /tmp on separate partitions), but we upgraded as suggested to ruby 1.8.6, but it still won't load the gem.

Has anyone come across this? Found a solution?


I stumbled upon my old post and realized I'd actually solved this some time ago, so I figured I'd post my answer.

The problem was my step 2: copy gems action.

In the OP, I had tried

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

What I found was that I needed to copy the actual .gem files, which lived at .../gems/1.8/gems/cache . So what I really needed to do for step 2 is:

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

After copying the gems correctly, the indexing worked as expected, and we could then use our server by adding it as a gem source on various machines. Installing our custom gems then worked smoothly.


We internally use Artifactory for managing our in-house rubygems - some of them are proprietary and some are publicly released. we can enforce security between our different groups (dev, qa - prerelease, release, ...)

Also, rubygems.org is proxied and cached locally, which helps us gain better performance and avoid remote downtimes.

Eventually, developers are using a single source url, aggregating both remote and local repositories transparently.


You should generate the index not on the gems subdirectory. But on the basedir one.

sudo gem generate_index -d /var/www/html

It'll take automatically the gems in the "gems" subdirectory.
And generate the index at in the basedir.


The same thing happened to me so I started to browse the code for Gem::Indexer and wrote a few lines of code to do the indexing from irb launched from my host destination (the one above ./gems):

require 'rubygems'
require 'rubygems/indexer'

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

And if you want to update the index later:

require 'rubygems'
require 'rubygems/indexer'

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

I suspect the issue with the gem command must exist somewhere higher at the command parsing level but I have not looked into it (I just wanted to create my repository and move on).

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜