我正在为open_flash_chart
插件编写一个自定义的包装器。它被放在/lib
中,并在ApplicationController
中作为一个模块加载。
但是,我遇到了一些类层次结构或smth问题。
我可以从任何控制器访问OpenFlashChart
、Line
等open_flash_chart
函数
但是,在/lib
模块中的类中,它不能工作!
有什么想法吗?
发布于 2011-07-27 22:03:19
在Rails 3中,/lib模块不会自动加载。
这是因为这行代码:
# config.autoload_paths += %W(#{config.root}/extras)
内部config/application.rb已注释。
您可以尝试取消对此行的注释,或者(它对我来说效果更好),保留此注释(以备将来参考),并添加以下两行:
config.autoload_paths += %W(#{config.root}/lib)
config.autoload_paths += Dir["#{config.root}/lib/**/"]
发布于 2014-10-16 04:40:02
要在模型和控制器中使用模块lib/my_module.rb
:
在config/application.rb
中
config.watchable_dirs['lib'] = [:rb]
在你的模型中(类似于你的控制器的想法):
require_dependency 'my_module'
class MyModel < ActiveRecord::Base
include MyModule
MyModule.some_method
end
这种方法在http://hakunin.com/rails3-load-paths上有更详细的描述
发布于 2013-02-12 16:11:17
可能的情况是,您希望在应用程序初始化时显式加载lib目录下的文件。
在我的config/application.rb中,我有一个条目,
config.autoload_paths += %W(#{config.root}/lib)
此外,这可能是因为模块名称/层次结构与文件中的不同,或者文件的位置/名称与该层次结构不同,因此也不可能自动加载该文件。因此,当我在config/application.rb的底部添加一个条目时,
require "./lib/file_name_without_extention
它工作得很好。
https://stackoverflow.com/questions/1073076
复制相似问题