如何在Rails应用程序中包含自定义.rb脚本

时间:2013-02-16 15:45:18

标签: ruby-on-rails ruby

好的,我有这个Ruby脚本应该包含在许多Rails应用程序中。因此,我不想将其分解成碎片并将其插入特定的应用程序中,但宁愿将其保留为1个并且让Rails应用程序加载它。 该脚本主要来自模型,邮件程序和很少的控制器。

因此,如果我的脚本是tools.rb,我应该把它放在Rails文件树中的哪个位置以及我应该如何/在我的Rails应用程序中包含它?该脚本还附带YAML文件。

这是我第二天学习Rails,所以请耐心等待。

3 个答案:

答案 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)

如果您在脚本中定义了moduleclass,并在应用中使用该模块或类,则只需将其放入lib即可。它将在应用程序的任何位置访问。如果需要初始化需要应用程序的内容,请加载文件。除非需要不加载东西。如果您认为必须在应用程序启动之前加载它。然后你可以加入config/initializers

yml个文件可以在某个initializers文件中加载,如下所示(可能在您的tools.rb中):

     MY_TOOLS = YAML.load_file("#{RAILS_ROOT}/config/tools.yml")

然后您可以在app中的任何位置使用MY_TOOLS