1. 提供命名空间(namespace)
命名空间(namespace)是为了让方法,常数,类名称不互相冲突而设计的机制。
2. 以模块形式提供的方法必须使用"模块名.方法名"的方式调用。以这种形式调用的方法又称为模块函数。
3. 在类的定义内使用include, 将模块所定义的方法与常数纳入类定义里。
4. 定义模块
module 模块名
模块定义
end
5. 例子:
# -*- coding: utf-8 -*-
=begin
描述了模块的使用方式
=end
module HelloModule # module 语句
Version = "1.0" # 定义常数
def hello(name) # 定义方法
print "Hello, ", name, ".\n"
end
module_function :hello # 将hello以模块函数形式公开
end
p HelloModule::Version # => "1.0"
p HelloModule::hello("Alice") # => Hello, Alice.
# nil
p HelloModule.hello("Alice") # 同上
include HelloModule # 读入
p Version
hello("Jack")
6. 模块内部也可以定义方法,只是方法在定义之后,只能在模块内部调用。要将方法对模块外部公开,必须使用module_function。
7.
# -*- coding: utf-8 -*-
=begin
在模块函数内引用self(接受者), 可以取得改模块本身。这样就可以使用模块函数去改写模块本身的状态了,
但一般来说模块函数通常不会去使用self。
=end
module FooModule
def foo
p self
end
module_function :foo
end
FooModule.foo # => FooModule
分享到:
相关推荐
适用于 Ruby 的 Camerazable 模块 安装 将此行添加到应用程序的 Gemfile 中: gem 'camelizable' 然后执行: $ bundle 或者自己安装: $ gem install camelizable 用法 require 'camelizable' class String ...
hash['three'] = 3 # => {'one'=>1, 'two'=>2, 'three'=>3} ``` ### IRB(Interactive Ruby Shell) IRB是一个交互式的Ruby Shell,可以让开发者快速测试Ruby代码片段。启动IRB非常简单: ```bash irb ``` 在IRB...
- **Refinements**:这是一种新的作用域限制的模块使用方式,可以控制模块的可见性和行为,提高代码隔离。 - **Improved Proc and lambda**:Proc对象的行为更接近lambda,特别是在处理块的返回值时。 - **...
兼容版本雾雾Proxmox VE 雾芯Ruby<0> = 1.45 > = 2.3 > = 0.6 > = 5.3 > = 1.45 > = 2.3 > = 0.8 > = 5.4 > = 1.45 > = 2.3 > = 0.9 > = 6.0 > = 2.1 > = 2.3 > = 0.10 > = 6.0 > = 2.1 > = 2.5 > = 0.14 > = 6.2 > ...
@posts = Post.all.paginate(:page => params[:page], :per_page => 20) ``` **DataMapper** 是一个 ORM(对象关系映射)库,它与多种数据库兼容。在 DataMapper 中,`will_paginate` 提供了方便的数据查询接口: ...
match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{DATA:level} %{GREEDYDATA:message}" } } date { match => [ "timestamp", "ISO8601" ] } } output { elasticsearch { hosts => ["localhost:...
在描述中提到的"ruby和redis接口"可能是一个自定义的Ruby库或者模块,专门用于搭建和管理RedisCluster集群。RedisCluster是Redis的分布式解决方案,它将数据分片到多个节点,提供高可用性和可扩展性。通过这个接口,...
安装 ruby Thin、设置站点配置和用于管理服务的初始化脚本的 puppet 模块。 用法: 通用瘦安装 class { 'thin': } 添加瘦站点 thin::site { 'coolapp': chdir => '/usr/share/coolapp', log => '/var/log/...
插件添加了计算资源:使用模块管理虚拟机和容器。 旨在满足此。 如果您喜欢它并需要更多功能,则可以或简单地它: 支持 您可以通过以下方法支持插件开发: 兼容版本 防雾剂 Proxmox 工头雾代理 领班 Ruby <0 xss...
zip [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] # => {1=>4, 2=>5, 3=>6} 包含的改进列表 请参阅、或! 炼糖厂以前是 Zucker 这个核心扩展的集合曾经被称为zucker 。 缺少以前的功能? 它可能已被提取到一
"bin-path" => "/usr/local/bin/rails", "check-local" => "disable" )) )) server.document-root = "/var/www/html" server.port = 80 url.rewrite-once = ( "^(/.*)$" => "/public$1" ) server.errorlog = ...
"bin-path" => "/path/to/rails/application/public/dispatch.fcgi" ) ) ) ``` **2.2.3 Python FastCGI** 对于Python应用,需要使用类似Flup这样的库来创建FastCGI服务器。 **2.3 SSL** Lighttpd也支持SSL加密...
在默认服务器选项参数中设置了以下选项AuthorizedKeysFile => .ssh / authorized_keys UsePAM =>是子系统=> sftp internal-sftp 密码验证=>是ChallengeResponseAuthentication =>否GSSAPIAuthentication =>是...
蕨类 目录 描述 这个人偶模块管理费姆及其规则。 用法 class { 'ferm' : } ferm ::规则 要将规则添加到ferm rules.d目录: ... rules => [ ' proto tcp dport 80 ACCEPT ' ], host => ' test3 ' , ... prio => ' 00 ' ,
bind::a { 'Hosts in example.com': ensure => 'present', zone => 'example.com', ptr => false, hash_data => { 'host1' => { owner => '192.168.0.1', }, 'host2' => { owner => '192.168.0.2', }, },}$...
class { 'dhcp' : service_ensure => running , dnsdomain => [ ' dc1.example.net ' , ' 1.0.10.in-addr.arpa ' , ], nameservers => [ ' 10.0.1.20 ' ], ntpservers => [ ' us.pool.ntp.org ' ], interfaces => ...
1. **引入sybct模块**:在Ruby脚本的顶部,引入`sybct`模块,这将加载驱动程序并使其在代码中可用。 ```ruby require 'sybct' ``` 2. **配置连接参数**:创建一个包含连接细节的哈希,如服务器名称、用户名、密码和...
傀儡-ddclient DDclient的Puppet模块 DDclient 是一个小而全功能的客户端,只需要 Perl,不... password => 'mypassword', host => 'acme.dnsdynamic.com', ssl => 'yes', daemon => 300, server => 'www.dnsdynam