我是Rails的新手。我来自Codeigniter背景。我很难在初学者的Rails 3.0上找到资源。我读了我的新Rails书,但仍然对一些事情感到困惑。
如何将我的库或帮助程序包含到控制器中?我使用“包含”还是“要求”?
第二个问题是如何动态加载插件?假设我有1000个插件。我不希望它们全部初始化。有没有办法控制哪个插件从控制器初始化?
答案 0 :(得分:2)
当您的应用启动时,它会运行yourapp/config/initializers
中的所有脚本,您可以添加一些您想要的内容。
在yourapp/config/application.rb
您可以添加
config.autoload_paths += %W(#{config.root}/lib)
在class Application
声明中。
然后,只要您使用类,SomeNewClass.new "param"
rails就会尝试自动加载yourapp/lib/some_new_class.rb
至于你的第二个问题,我不知道。我从未使用过多个插件。
答案 1 :(得分:0)
与PHP(Codeigniter)不同,Ruby require
和include
的行为非常不同。
require
加载指定路径(有点像PHP),而include
通常用于在Module
中包含Class
。
require
是来自Kernel
的方法,而include
更像是类Class
的对象。试试 -
Kernel.respond_to? :require
include.is_a? Class
在跳过Rails之前,我建议你阅读Ruby。我建议this book和http://en.wikibooks.org/wiki/Ruby_programming_language。
对于Ruby on Rails,我建议 -
对于第二个问题, 我想,初始化插件是Rails初始化过程的一部分,所以它可能不是选择性(但我不确定)。有关详细信息,请参阅http://ryanbigg.com/guides/initialization.html。
避免插件初始化的最简单方法是将它放在Rails'(auto)load_paths
中的某个路径中,在需要时在控制器中说vendor/extensions
和require
使用
require "vendor/extensions/example-plugin/lib/example-plugin"
但是,我建议不要这样做,并建议等到你的插件数达到1000/10。 :)