Local Gem Repository will not work

Hi there,

just to introduce my problem: because I have a bad internet connection I
want to
create a local repository on one of my PCs here in the office, and
install gems
from this PC (instead of rubygems).

I looked to a lot of blogs, manuals, etc., but I can not get it working.

This is what I did:

On my PC (which should be my local gem repository) - Linux system

1. mkdir /var/www/localhost/htdocs/gems
2. cp /usr/local/lib64/ruby/gems/1.9.1/cache/*.gem
/var/www/localhost/htdocs/gems
3. gem generate_index -d /var/www/localhost/htdocs

This creates the following in /var/www/localhost/htdocs:

Marshal.4.8
Marshal.4.8.Z
latest_specs.4.8
latest_specs.4.8.gz
prerelease_specs.4.8
prerelease_specs.4.8.gz
quick
specs.4.8
specs.4.8.gz

4. Starting the server with

   gem server --dir /var/www/localhost/htdocs/

This ends up with the following error message:

ERROR: While executing gem ... (ArgumentError)
/var/www/localhost/htdocs does not appear to be a gem repository

When I start gem server (which is linked to
/usr/local/lib64/ruby/gems/1.9.1 by
default) the gem server starts perfect.

Comparing these directories the /usr/local/lib64/ruby/gems/1.9.1
directory
contains bin, cache, doc, gems, specifications

Not so for my "new" directory: /var/www/localhost/htdocs. Also the
gemspec files
are hold different (in /var/www/localhost/htdocs under quick/Marshal.4.8
they are inflated with gemspec.rz)

So the question is: how can I create a repository like under
/usr/local/lib64/ruby/gems/1.9.1 . Is there a special command?

Thanks for any advice,

Holm

Hi there,

On my PC (which should be my local gem repository) - Linux system

1. mkdir /var/www/localhost/htdocs/gems
2. cp /usr/local/lib64/ruby/gems/1.9.1/cache/*.gem
/var/www/localhost/htdocs/gems
3. gem generate_index -d /var/www/localhost/htdocs

If you use generate_index, you can serve the files directly with
Apache.

4. Starting the server with

gem server --dir /var/www/localhost/htdocs/

This ends up with the following error message:

ERROR: While executing gem ... (ArgumentError)
/var/www/localhost/htdocs does not appear to be a gem repository

`gem server` is expecting a folder structure like this:

ls -l /path

bin
cache
doc
gems
specification

So the question is: how can I create a repository like under
/usr/local/lib64/ruby/gems/1.9.1 . Is there a special command?

gem install foo -i /path

Then

gem server --dir /path

PS: If you want to host gems locally, please take a look to stickler
[1] or gemfury for hosted/remote one [2]

[1] https://github.com/copiousfreetime/stickler
[2] http://www.gemfury.com/

Hi Luis,

cool thanks. It works now. Honestly: I spend about 4 hours and read all
stuff with generate_index. But at least you gave me the solution.

Thanks,

Holm

It is worth mentioning that Artifactory Pro, starting at version 3.0.3,
fully supports RubyGems local, remote and virtual repositories.
Remote repositories can eliminate the vulnerabilities caused by bad/slow
networking to rubygems.org.
Local repositories can be used for hosting in-house gems in a secured
and reliable manner.
This solution is not free, but might be the best solution for an
enterprise environment.