我注意到某些宝石你必须将它包含在你想要使用它的文件中require 'a_gem'
,但情况并非总是这样。
我将自己创作一个宝石。如果我不想在使用时将require 'my_gem'
添加到.rb文件,该怎么办?
答案 0 :(得分:2)
通常,使用gem的应用程序需要gem:
require "my_awesome_gem"
MyAwesomeGem.do_something_great
但是,如果某个应用程序正在使用bundler,它会在名为" Gemfile"的文件中定义应用程序的gem:
source 'http://rubygems.org'
gem 'my_awesome_gem'
然后应用程序可以以自动需要Gemfile中指定的所有gem的方式调用bundler:
require "bundler"
Bundler.require
MyAwesomeGem.do_something_great
Rails项目使用Bundler.require
,因此Rails应用程序不需要显式地需要gem来使用它:只需将gem添加到Gemfile中即可。
有关Bundler.require
的详情,请参阅bundler documentation
有关Rails如何使用Bundler的更多信息,请参阅Justin Weiss的How Does Rails Handle Gems?。
答案 1 :(得分:1)
这没有意义。如果你想写一个Gem并使用它,就需要在某个地方使用它。
这个“某个地方”可能是您的脚本中的明确内容,可以用Gemfile编写,也可以由脚本所需的另一个脚本/ gem来使用。
如果您编写gem,Ruby将不会在所有脚本中自动包含它。
最后,如果你发布它,地球上每个Ruby脚本都会神奇地需要它并执行你的代码吗?
我认为您看到的未使用require 'a_gem'
的项目使用的是Gemfile。