Ruby on Railsプロジェクトはしばらく手を触れていません.Rails 2.0から3.1にアップグレードしようとしています。Ruby 1.8.7でモジュールのソースの場所を見つける
モデルの1つを試してインスタンス化しようとするとエラーが発生します。モデルの1つがモジュールのどこかで定義されているように見えますが、これがインスタンス化できなくなってしまいます。
[email protected] ~/code/spelling $ rails c
Loading development environment (Rails 3.1.1)
ree-1.8.7-head :001 > Spelling.first
NoMethodError: undefined method `first' for Spelling:Module
from (irb):1
ree-1.8.7-head :002 > exit
スペルクラスは非常に基本的なものです:
class Spelling < ActiveRecord::Base
belongs_to :word, :class_name => 'Word', :foreign_key => 'word_id'
end
(かなり小さい)アプリで、このモジュールが定義される場所を私は見つけることができません。
[email protected] ~/code/spelling $ cd app
[email protected] ~/code/spelling/app $ grep Spelling * -R
models/spelling.rb:class Spelling < ActiveRecord::Base
models/word.rb: has_many :spellings, :class_name => 'Spelling', :foreign_key => 'word_id'
models/spelling_user.rb:class SpellingUser < ActiveRecord::Base
views/layouts/application.html.erb: <title> School Spelling Tests</title>
[email protected] ~/code/spelling/app $ find ./ -name "spelling*"
./views/spellings
./views/admin/spellings
./models/spelling.rb
./models/spelling_user.rb
はい誰がこれを引き起こしているのか知っていますか?あるいは、私はこのモジュールがどこに定義されているかを追跡することができますか?
Spelling.ancestorsは私に1アイテムの配列[Spelling]を与えます。あまりにも有益ではありません!私はハントラウンド$ LOAD_PATHを持って、私は何を見つけることができます参照してください。 –
$ LOAD_PATHには不運があります。.rvm /ディレクトリをすべて検索してしまいましたが、他の参照は見つかりませんでした。 Ruby 1.9.2にアップグレードすると、Object.source_locationはモジュールのソースを返しますか?またはクラスのソースだけに含まれていました... –
__file__
またはsource_location、http://stackoverflow.com/questions/175655/how-to-find-where-a-methodでこのポストの解決策を試してください-is-defined-at-runtime、それは私のためには機能しませんでしたが、私は1.8.7 –