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/gemsHowever, 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).
精彩评论