Rubyで自分で定義したクラスを呼びたい


--MyClass.rb

class MyClass
end

というファイルがあるときに
同一ディレクトリで

--sample.rb

require 'MyClass'

class = MyClass.new

のように呼びたいのですがrequireの部分でエラーとなってしまいます
呼び出し方を教えていただけますか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/06/13 10:57:44
  • 終了:2007/06/13 14:46:39

回答(2件)

id:moro No.1

moro回答回数23ベストアンサー獲得回数102007/06/13 11:19:39

ポイント35pt

http://www.ruby-lang.org/ja/man/?cmd=view;name=%C1%C8%A4%DF%B9%F...

require の引数はファイルパスになります。

# より正確には"ロードパスからの相対パス"もしくは、絶対パスから拡張子を除いたものになります。

ですので

(1) カレントディレクトリに両方を配置して実行すればrequireのエラーは出ません。

(2) そのファイルと同じディレクトリにあるファイルを表すのには以下のイディオムがよく使われます。

require File.dirname(__FILE__) + "/MyClass"

これは File.dirname(__FILE__) でそのファイルが置いてあるディレクトリまでの絶対パスを取得しています。

(3) そのファイルが置いてあるディレクトリをロードパスに追加する

 ruby -Ipath/to/dir path/to/dir/sample.rb

とか、

$: << File.dirname(__FILE__)
require "MyClass"

とか

ちなみに class = はSyntaxErrorになるので注意してください。class_ = とか c = とかにすれば動きます。

id:kzgs

ありがとうございます!

2007/06/13 14:46:09
id:tmasao No.2

tmasao回答回数77ベストアンサー獲得回数202007/06/13 11:20:04

ポイント50pt

手元の環境(Linux, ruby 1.8.5)では、エラーになりません。

以下を確認してみると良いと思います。

・MyClass.rb の内容は本当にそれだけですか?記述内容に文法エラーなどは含まれていませんか? → "ruby -c MyClass.rb"

・$LOAD_PATH に "." (カレントディレクトリ)は含まれていますか?→ ruby -e "p $LOAD_PATH"

→ 含まれていないようなら、 $LOAD_PATH << "." の一行をrequire の前に加えてみる。

Rubyリファレンスマニュアル - 組み込み関数

id:kzgs

MyClass.rb内の文法エラーでした

2007/06/13 14:45:55

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

  • Study Log - [RUBY]インクルードパス Study Log 2009-09-15 17:27:29
    puts $: Rubyで自分で定義したクラスを呼びたい --MyClass.rb class MyClass end というファイルがあるときに 同一ディレクトリで --sample.rb require &#39;MyClass&#39; class = MyClass... - 人力検索はてな
  • y0tの日記 - require 2010-04-02 13:29:37
    require require File.dirname(__FILE__) + &quot;/MyClass&quot; 【参考】 - Rubyで自分で定義したクラスを呼びたい
  • なぜこうなる?パスの問題 **gccの場合 compile-test-gcc akira$ tree . . `-- sub |-- main.c `-- mylib.h 1 directory, 2 files compile-test-gcc akira$ gcc sub/main.c compile-test-gcc akira$ ./a.out 100 compile-test-gcc akira$ cat sub/main.c #in
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません