刚开始使用 Ruby - 并且已经卡住了 :)
我有一个这样的模块:
module Simple
Env = AppEnv::Environment.new { |env, src|
env.test = src.test
}
class Application < Rails::Application
config.autoload_paths += [
"#{config.root}/app/lib/"
]
end
end
然后simplex.rb
在文件夹 /app/lib 中命名的类
class Simplex
def initialize(some)
puts(some)
end
end
最后一个 rake 任务看起来像:
task(:simple => 'simple:default')
namespace(:simple) {
desc('Run simple, first task')
task(:default => :load) do
Simplex.new('okok')
end
}
但是我不断收到错误消息: NameError: uninitialized constant Simplex
我原以为Simplex
可以找到autoload_paths 。
任何想法我做错了什么 - 似乎真的微不足道,但我看不出是什么。
在您的 Rake 文件的顶部尝试添加require "#{Rails.root}/lib/simplex"
以引入您的Simplex
类。Autoload
像这样工作:
mylibrary.rb
puts "I was loaded!"
class MyLibrary
end
税务局
irb(main):001:0> require 'mylibrary'
I was loaded!
=> true
irb(main):001:0> autoload :MyLibrary, 'mylibrary'
=> nil
irb(main):002:0> MyLibrary.new
I was loaded!
=> #<MyLibrary:0x0b1jef>
我会强烈建议你阅读这篇文章上有什么区别require
和autoload
是。更重要的autoload
是,由于延迟加载的缺陷,它正在被弃用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句