14


5

私はいくつかのgemをRubyといくつかのruby gemをサポートするウェブホスト上で動かそうとしていますが、私が使う必要のあるものはありません。

https://stackoverflow.com/questions/913153/using-a-gem-without-installation-it[ここ]の指示に従って、私は自分のGemパスに元のGemの場所を保存し、/ pathに自分自身を追加しました/ to / my / home / gemsから〜/ .gemrcへ
gemhome:/ users / home / myuser / gems gempath:
-  /usr/local/lib/ruby/gems/1.8
-  / users / home / mysuser / gems

いくつかのgemを手動でダウンロードし、gemコマンドの—​localと—​install-dirオプションを使ってインストールしました。 それから私は「宝石リスト」をしました、そして、実際に私が私のユーザーディレクトリにインストールした宝石だけでなく、通常のシステムパスの中のオリジナルの宝石を見ることができます。

私がIRBを起動したり、ruby -eを実行したりすると、すべてのシステムgemはうまく動作します。 しかし、私は自分のユーザーディレクトリにgemsをインストールしてもらうことができません。

$ ruby​​ -r ruby​​gems -e "require 'nokogiri'" /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:21:in `require__ ':ロードするためのファイルがありません -  nokogiri /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:21:inから-e:1から `require '

私はさらに古い学校require_gemを試してみました:

$ irb -r ruby​​gems irb(main):001:0> require_gem 'nokogiri' Gem :: LoadError:RubyGem nokogiriが見つかりませんでした(> 0.0.0)

/usr/local/lib/ruby/site_ruby/1.8/rubygems.rb:141:inから/usr/local/lib/ruby/site_ruby/1.8/rubygems.rb:204:in「report_activate_error」からusr / local / lib / ruby​​ / site_ruby / 1.8 / ruby​​gems.rb:37:/usr/local/lib/ruby/site_ruby/1.8/rubygems.rb:31:inから `require_gem_with_options 'に(irb) 1

私の「宝石リスト」から私は見ることができます:

nokogiri(1.3.3)NokogiriはHTML、XML、SAX、そしてReaderパーサーです。

私はすべてのユーザディレクトリインストールgemに関して同じ問題を抱えています。 私はここで何が足りないのですか?

編集:これは_レール_アプリではありません。 これはコマンドラインアプリケーション用です。 上記のテストと同様に、プログラムは私のユーザーアカウントで実行されます。

編集:パーRafeの提案、私はIRBからGem.pathを見た。 これはシステムのgemパス/usr/local/lib/ruby/gems/1.8を一覧表示するだけで、私のユーザーのdirパスも一覧表示しません。

5 Answer


38


私は同じ問題を抱えていた、私はrubyファイルの先頭に以下を追加することによってそれを修正しました

'rubygems'が必要

それが役立つことを願っています


5


私の現在働いている(しかし理想的とは言えない)解決策は

Gem.path.push "/ path / to / my / gems"

これは、ユーザー環境でのすべてのRuby実行に対して、.gemrcの内容が自動的に行われることを期待しているためです。 それがなぜそうではないかわからない - しかし上記は少なくともうまくいく。


0


問題は、Webアプリケーションが、自分のユーザーアカウントと同じ設定を使用していないことです。おそらくそれは別のユーザーとして実行されているためです。 一つの選択肢はあなたのアプリケーションの `vendor / gems`に宝石をロードすることです。

あなたのローカルマシンが `rake gems:unpack`を使ってそれを行うことができ、それらのgemをバージョン管理にチェックし、そしてそれらをサーバーにデプロイします。 それは、私にとって最も信頼できるアプローチです。 あるいは、ホームディレクトリでgemを探すようにアプリケーションの設定を変更することもできます。


0


私はこれに取り組んできましたが、.gemrcがすべての場合にロードされるようには見えないと判断しました。 たとえば、gemをインストールするときには尊重されますが、irbまたはscript / consoleを実行するときには必ずしもそうではありません。

また、ローカルディレクトリへのパスは、多くのサイトで説明したものとは異なる必要があることもわかりました。 以下は私のために働きます:

---
gem: --no-ri --no-rdoc
gemhome: /home/.gem/ruby/1.8
gempath:
-
/home/.gem/ruby/1.8
-
/usr/lib/ruby/gems/1.8


0


私は同じような問題を抱えていましたが、ここで認められている答えは明らかに解決策ではありません(少なくとも私にとってはそうではありませんでした)。 可能であれば、gemファイルでこれを行うべきではありません。

'rubygems'が必要

なぜあなたは尋ねませんか? この記事を見てください:http://tomayko.com/writings/require-rubygems-antipattern

いずれにせよ、irbを呼び出すときに 'rubygems’を要求するだけで大​​丈夫です。

> irb -r 'rubygems'

そして、あなたは同じ結果を得るはずです。 この質問に対してなぜこのメソッドがうまくいかないのかわからない。