在 Ruby Gem 中描述脚本依赖关系的最佳方式 - 我应该在哪里要求?
Best way to describe the script dependencies in a Ruby Gem - where should I require?
我是 Ruby 世界的新手,开始构建我的第一个 Ruby gem。
我注意到 require 与我预期的完全不同。假设我的 gem
中有以下脚本
- My Gem
- lib
script-1.rb
script-2.rb
script-3.rb
...
main.rb
+ bin
+ exe
...
在 exe 中,我调用 main.rb - gem 的主要入口点。
它使用来自脚本 1.rb 的 class 来完成它的工作。
script-1.rb代表它依赖代码script-2.rb。等等。
这是我的问题。
哪里是 require
脚本的最佳位置。主要是从可维护性的角度。假设在我的可执行文件的生命周期内,所有脚本都将被加载。我看到 2 个选项:
require
main.rb 中我的应用程序的所有脚本
- 每个脚本
require
仅对其依赖的脚本执行。
- 引入新的启动脚本
我开始使用选项 2。但很快我就明白 require 会进行全局修改并且缺少一些脚本 require
因为其他一些脚本已经这样做了。
那么这里的最佳做法是什么。我宁愿为初始化创建一个单独的脚本——比如定义我的 gem 的依赖关系,但我想知道是否有更好的方法我错过了?您如何描述 gem 中脚本之间的礼节?
如果您的 gem 不能与开箱即用的 Bundler 一起工作,请声明:
gem 'mygem'
然后你必须在文档中解释原因。某些 gem 出于棘手的技术原因,要求您加载特定文件,或建议在某些情况下加载。 Bundler 本身就是这样一个 gem:
require 'bundler/setup'
这不仅会加载 Bundler,还会启动 Bundler 环境设置并导入 Gemfile
设置。
通常你的 gem 应该有一个与 gem 本身同名的主库文件,它负责加载所有依赖项。
例如,mygem
看起来像:
mygem.rb
mygem/some_module.rb
mygem/other_module.rb
主要 mygem
看起来像:
module MyGem
# ...
end
require_relative './mygem/some_module'
require_relative './mygem/other_module'
require
调用是有序的,以便正确考虑任何依赖项。
如果您的模块有自己的其他依赖项,则模式会重复,如 mygem/submodule.rb
:
module MyGem::Submodule
# ...
end
require_relative './submodule/something'
我是 Ruby 世界的新手,开始构建我的第一个 Ruby gem。
我注意到 require 与我预期的完全不同。假设我的 gem
中有以下脚本- My Gem
- lib
script-1.rb
script-2.rb
script-3.rb
...
main.rb
+ bin
+ exe
...
在 exe 中,我调用 main.rb - gem 的主要入口点。
它使用来自脚本 1.rb 的 class 来完成它的工作。 script-1.rb代表它依赖代码script-2.rb。等等。
这是我的问题。
哪里是 require
脚本的最佳位置。主要是从可维护性的角度。假设在我的可执行文件的生命周期内,所有脚本都将被加载。我看到 2 个选项:
require
main.rb 中我的应用程序的所有脚本
- 每个脚本
require
仅对其依赖的脚本执行。 - 引入新的启动脚本
我开始使用选项 2。但很快我就明白 require 会进行全局修改并且缺少一些脚本 require
因为其他一些脚本已经这样做了。
那么这里的最佳做法是什么。我宁愿为初始化创建一个单独的脚本——比如定义我的 gem 的依赖关系,但我想知道是否有更好的方法我错过了?您如何描述 gem 中脚本之间的礼节?
如果您的 gem 不能与开箱即用的 Bundler 一起工作,请声明:
gem 'mygem'
然后你必须在文档中解释原因。某些 gem 出于棘手的技术原因,要求您加载特定文件,或建议在某些情况下加载。 Bundler 本身就是这样一个 gem:
require 'bundler/setup'
这不仅会加载 Bundler,还会启动 Bundler 环境设置并导入 Gemfile
设置。
通常你的 gem 应该有一个与 gem 本身同名的主库文件,它负责加载所有依赖项。
例如,mygem
看起来像:
mygem.rb
mygem/some_module.rb
mygem/other_module.rb
主要 mygem
看起来像:
module MyGem
# ...
end
require_relative './mygem/some_module'
require_relative './mygem/other_module'
require
调用是有序的,以便正确考虑任何依赖项。
如果您的模块有自己的其他依赖项,则模式会重复,如 mygem/submodule.rb
:
module MyGem::Submodule
# ...
end
require_relative './submodule/something'