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. Rubyのクラスのメソッド参照
- 2. java8:別のメソッド参照からのメソッド参照
- 3. 別の同期メソッド内で同期メソッドを参照する
- 4. のHiddenFieldは、分離コードファイルで参照することはできません
- 5. Listメソッドを別のメソッドから参照することはできますか?
- 6. インスタンスを参照する `self`のようなRubyメソッド
- 7. JavaScript - ES6の別のクラスで関数(メソッド)を参照する
- 8. 別のコンストラクタを参照するには?
- 9. Javaは別のクラスのメソッドを参照します
- 10. Rubyでの参照渡し方は?
- 11. Rubyでコアクラスを明示的に参照するには?
- 12. なぜRubyのメソッドへの参照は ``メソッド `"ではなく ``メソッド '"と書かれていますか?
- 13. メソッドの参照方法は?
- 14. SONAR:メソッド参照
- 15. メソッド参照のパラメータ
- 16. rubyのobject_idメソッドはメモリの場所を参照していますか?
- 17. ラムダをメソッド参照に変換する
- 18. 別のメソッドでのメソッドコールの未解決の参照
- 19. XAMLの別のソースファイルから参照メソッドをクリックしますか?
- 20. rubyスクリプトからローカルの宝石を参照するには?
- 21. rubyでcgiメソッドを使用してjqueryライブラリを参照するにはどうすればよいですか?
- 22. RxKotlin flattenAsObservable():タイプは、メソッド参照
- 23. Objective-Cで別のクラスファイルを参照するメソッドを呼び出す
- 24. ブロックをRubyの別のメソッドに渡す
- 25. Ruby on Rails参照システム
- 26. Expressionを別のメソッドに返すメソッドを参照する構文はありますか?
- 27. メソッドは、参照として渡された参照でオーバーライドする
- 28. divをAngularJSのインデックスでクラス別に参照する方法は?
- 29. メソッドと参照オーバーフロー
- 30. 別のレイアウトのボタンを参照する
「somelogic」が必要です –