`
hideto
  • 浏览: 2678367 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

读Ruby for Rails的思考之require与load

    博客分类:
  • Ruby
阅读更多
首先看看代码:
reqdemo.rb
puts "This is the first (master) program file."
require "requiree.rb'
require "requiree.rb'
puts "And back again to the first file."

loaddemo.rb
puts "This is the first (master) program file."
load "requiree.rb'
load "requiree.rb'
puts "And back again to the first file."

requiree.rb
puts "> This is the second file, which was 'require'd by the first."

分别运行reqdemo.rb和loaddemo.rb,结果是require只打印一次,而load打印两次
这是因为:
require load and include
Ruby中"require","load"和"include"有什么不同呢?"require"和"load"用途是一致的,用來来载入新的程序库,"include"是用来mix-in模块

"require"可载入某个a.rb文件,且可以省略".rb",而且它只会在第一次的时候载入,若再次"require"时就会忽略
require 'a'
a = A.new


"load"和"require"一样但要用 a.rb 全名, 且每次一定会重新载入
load 'a.rb'
a = A.new


载入程序库的顺序呢?类似java的class path,Ruby把这个信息存在"$:"系统全局变量上,你可以借着RUBYLIB或ruby -I来加入新的载入目录
puts $:


"include"用来mix-in某个模块,可以减少书写的长度
require 'webrick'
include WEBrick

# 可以不用 server = WEBrick::HTTPServer.new(...)
server = HTTPServer.new(...)


那么load有什么用呢?
Rails程序优先使用load而不是require来载入程序库
在development模式下,当你修改一段代码后,不用重启服务器,你的代码更改会被自动reload,这就是load的作用
而如果你使用require的话,多次require并不会起作用
对大型Ruby程序如Rails,使用多个文件和require/load/include令你的程序非常容易组织和划分模块
分享到:
评论

相关推荐

    动态加载的艺术:Ruby中require与load的区别

    ### 动态加载的艺术:深入理解 Ruby 中 `require` 与 `load` 的区别 #### 引言 在 Ruby 编程中,模块化和代码重用是非常重要的实践。为了实现这一目标,Ruby 提供了两种不同的方法来加载外部文件和库:`require` ...

    ruby on rails源代码分析

    `Rails::Initializer.run` 方法会根据传入的参数(如 `:set_load_path`、`:require_frameworks` 等)执行一系列配置步骤。 在初始化过程中,Rails 还会自动加载 `config/environment.rb` 文件,这是 Rails 应用程序...

    Ruby,详细描述require背后的故事

    `require`是Ruby中非常核心的功能之一,它不仅方便了开发者加载外部资源,还提供了强大的功能来管理这些资源的加载顺序和版本。理解`require`的工作原理对于高效开发Ruby应用程序至关重要。无论是初学者还是经验丰富...

    举例讲解Ruby中require的使用方法

    - 当使用`require`时,Ruby解释器会根据`$LOAD_PATH`环境变量中的路径来查找指定的文件。 - `$LOAD_PATH`是一个数组,包含了Ruby解释器搜索库文件的所有路径。 - 如果文件不在`$LOAD_PATH`中,则Ruby会抛出一个...

    利用RJB在Ruby on Rails中使用Java代码的教程

    【Ruby on Rails与Java代码集成】 Ruby on Rails(Rails)是一个基于Ruby编程语言的全栈Web应用程序框架,因其简洁高效而备受开发者喜爱。Rails允许快速构建Web应用,并能轻松部署到各种Web容器,如IBM WebSphere或...

    Ruby-dotenv从env加载环境变量

    在实际项目中,dotenv通常与Rails或其他框架集成,例如在Rails中,你可以在`config/application.rb`文件中配置dotenv: ```ruby require_relative 'boot' require 'rails/all' # 如果你在Gemfile中添加了`dotenv-...

    Ruby on rails安装后去掉DL is deprecated,please use Fiddle警告信息的方法【测试可用】

    ### Ruby on Rails安装后去掉“DL is deprecated, please use Fiddle”警告信息的方法 在进行Ruby on Rails开发的过程中,有时会遇到一个常见的警告信息:“DL is deprecated, please use Fiddle”。虽然这个警告并...

    Ruby与JSON:无缝数据交换的秘诀

    - **Ruby on Rails**:Ruby on Rails是一个流行的服务器端Web应用框架,用于构建数据库驱动的应用程序。 #### JSON简介 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写,也便于...

    ruby初学者教程(对初学者很有帮助)

    - **简洁性**:Ruby的设计目标之一就是让代码尽可能地简洁易读。 - **面向对象**:Ruby是一门纯粹的面向对象语言,所有事物都是对象。 - **动态性**:Ruby支持动态类型和运行时修改,这使得程序员可以在程序运行过程...

    搭建Rails测试环境2: Autotest和Spork的安装和配置

    在Ruby on Rails开发中,测试是确保代码质量与应用程序稳定性的重要环节。Rails提供了多种测试工具,Autotest和Spork就是其中两个常见的辅助测试工具。本文将详细介绍如何在Rails环境中安装和配置这两个工具。 首先...

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

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

    dotenv-schema:为 dotenv 定义架构

    dotenv 模式 Dotenv-schema 使模式化。安装编写.env和.env_schema : $ cat .envDB_HOST=db.example.comDB_PORT=3306$ cat .env_schemaDB_HOST:DB_...Sinatra 或Plain ol' Ruby $ gem install dotenv require 'dotenv-

    Java 版的 Ruby 解释器 JRuby 1.7.14 发布

    JRuby 1.7.14 发布 ,此版本现已提供下载: ...load/require 内部重构和简化 解决了一些兼容性问题 1.7.14 修复的 bug: #1923 - String#start_with? returns false when using an empty string #1905 - T

    marsha:JS的Ruby Marshal序列化器反序列化器

    我想与以Marshal格式存储简单值的Ruby / Rails应用程序交换数据现在我们在谈论。 我已经完成了诸如true,false和nil,Fixnums,Floats,仅包含ASCII / latin1字符,数组和哈希值的字符串之类的基础知识。 可以序列化...

    rubocop-i18n:RuboCop规则,用于检测和自动更正i18n的未修饰字符串(gettext和rails-i18n)

    i18n...# You *must* choose GetText or Rails-i18n style checking# If you want GetText-style checkingI18n/GetText: Enabled: trueI18n/RailsI18n: Enabled: false# If you want rails-i18n

    memcached的安装与配置

    ### Memcached的安装与配置详解 ...以上就是关于Memcached的安装与配置过程,以及在配置Rails应用时可能遇到的一些常见问题及其解决方案。希望这些内容能帮助你在实际开发中更好地使用Memcached。

    gdshowsdb:所有Grateful Dead在关系数据库中显示信息

    与Ruby一起使用 require 'gdshowsdb' Gdshowsdb . init ( ) Gdshowsdb . load ( ) jack_straw_shows = SongRef . find_by_name ( 'Jack Straw' ) . shows jack_straw_shows . each do | show | puts show . title ...

Global site tag (gtag.js) - Google Analytics