5

好的,我有这个应该包含在许多 Rails 应用程序中的 Ruby 脚本。所以我不想把它分解成碎片并将其塞进一个特定的应用程序中,而是宁愿将它保持在一个部分并让 Rails 应用程序加载它。该脚本主要来自模型、邮件程序和很少的控制器。

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

这是我学习 Rails 的第二天,所以请多多包涵。

4

3 回答 3

7

您可以将所有额外的东西保存在/app/modules/lib中。我更喜欢lib。放入lib文件夹后,在任何初始化程序中都需要它(或创建一个)

require "./lib/tools"/config/initializers/tools.rb

和 tadaa !您可以在 rails 应用程序的任何地方使用相应的类/模块!

所有的 YAML 文件都应该放在/config/.

*** 修复 '/lib/tools' 中的语法

于 2013-02-16T15:53:32.800 回答
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/文件夹内。

问候!

于 2013-02-16T15:54:22.317 回答
2

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

yml文件可以像下面一样在某些initializers文件中加载(可能在您的文件中tools.rb):

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

然后你可以MY_TOOLS在应用程序的任何地方使用。

于 2013-02-16T15:47:48.853 回答