web-dev-qa-db-ja.com

設定Ruby外部からパスをロード

Rubyが実行されるたびに、Rubyのロードパスに自動的に追加したいカスタムRubyライブラリディレクトリがあります。-を使用できることはわかっています。 Rubyを選択しましたが、Rubyのロードパスをグローバルに決定する設定可能な環境変数のようなものがあるかどうか疑問に思っています。

余談ですが、私の高レベルのタスクは、rootがないLinuxボックスにRuby Gemsをインストールすることです。したがって、Ruby非標準の場所にパスをロードします。 http://rubygems.org/read/chapter/3#page8 ( "ユーザーディレクトリへのRubyGemsのインストール")の指示に従ってRubyGemsをインストールしました。 、しかし、gemコマンドは非標準のロードパスを取得していません。ここで明らかな何かが欠けていて、自分にとって物事を難しくしているのではないでしょうか。

28
Brian Ferris

つるはしの本の Ruby and its world の章、特に環境変数のセクションを試してみてください。抜粋:

RUBYLIB 
  Additional search path for Ruby programs ($SAFE must be 0).
DLN_LIBRARY_PATH
  Search path for dynamically loaded modules.
RUBYLIB_PREFIX
  (Windows only) Mangle the RUBYLIB search path by adding this
  prefix to each component.
39

binコマンドが機能するように、インストールされたgemディレクトリを$PATHに配置したことを確認してください。 RUBYLIB自体を変更する必要がありますが、そうでない場合は、 Martinの回答 を試して修正してください。

次に、gemホーム(rubygemsがインストールするgemが保存されている場所)をローカルにすることができます。

$GEM_HOMEを使用して(または~/.gemrcに設定して)、すべてがgem environmentで行われたことを確認してください。

%mkdir〜/.gems 
%export GEM_HOME =〜/ .gems 
%gem help environment 
 
使用法:gem environment [arg] [options] 
 
一般的なオプション:
 -h、-helpこのコマンドのヘルプを取得する
 -V、-[no-] verbose詳細を設定する出力レベル
-q、-quietSilenceコマンド
-config-fileFILEデフォルトの代わりにこの構成ファイルを使用します
-backtraceエラー時にスタックバックトレースを表示します
-debugオンRubyデバッグ
 
 
引数:
 packageversionはパッケージバージョンを表示します
 gemdirはgemがインストールされているパスを表示します
 gemの検索に使用されるgempath表示パス
バージョンはgemフォーマットバージョンを表示します
 remotesourcesはリモートgemサーバーを表示します
 
 
要約:
 RubyGems環境に関する情報を表示する
 
説明:
 RubyGems環境はコマンドライン引数で制御できます。
 gemrcファイル、環境変数、および組み込みのデフォルト。
 
コマンドライン引数のデフォルトと一部のRubyGemsのデフォルトは
〜/ .gemrcファイルで個々のユーザーと/ etcに設定できます。すべてのユーザーの/ gemrc。 gemrc 
は、次のYAMLキーを持つYAMLファイルです:
 
:sources:
からgemをインストールするためのリモートgemリポジトリのYAML配列:verbose:Verbosity gemコマンドの。 false、true、および:reallyは
レベルです
:update_sources:リポジトリメタデータの自動更新を有効/無効にします
:backtrace:RubyGemsでエラーが発生したときにバックトレースを出力します
:bulk_threshold:この数のソースが
日付(レガシー設定)
:gempath:gemを検索するパス
 gem_command:A指定されたgemコマンドの引数を含む文字列
 
例:
 
:verbose:false 
 install:-no-wrappers 
更新:-no-wrappers 
 
 RubyGemsのデフォルトのローカルリポジトリは、GEM_PATHおよび
 GEM_HOME環境変数でオーバーライドできます。 GEM_HOMEは、デフォルトのリポジトリを
インストール先に設定します。 GEM_PATHを使用すると、複数のローカルリポジトリで
 gemを検索できます
 
 
プロキシサーバーの背後にいる場合、RubyGemsはHTTP_PROXY、
 HTTP_PROXY_USERを使用します
プロキシサーバーを検出するためのHTTP_PROXY_PASS環境変数。
 
 RubyGemsをパッケージ化する場合、RubyGemsのデフォルトはすべて
 lib/ruby​​gems /defaults.rbにあります。これらは
 lib/ruby​​gems/defaults/Operating_system.rb 
でオーバーライドできます。
5
rampion

生活を楽にしてインストール [〜#〜] rvm [〜#〜] 。それはあなたが望むどんなバージョンのRubyをインストールし、それらを切り替えることができ、rootアクセスを必要としません。それはあなたがしばらくそれを使用した後に中毒になる他の多くのキラー機能を持っています。

2
Cameron Pope

ありがとうございました! @ MartinCarpenterのソリューション を使用して、 minitest で特定/特定/単一のテストメソッドを実行しました。通常、testディレクトリを$LOAD_PATHRake :: TestTask で追加します。たとえば、t.libs << 'test'の場合、コマンドラインで追加できました。 、 そのようです:

RUBYLIB=test Ruby test/user_test.rb --name test_create

$LOAD_PATHuser_test.rbを呼び出してrequire 'test_helper'をロードするため、testlib/test_helper.rbに追加します。

0
ma11hew28