人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

--MyClass.rb

class MyClass
end

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

--sample.rb

require 'MyClass'

class = MyClass.new

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


●質問者: kzgs
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:.new Class require Ruby エラー
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● moro
●35ポイント

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 = とかにすれば動きます。

◎質問者からの返答

ありがとうございます!


2 ● tmasao
●50ポイント

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

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

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

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

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

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

◎質問者からの返答

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ