Rubyコードファイル(somelogic.rb)には、いくつかのメソッドとクラスがあり、/ home/user/codeにあります。今、同じディレクトリに別のクラスを作成していて、somelogic.rbのメソッドとクラスを参照したいと思います。それ、どうやったら出来るの?私はどんな入力をも大変感謝しています。別のRubyコードファイルでメソッドを参照するには?
答えて
あなたはRuby 1.9の以降を使用している場合、これはそれを行うための最も簡単な方法です:
require_relative 'somelogic'
あなたのコードは、ルビーの1.9以前のバージョンで作業したい場合は、あなたの代わりにこれを行う必要があります。
require File.join File.dirname(__FILE__), 'somelogic'
あなたが選んだ行はどれも、ルビファイルの先頭に置く必要があります。 somelogic.rbで定義されているクラス、モジュール、またはグローバル変数は、プログラムで使用できます。
秒ファイル(otherlogic.rb言う)でRuby's require keyword
をチェックアウトは、最初の行に '/home/user/code/somelogic.rb' を必要と書きます。ここで
しないでください。あなたのコードは移植可能ではありません。 – mliebelt
私は、ファイルが含まれることを確信していたことを知っています(1.9.2には「require」の問題があります)。同じディレクトリにいる場合は、 'otherlogic.rb'が必要です。 –
はシナリオです:
/home/user/code/somelogic.rb
class MyMath
def self.sin(number)
...
end
end
はあなたの他のファイルmylogic.rb
のメソッドsin
を使用します。
Ruby 1.8.x
require "somelogic"
class OtherThings
def some_method
MyMath.sin(42)
end
end
使用パターンは、すべてのルビーのバージョンで同じですが、必要と文は異なる場合があります:
ルビーのバージョンに応じて、以下のいずれかの操作を行います。
Ruby 1.9.x
require_relative "somelogic"
または変動
Ruby 1.9.x
require "./somelogic"
最初の変化は、あなたがmylogic.rb
とsomelogic.rb
が配置されているディレクトリにruby mylogic.rb
を呼び出す場合にのみ、2つ目のすべての時間を動作します。あなたが別のディレクトリにある出発点からそのディレクトリからファイルをロードする場合
、あなたが使用する必要があります。
Ruby 1.8.x and Ruby 1.9.x
$: << File.dirname(__FILE__)
これは、Rubyのロードパスを展開します。 __FILE__
の(相対)パスを読み取り、そのディレクトリを取得し、そのディレクトリの絶対パスをロードパスに追加します。したがって、参照をrequire
で実行すると、ファイルが見つかります。
'require '/ somelogic'と' require_relative 'somelogic'の間には重要な違いがあります。後者は、スクリプト自体に関連したファイル*を探しますが、前者は現在の作業ディレクトリを検索します。私たちが "project"というディレクトリにいて、Rubyプログラム "scripts/do_the_thing.rb"を実行したとします。 "do_the_thing.rb"が 'require_relative'を使うと、" project/scripts/somelogic.rb "を探します。一方、 'require /。somelogic''と書くと、" project/somelogic.rb "が検索されます。 – Chuck
良い点、私は答えにそれを追加します。どうもありがとう! – mliebelt
Chuckが言っていたことに加えて、 'require '/ somelogic'はRubyインタプリタの現在の作業ディレクトリについての憶測をひどくするので、他のプロジェクトでコードを再利用するのが難しいためです。 –
- 1. java8:別のメソッド参照からのメソッド参照
- 2. 別の同期メソッド内で同期メソッドを参照する
- 3. のHiddenFieldは、分離コードファイルで参照することはできません
- 4. インスタンスを参照する `self`のようなRubyメソッド
- 5. Javaは別のクラスのメソッドを参照します
- 6. rubyのobject_idメソッドはメモリの場所を参照していますか?
- 7. Objective-Cで別のクラスファイルを参照するメソッドを呼び出す
- 8. Expressionを別のメソッドに返すメソッドを参照する構文はありますか?
- 9. rubyスクリプトからローカルの宝石を参照するには?
- 10. メソッドと参照オーバーフロー
- 11. ブロックをRubyの別のメソッドに渡す
- 12. メソッドで参照されるメソッドとクラスを取得する
- 13. AppDelegateメソッドの参照 - iphone
- 14. getterメソッドのconst参照
- 15. ベクター参照を別のものにコピー
- 16. NSTimer "target":クラスのメソッドを参照するには?
- 17. 別のプロジェクトの参照
- 18. 別のリポジトリへの参照
- 19. SSIS別のテーブルの参照
- 20. C#別の参照型
- 21. 挿入時に別のコレクションを参照する方法は?
- 22. 別のコントロールプロジェクトからWebContext.Current.Userを参照するには?
- 23. VS2015内から別のmscorlib.dllを参照するには?
- 24. コードビハインドではないが別のオブジェクトにあるイベントハンドラを参照するには?
- 25. 空でない引数のメソッド参照?
- 26. メソッドを参照してオブジェクトを渡す
- 27. ASP.NET Webページを別のプロジェクトのコードファイルにリンクする
- 28. Silverlightはrubyサービスへの参照を追加できません
- 29. モジュール名のない参照用rubyクラス
- 30. インポートする前に別のテーブルを参照する?
「somelogic」が必要です –