我注意到有些宝石必须在使用它的文件中包含它,例如:
我将自己编写一个宝石。如果我不想在使用它时在 .rb 文件中添加
require 'a_gem'
,但并非总是如此。我将自己编写一个宝石。如果我不想在使用它时在 .rb 文件中添加
require 'my_gem'
,该怎么办?require "my_awesome_gem"
MyAwesomeGem.do_something_great
然而,如果一个应用程序正在使用bundler,它会在名为“Gemfile”的文件中定义应用程序的gem:
source 'http://rubygems.org'
gem 'my_awesome_gem'
require "bundler"
Bundler.require
MyAwesomeGem.do_something_great
Bundler.require
,因此Rails应用程序无需显式地要求使用gem即可使用它:只需将gem添加到Gemfile中即可。Bundler.require
的更多信息,请参见bundler文档。这没有意义。如果你想编写并使用一个 Gem,它需要在某个地方被 require。
"某个地方" 可以是你的脚本中明确指定,可以在 Gemfile 中写入,或者由其他被你的脚本所要求的脚本/Gem 要求。
如果你编写一个 Gem,Ruby 不会自动将它包含在所有脚本中。
最后,如果你发布它,难道每个使用 Ruby 的脚本都会奇迹般地要求它并执行你的代码吗?
我猜你看到的那个项目没有使用 require 'a_gem'
,而是使用了 Gemfile。