好的,我有这个Ruby脚本应该包含在许多Rails应用程序中。因此,我不想将其分解成碎片并将其插入特定的应用程序中,但宁愿将其保留为1个并且让Rails应用程序加载它。 该脚本主要来自模型,邮件程序和很少的控制器。
因此,如果我的脚本是tools.rb
,我应该把它放在Rails文件树中的哪个位置以及我应该如何/在我的Rails应用程序中包含它?该脚本还附带YAML文件。
这是我第二天学习Rails,所以请耐心等待。
答案 0 :(得分:6)
您可以将所有额外内容保留在/app/modules
或/lib
中。我更喜欢lib
。
放入lib
文件夹后,在任何初始化程序中创建它(或创建一个)
require "./lib/tools"
中的 /config/initializers/tools.rb
tadaa !!您可以在rails应用程序中的任何位置使用相应的类/模块!!
所有YAML文件都应放在/config/
。
***修复'/ lib / tools'中的语法
答案 1 :(得分:5)
您可以在.rb
上添加自己的lib folder
个文件。您可以在自己的rb文件中包含,模块,类......等。
如果您想要自动加载或自动查询自定义库代码,则必须打开config/application.rb
并添加下一行,例如:
config.autoload_paths += %W(#{config.root}/extras #{config.root}/lib)
你可以看看:
http://reefpoints.dockyard.com/ruby/2012/02/14/love-your-lib-directory.html
您yaml
个文件应位于/config/
文件夹中。
问候!
答案 2 :(得分:2)
如果您在脚本中定义了module
或class
,并在应用中使用该模块或类,则只需将其放入lib
即可。它将在应用程序的任何位置访问。如果需要初始化需要应用程序的内容,请加载文件。除非需要不加载东西。如果您认为必须在应用程序启动之前加载它。然后你可以加入config/initializers
yml
个文件可以在某个initializers
文件中加载,如下所示(可能在您的tools.rb
中):
MY_TOOLS = YAML.load_file("#{RAILS_ROOT}/config/tools.yml")
然后您可以在app中的任何位置使用MY_TOOLS
。