6

ローカル サーバーの 1 つに 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/宝石

ただし、これを実行すると、次の出力が得られます。

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

何らかの理由で宝石をロードしていません。BASEDIR/var/www/html/rubygems/として作成し、さらにBASEDIR内にgems/ディレクトリを作成し、目的の gem をこのgems/ディレクトリにコピーすることを推奨するガイドを見ました。私もこれを試しましたが、同じ結果が得られました。

私たちのサーバーは、この投稿で述べたのと同じ構成(RHEL5、ruby 1.8.5、/var および /tmp を別のパーティションに配置) という不運にも恵まれましたが、推奨どおりに ruby​​ 1.8.6 にアップグレードしましたが、それでもうまくいきません。 gem をロードします。

誰かがこれに出くわしましたか?解決策を見つけましたか?

4

4 に答える 4

5

私は古い投稿に出くわし、実際にこれを少し前に解決したことに気付いたので、回答を投稿することにしました。

問題は私のステップ 2 でした: copy gems アクション。

OPで、私は試しました

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

私が見つけたのは、 .../gems/1.8/gems/ cacheにある実際の.gemファイルをコピーする必要があるということでした 。したがって、ステップ2で本当に必要だったのは次のとおりです。

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

gem を正しくコピーした後、インデックス作成は期待どおりに機能し、サーバーをさまざまなマシンで gem ソースとして追加することで使用できるようになりました。カスタムgemのインストールはスムーズに機能しました。

于 2010-07-01T17:43:13.057 に答える
5

社内の ruby​​gem を管理するためにArtifactoryを社内で使用しています。それらの一部は独自仕様で、一部は公開されています。異なるグループ (dev、qa - プレリリース、リリースなど) 間でセキュリティを強化できます。

また、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 に答える