在链接中,当他说他不需要添加很多“require”语句时,他的意思是向 、 和数组添加文件s.files
——s.executables
这些s.test_files
决定了哪些文件被打包到 gem 中,哪些文件被忽略. 正如您从 gem 规范中看到的那样,git 在某些目录中跟踪的任何内容都将包含在打包的 gem 中。
Ruby 的require
情况则不同。标准要求规则仍然适用。
Ruby 的 gem 系统通过添加一堆不同的位置让 Ruby 在运行时查找“foo.rb”来工作require "foo"
。如果"lib"
是您的 gem 的唯一需要路径,那么当您require "my_gem"
Ruby 只打算运行lib/my_gem.rb中的代码时。如果lib/my_gem.rb在你的 gem中没有require
任何其他文件,那么 Ruby 没有看到它们,所以当你尝试使用这些文件中的类时,你会得到未定义的常量错误。
例如,你可以看看我写的两个简单的 gem;两者都是从HashToHiddenFieldsbundle gem
和SimpleStats 开始的。在这两个 gem 中,lib/中的主 Ruby 文件需要加载所有需要加载的 gem 才能正常工作。例如,hash_to_hidden_fields.rb需要action_view/helpers/hash_to_hidden_fields以便常量+模块存在,因此我们可以将其包含到.ActionView::Helpers::HashToHiddenFields
ActionView::Base
希望能回答这个问题。我知道 Ruby 要求有一段时间对我来说非常模糊。