将遗留库文件夹移动到更现代的结构中

64jmpszr  于 2021-09-29  发布在  Java
关注(0)|答案(1)|浏览(352)

我在一台计算机上有几个模块 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服务器上导入此库,有什么建议或建议吗?

qlvxas9a

qlvxas9a1#

您可以将文件移动到以下结构

/app/lib
/app/lib/library
/app/lib/library/library.rb # you can remove this file if it only contains requires
/app/lib/library/file_a.rb
/app/lib/library/file_b.rb
/app/lib/library/file_c.rb

然后,您需要为类和模块应用以下命名约定:


# /app/lib/library/file_a.rb

Module Library::FileA
  # your code
end

以下是导轨指南中的说明: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/liblib 目录如果你选择 lib ,您可以继续使用加载文件 require 也可以将文件夹添加到自动加载路径

相关问题