`

ruby的require加载

    博客分类:
  • ruby
 
阅读更多
ruby没有像java那种严格的包管理机制,因此引用起来就有些让人摸不着头脑,所以有人说ruby不适合用于多人协作的大项目,这是有一定道理的。
ruby加载其它的类,一般是通过require来加载的,如:

require 'dbi'
require "rexml/document"


但是上面加载的是标准类库里面的文件,当然也可以是已安装的gems文件,但是如果是自己在本地写的文件,就不能直接用require了,如有一个hello.rb文件要引用当前目录的print.rb文件内的类或方法,就不能用require,而应该这样:
require_relative "print"


但是这个如果想直接通过require的方式来引用也是有办法的,那就是在文件头部将当前目录作为ruby加载的路径:
$LOAD_PATH.unshift(File.dirname(__FILE__)) unless $LOAD_PATH.include?(File.dirname(__FILE__))
require "print"

其中File.dirname(__FILE__)代表当前路径,而$LOAD_PATH.unshift方法的目的就是将当前目录作用ruby标准的加载路径。

总的来说,ruby的加载方式并没什么大的问题,虽然看起来没java包管理机制那样简洁,但java那种包管理机制也的确不太适合用于ruby这种动态语言,因为它太庸长了,但java默认就可以使用当前目录的类而不需要import导入,从这点来说,还是个不错的特性。
分享到:
评论

相关推荐

    Ruby中require、load、include、extend的区别介绍

    require 一般情况下用于加载库文件,而load则用于加载配置文件。 1、require:加载一个库,并且只加载一次,如果多次加载会返回false。只有当要加载的库位于一个分离的文件中时才有必要使用require。使用时不需要加...

    zeitwerk:Ruby的高效且线程安全的代码加载器

    Zeitwerk是用于Ruby的高效且线程安全的代码加载器。 给定,Zeitwerk能够按需(自动加载)或预先(紧急加载)加载项目的类和模块。 您require为自己的文件编写require调用,而是可以知道自己的类和模块随处可见,...

    ruby-haml-loader:使用实际Ruby`haml`的Webpack Haml加载器

    用于Webpack的Ruby Haml加载程序 将Haml文件作为模块导入Webpack项目中。 返回渲染的模板。 这很慢。 它是为临时使用而创建的,直到转换为Jade。 此自述文件基于自述文件。 设置 添加到您的webpack配置模块....

    使用ruby解析awdb离线库

    4. 创建一个GeoIP2数据库对象,并加载AWDB离线库文件:`db = GeoIP2::Database.new('path/to/awdb.mmdb')`。 5. 使用数据库对象查询IP地址的地理位置信息:`result = db.lookup('192.0.2.1')`。 6. 从查询结果中获取...

    neovim-ruby:Ruby对Neovim的支持

    纽维姆·鲁比 Ruby对支持。 安装 ...插件是从$VIMRUNTIME/rplugin/ruby/目录加载的Ruby文件。 这是一个示例插件: # ~/.config/nvim/rplugin/ruby/example_plugin.rb Neovim . plugin do | plug |

    rubygems:Ruby的库包装和发行

    我们将这些软件包称为“宝石”,而RubyGems是在您的Ruby环境中安装,创建,管理和加载这些软件包的工具。 RubyGems还是RubyGems.org的客户端, 是Gems的公共存储库,可让您发布可被其他开发人员共享和使用的Gem。 ...

    ffi:Ruby FFI

    Ruby-FFI 描述Ruby-FFI是用于以编程方式加载动态链接的本机库,在其中绑定功能并从Ruby代码中调用这些功能的瑰宝。 而且,Ruby-FFI扩展可以在不对CRuby(MRI),JRuby,Rubinius和TruffleRuby进行更改的情况下工作。...

    optimism:[Ruby] Ruby 的配置库。 一种简单、功能丰富、优雅的纯 Ruby 方式。 哈希兼容性

    Optimism,Ruby 的配置 gem 主页: 作者: 古腾执照: 麻省理工... require "yaml"Rc = Optimism.require("foo.yml")Ruby stynax Rc = Optimism do_.host = "localhost"_.port = 8080_.mail.stmp.address = "stmp.gma

    css_parser:Ruby CSS解析器

    在Ruby中加载,解析和级联CSS规则集。 建立 gem install css_parser 用法 require 'css_parser' include CssParser parser = CssParser :: Parser . new parser . load_uri! ( '...

    ruby_warning_filter:无噪音的详细Ruby模式

    require "ruby_warning_filter" $stderr = RubyWarningFilter . new ( $stderr ) 在运行应用或测试时,您应该只会看到相关的警告。 现在,去修复它们! 反馈 该过滤器通过代理所有对stderr的写入来工作。 它在我的...

    stardog-ruby:Stardog RDF 数据库的基本 ruby​​ 客户端

    入门安装 Stardog 并阅读创建一个用于测试的数据库(我们将在下面的示例中使用rubytest ): stardog-admin db create -n rubytest -t D -u admin -p admin与Ruby连接 require 'stardog'db = Stardog::Server.new...

    解析器:Ruby解析器

    加载解析器(请参见下面的部分,以了解对emit_*调用): require 'parser/current' # opt-in to most recent AST format: Parser::Builders::Default.emit_lambda = true Parser::Builders::Default.emit_procarg0 ...

    hitimes:快速,高分辨率的计时器库,用于记录性能指标

    Ruby用法与rubygems安装时最容易使用的Hitimes: gem install hitimes 或作为捆绑程序Gemfile一部分: gem 'hitimes' 您可以使用标准的ruby require语句加载它。 require 'hitimes'间隔使用Hitimes::Interval仅计算...

    bibtex-ruby:BibTeX库,解析器和Ruby转换器

    BibTeX-Ruby BibTeX-Ruby是Rubyist的BibTeX的瑞士军刀。 它包括一个用于所有常见BibTeX对象(@ string,@ preamble,@ ...在IRB会话中安装和加载BibTeX-Ruby: $ [sudo] gem install bibtex-ruby $ irb >> require 'b

    ruby-packer:将Ruby应用程序打包到单个可执行文件中

    本机支持任何形式的require和load ,包括动态需求(例如load(my_path + '/x.rb') ) Ruby Packer用Ruby编写,并使用Ruby Packer本身打包和分发 完全支持本机C扩展 开源,MIT许可 已知局限性 某些使用C扩展程序的...

    Cordova-Images-Injection:Ruby 脚本,可将默认图像注入您的项目,而无需加载它们。 如果像素不完美,将调整图片大小

    在 ruby​​ 中加载文件 按照test.rb说明进行操作 依赖关系 该脚本依赖于: require "image_size" require "RMagick" include Magick 它能做什么 该脚本获取一组图像及其绝对路径,并检查它们的尺寸,误差范围...

    tagen:Ruby 的核心和额外扩展。 #activesupport

    用法挑选定义 require "tagen/core/array/delete_values"a = [1,2,3]a.delete_values(1, 3) -> [1, 3]a -> [2]加载所有核心扩展 require "tagen/core"安装 gem install tagen发展贡献将任何错误/功能/想法提交到 ...

    backports:Ruby的最新功能反向移植到旧版本

    加载反向端口 明确地(推荐) 例如,如果您想使用transform_values和transform_keys ,即使在不包含它的Ruby实现中,也可以: require 'backports/2.4.0/hash/transform_values' require 'backports/2.5.0/hash/...

    autoreload:自动库重新加载

    概要假设我们的加载路径中有一个库foo.rb : def foo 1end然后我们可以运行以下脚本example.rb : require 'autoreload'autoreload(:interval=>2, :verbose=>true) do require 'foo.rb'endloop { puts foo sleep 2}...

    OpenTok-Ruby-SDK:适用于Ruby的OpenTok Server SDK

    OpenTok Ruby SDK ...将gem加载到将要使用的任何文件的顶部。 然后使用您的OpenTok API密钥和API密钥初始化一个OpenTok::OpenTok对象。 require "opentok" opentok = OpenTok :: OpenTok . new api_key , ap

Global site tag (gtag.js) - Google Analytics