我实际上构建了一个Sinatra应用程序,我想在Ruby / bundler等中明确一点...
关于要求rubygems
config.ru
的问题是什么?很多人这样做,但为什么呢?
要求bundler/setup
进入app.rb
同样的问题?有些人说它需要我们拥有的每一颗宝石Gemfile
,但这是真的吗? (在这种情况下,我们不需要sinatra
,active_record
...)。
最后我不太了解的是要求。第一个入口点是config.ru
。因此,如果我们需要rubygems
然后./app.rb
,我们就不需要rubygems
进入./app.rb
,对吧?
答案 0 :(得分:2)
关于在config.ru上要求rubygems的内容是什么?很多人这样做,但为什么呢?
从Ruby v1.9起,无论如何都是默认需要它并不重要。我检查了一个我正在进行的项目,并且我已经把它放在了顶部,所以它没有任何理由!也许我现在就摆脱它......
有关详情,请参阅http://www.rubyinside.com/why-using-require-rubygems-is-wrong-1478.html。
要求捆绑/设置到app.rb的同样问题?有些人说它需要我们在Gemfile中拥有的每一颗宝石,但这是真的吗? (在这种情况下,我们不需要sinatra,active_record ......)。
是的,Bundler will handle require
for you if you tell it to,但实际上我使用this style:
require 'rubygems'
require 'bundler'
Bundler.setup(:default, :ci)
require 'nokogiri'
因为我喜欢处理我自己的require
,所以它(通常)会更快,更特别地进行测试,IMO。
另请注意,来自链接的文档:
对于另一种应用程序(例如Sinatra应用程序),在尝试需要任何宝石之前,您需要设置bundler。
最后,
第一个入口点是config.ru。因此,如果我们需要rubygems然后使用./app.rb,我们就不需要将rubygems放入./app.rb,对吧?
是的,require
will only load a library once。
加载给定名称,如果成功则返回true,如果已加载该功能则返回false。