`require:`在Rails gemfile中是什么意思?

时间:2016-04-20 04:56:16

标签: ruby-on-rails bundler require gemfile

我正在做一个有关身份验证的教程,并且遇到gemfile的以下行。这里require的用途是什么?

gem 'google-api-client', require: 'google/api_client'

教程:http://willschenk.com/setting-up-devise-with-twitter-and-facebook-and-other-omniauth-schemes-without-email-addresses/

我在Javascript中理解require,但是在Rails中我认为gemfile是用于安装gem的,一旦安装它们就可以在应用程序中使用,这就是它所有的...所以我和#39;我不确定为什么要使用require

我特别感兴趣,因为在添加此行并启动服务器后,我遇到了错误。

错误:

  

/usr/local/rvm/gems/ruby-2.3.0/gems/bundler-1.11.2/lib/bundler/runtime.rb:77:in   `require':无法加载此类文件 - google / api_client(LoadError)

临时解决方案:我已对require:部分进行了注释,并且阻止了错误。但也许这不太理想。

因此,了解require的使用对于解决此问题非常有帮助。

我阅读了有关SO的其他文章,但他们讨论了require => nilrequire => false等细节,我认为这与我的问题略有不同。

  1. Bunder: What does :require => nil in Gemfile mean?
  2. Bundler: What does :require => false in a Gemfile mean?
  3. 有人可以分享一些煽动吗?

    更新

    我后来发现了这个解释得很好:When do you need a require in a rails Gemfile?

      

    如果省略:require选项,默认情况下Bundler将尝试   通过使用标准的名称到文件转换规则来要求gem:

         

    如果宝石作者遵循标准,这很有效   约定。但在某些情况下,由于各种原因,这并非如此   发生。

1 个答案:

答案 0 :(得分:1)

当宝石本身不需要任何lib时,您需要以Gemfile(您编写的方式)或项目中的某个文件来执行此操作。

例如:想象一个宝石,它针对任何特定问题都有多个解决方案。但是,您不想加载所有这些解决方案(文件),您只需要一个。然后,您需要使用require: some_lib指定要加载的文件。