Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在Ruby 1.8.7中查找模块的源位置_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 在Ruby 1.8.7中查找模块的源位置

Ruby on rails 在Ruby 1.8.7中查找模块的源位置,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一个RubyonRails项目,已经有一段时间没有涉及过了,我正在尝试将它从Rails2.0升级到3.1 我尝试实例化其中一个模型时出错。似乎其中一个模型也被定义为模块,这阻止了我实例化它 dgs@dgs-desktop ~/code/spelling $ rails c Loading development environment (Rails 3.1.1) ree-1.8.7-head :001 > Spelling.first NoMethodError: undefined

我有一个RubyonRails项目,已经有一段时间没有涉及过了,我正在尝试将它从Rails2.0升级到3.1

我尝试实例化其中一个模型时出错。似乎其中一个模型也被定义为模块,这阻止了我实例化它

dgs@dgs-desktop ~/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
类拼写'word',:foreign\u key=>'word\u id'
结束
我找不到该模块在应用程序(相当小)中的何处定义:

dgs@dgs-desktop ~/code/spelling $ cd app
dgs@dgs-desktop ~/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>

dgs@dgs-desktop ~/code/spelling/app $ find ./ -name "spelling*"
./views/spellings
./views/admin/spellings
./models/spelling.rb
./models/spelling_user.rb
dgs@dgs-桌面~/code/拼写$cd应用程序
dgs@dgs-桌面~/code/spelling/app$grep spelling*-R
models/spelling.rb:类拼写'Spelling',:foreign\u key=>'word\u id'
models/spelling_user.rb:class SpellingUser
有人知道这是什么原因吗?或者我怎样才能找到该模块的定义位置?

试试以下方法:

Spelling.ancestors
这将给你所有的父类和模块,这将给你一个线索,它在哪里。如果这不起作用,请查看load_path变量:

y $LOAD_PATH
它将为您提供一个路径列表,但您必须找到与代码冲突的路径。这相当多,但应该不难,因为大多数gem都有很好的名称空间,所以很可能是一个位于某处的自定义补丁

试试这个:

Spelling.ancestors
这将给你所有的父类和模块,这将给你一个线索,它在哪里。如果这不起作用,请查看load_path变量:

y $LOAD_PATH

它将为您提供一个路径列表,但您必须找到与代码冲突的路径。这相当多,但应该不难,因为大多数gem都有很好的名称空间,所以很可能是一个位于某处的自定义补丁

所以。经过在完全错误的地方到处搜寻,我找到了(明显的)答案

dgs@dgs-desktop/tmp/spelling$cat config/application.rb
需要文件。展开\u路径(“../boot”,\u文件\u)
需要“rails/all”
模块拼写
类应用程序
在从Rails2.x升级到Rails3.1的过程中,应用程序名变成了一个模块。因为我有一个与应用程序同名的模型,所以这个模型失败了

(我曾在application.rb中看到这一行在我的greps中出现,但打了折扣)


应用程序的其余部分工作正常,只有当我根据这个模型得出一些结果时,它才失败。当我一点一点地将整个应用程序复制到一个临时应用程序(称为
spelling\u new
)中时,一切都正常了,所以我决定它一定是原始应用程序中的一些错误,并重命名为
spelling\u new
->
spelling
。在这一点上,一切都再次爆炸,罪魁祸首变得清晰起来。

所以。经过在完全错误的地方到处搜寻,我找到了(明显的)答案

dgs@dgs-desktop/tmp/spelling$cat config/application.rb
需要文件。展开\u路径(“../boot”,\u文件\u)
需要“rails/all”
模块拼写
类应用程序
在从Rails2.x升级到Rails3.1的过程中,应用程序名变成了一个模块。因为我有一个与应用程序同名的模型,所以这个模型失败了

(我曾在application.rb中看到这一行在我的greps中出现,但打了折扣)


应用程序的其余部分工作正常,只有当我根据这个模型得出一些结果时,它才失败。当我一点一点地将整个应用程序复制到一个临时应用程序(称为
spelling\u new
)中时,一切都正常了,所以我决定它一定是原始应用程序中的一些错误,并重命名为
spelling\u new
->
spelling
。此时,一切都再次爆炸,罪魁祸首变得清晰起来。

Spelling.Founders给了我一个1项数组:[Spelling]。信息量不大!我将搜索$LOAD_PATH并查看我能找到什么。$LOAD_PATH不走运-最终搜索了整个.rvm/目录以确定,但找不到任何其他对此的引用。如果我升级到ruby 1.9.2,Object.source\u位置会返回模块的源代码吗?或者只是它所包含的类的源…尝试本文中的解决方案-使用
\uuuu文件\uuuuu
或source\u位置,它对我不起作用,但我有1.8.7拼写。祖先给了我一个1项数组:[拼写]。信息量不大!我将搜索$LOAD_PATH并查看我能找到什么。$LOAD_PATH不走运-最终搜索了整个.rvm/目录以确定,但找不到任何其他对此的引用。如果我升级到ruby 1.9.2,Object.source\u位置会返回模块的源代码吗?或者只是它所包含的类的源代码…尝试本文中的解决方案-使用
\uuuu文件\uuuu
或源代码位置,它对我不起作用,但我有1.8.7