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

  1. 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 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

On Jan 4, 12:06pm, Holm D. [email protected] wrote:

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.

  1. 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/

Luis L.

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.