我在一台计算机上有几个模块 lib
rails 3上的文件夹:
/lib
/lib/library
/lib/library/library.rb #This imports with requires, file_a, file_b, etc...
/lib/library/file_a.rb
/lib/library/file_b.rb
/lib/library/file_c.rb
我正在尝试使用rails 6来确定实现这一点的最佳方式。我已经读了一些关于zeitwerk的文章。
我的结论是,我需要将这个库移动到 app/lib
用于自动加载。
但是,我的库仍然无法加载。关于如何在迁移的rails服务器上导入此库,有什么建议或建议吗?
1条答案
按热度按时间qlvxas9a1#
您可以将文件移动到以下结构
然后,您需要为类和模块应用以下命名约定:
以下是导轨指南中的说明:https://edgeguides.rubyonrails.org/autoloading_and_reloading_constants.html#project-结构
在rails应用程序中,文件名必须与它们定义的常量匹配,目录充当名称空间。
例如,文件app/helpers/users\u helper.rb应定义usershelper,文件app/controllers/admin/payments\u controller.rb应定义admin::payments控制器。
注意:即使这不是您的问题,您也需要知道,是否应该将特定于应用程序的库纳入
app/lib
或lib
目录如果你选择lib
,您可以继续使用加载文件require
也可以将文件夹添加到自动加载路径