Ruby on rails 在rails中创建通用模块
我是rails的新手。我已经为一个特定的项目创建了一个报告模块。现在,我们想让它像一个报告宝石一样在所有项目中通用。我的问题不是如何创建和使用gem。我的问题是“如何制作通用报告库”。例如,我在报告中有一个助手模块Ruby on rails 在rails中创建通用模块,ruby-on-rails,ruby,generics,Ruby On Rails,Ruby,Generics,我是rails的新手。我已经为一个特定的项目创建了一个报告模块。现在,我们想让它像一个报告宝石一样在所有项目中通用。我的问题不是如何创建和使用gem。我的问题是“如何制作通用报告库”。例如,我在报告中有一个助手模块 module Libquery module Helper include QueryConstants(which is dynamic - based on the project) #methods end end 结束 我的方法是:每个项目都将包括L
module Libquery
module Helper
include QueryConstants(which is dynamic - based on the project)
#methods
end
end
结束
我的方法是:每个项目都将包括LibQuery::Helper,还将包括自己的常量文件
module ProjectX
module Query
module Helper
include Libquery::Helper
#nothing - inherit all helper methods in libquery
end
end
end
但我想知道这是否是最优雅的做事方式?或者有更好的方法吗 首先,所有模块必须大写:
module MyModuleName
其次,要使用lib
最好将其包含在自动加载路径中(在应用程序.rb
文件中),如下所示
config.autoload_paths += %W(#{Rails.root}/lib/my_shared_libs)
这意味着rails将自动加载它,您将有可用的“开箱即用”
第三,外部模块不应该依赖于基于项目的模块和类,因为关键是使它们易于重用
所以归结起来就是:
#/lib/my_shared_libs/fun_things.rb
module FunThings
... your code
def laugh
puts 'haha'
end
end
#/models/user.rb
class User
include FunThings
end
User.new.laugh # => 'haha'
首先,所有模块必须大写:
module MyModuleName
其次,要使用lib
最好将其包含在自动加载路径中(在应用程序.rb
文件中),如下所示
config.autoload_paths += %W(#{Rails.root}/lib/my_shared_libs)
这意味着rails将自动加载它,您将有可用的“开箱即用”
第三,外部模块不应该依赖于基于项目的模块和类,因为关键是使它们易于重用
所以归结起来就是:
#/lib/my_shared_libs/fun_things.rb
module FunThings
... your code
def laugh
puts 'haha'
end
end
#/models/user.rb
class User
include FunThings
end
User.new.laugh # => 'haha'
尊重约定:模块和类必须大写。尊重约定:模块和类必须大写。让我试着用另一种方式问!我有一个模块中的所有常用函数!该函数只有在包含一些常量文件时才能工作。常数文件因每个项目而异。现在,重用模块的最佳方法是什么?好的。让我试着用另一种方式问!我有一个模块中的所有常用函数!该函数只有在包含一些常量文件时才能工作。常数文件因每个项目而异。现在,重用模块的最佳方法是什么?