加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 什么时候需要一个rails Gemfile中的require?

发布时间:2020-12-16 21:52:36 所属栏目:百科 来源:网络整理
导读:在我的gemfile中,我有类似的东西: gem 'net-sftp','2.1.1',:require = 'net/sftp'gem 'backup','3.0.27'gem 'watu_table_builder',:require = 'table_builder'gem 'browser','0.1.6' 在Gemfile中你需要一个要求吗?我还发现了以下内容:require =假.救命?
在我的gemfile中,我有类似的东西:
gem 'net-sftp','2.1.1',:require => 'net/sftp'
gem 'backup','3.0.27'
gem 'watu_table_builder',:require => 'table_builder'
gem 'browser','0.1.6'

在Gemfile中你需要一个要求吗?我还发现了以下内容:require =>假.救命?

解决方法

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

dashes are considered namespace separators and underscore classname separators

它表示以下gem语句

gem 'net-sftp'
gem 'backup'
gem 'foo_bar'

相当于

gem 'net-sftp',require: 'net/ftp'
gem 'backup',require: 'backup'
gem 'foo_bar',require: 'foo_bar'

如果gem作者遵循标准约定,这很有效.但在某些情况下,由于各种原因,这种情况不会发生.

例如,有一些叫做foo-bar的宝石,主文件名是/foo_bar.rb甚至是/foo.rb.在这种情况下,您提供:require选项以告诉Bundler您需要哪个文件.

最后,当您希望gem成为bundle的一部分时,使用require:false,但是您不希望Bundler默认加载它.

例如,这对于延迟加载gem是有用的,以防它仅在某些情况下使用.考虑一个包含重宝石的rake任务.您不希望应用程序在启动时加载它,但它需要是捆绑包的一部分,否则将无法找到它.

在这种情况下,您传递选项require:false.然后,在您的rake任务中,您将像往常一样手动使用它

require 'library'

只有在调用任务时才会加载库,而不是在正常的应用程序执行中加载.

一个很好的例子是whenever.库必须是bundler的一部分,因为它必须在部署应用程序时捆绑,但它应该作为命令行脚本运行.因此,在启动Rails应用程序时,您不希望Bundler需要它.

在某些情况下,您使用组而不是require:false.

另见official Bundler documentation for require.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读