【发布时间】:2011-08-15 06:22:03
【问题描述】:
给定一个引用命名空间和非命名空间模型的 rake 任务:
namespace :thing do
task :thingo => :environment do
Klass.first.some_method
Namespaced::Klass.first.some_other_method
end
end
使用 ruby 1.9.2、rails 3.0.9 和 rake 0.9.2,这会产生异常,如下所示:undefined method 'some_other_method' for #<Klass:0x007fcfafbaa6e0>
两件事:
- 为什么 rails 在 rake 环境中(在调试器会话中)不返回正确的命名空间,而在控制台会话中却返回?
- 为什么更改参考顺序会起作用? (也就是说,如果环境已经将“Namespaced::Klass”调用为“Klass”,那么调用“Klass”应该会以
undefined method 'some_method' for #<Klass:0x007fcfafbaa6e0>失败,对吧?
顺便说一句,我试过::Namespaced::Klass.first.some_other_method
如果答案不简单,我会制作一个测试应用 - 请告诉我! :-)
【问题讨论】:
-
我猜这个测试应用可能有用:)
标签: ruby-on-rails rake