Bundler:做什么:require => Gemfile中的nil是什么意思?

时间:2012-08-30 15:18:40

标签: ruby-on-rails bundler

这个gemfile条目中的nil是什么意思?

gem "hub", ">= 1.10.2", :require => nil

我发现这个问题并回答错误;

Bundler: What does :require => false in a Gemfile mean?

在这种情况下,nil的行为与false相同吗?

3 个答案:

答案 0 :(得分:14)

是的,nilfalse在这里的行为相同:它使Bundler不需要指定的gem。

答案 1 :(得分:5)

要求nilfalse表示捆绑商不会加载(require)特定的宝石。但是,它们将位于$:加载路径中,因此您可以在需要使用它们时明确要求它们。对于在特殊情况下仅需要的宝石(例如外部脚本,rake任务等),使用它是一个好习惯。

答案 2 :(得分:0)

每当您在Gemfile中指定Gem并运行 bundle install时,bundler将通过放置require 'whenever' 并在此应用中为该Gem安装指定的gem和加载代码,这样捆绑将在你的Rails应用程序中加载所有Gems的代码,你可以毫不费力地从任何Gem调用任何方法,就像你大部分时间一样。

但是whenever,faker or capistrano 之类的Gems是您在schedule.rb 文件中用于管理deploy.rb 文件中的crons和capistrano代码以自定义部署的代码所需的应用程序代码中不需要的内容配方,所以你不需要在你的应用程序代码中加载这些宝石的代码 无论你想从这些宝石中调用任何方法,你都可以通过 require "whenever" 自己手动要求这些宝石。所以你在这些Gems中将:require => false:require => nil放在你的Gemfile中(两者都是相同的),这样捆绑包就会安装那个Gem而不是加载Gem本身的代码,你可以随时随地做通过简单地提出要求'无论何时'在你的情况下。