Ruby除了用Ruby写的扩展库以外,还有许多C写的扩展库,比如socket编程库/系统日志功能库/数据库驱动
这些库以.so或者.dll结尾,这也是我们require的时候不要使用.rb后缀的原因,比如
require 'gdbm'
Ruby开源项目、扩展库站点:
Ruby Application Archive(RAA)
RubyForge
怎样写Ruby的C扩展库呢?
我们来看看
How to create a Ruby extension in C under 5 minutes
该程序的前提是需要在linux/unix环境下
MyTest/extconf.rb
# Loads mkmf which is used to make makefiles for Ruby extensions
require 'mkmf'
# Give it a name
extension_name = 'mytest'
# The destination
dir_config(extension_name)
# Do the work
create_makefile(extension_name)
MyTest/MyTest.c
// Include the Ruby headers and goodies
#include "ruby.h"
// Defining a space for information and references about the module to be stored internally
VALUE MyTest = Qnil;
// Prototype for the initialization method - Ruby calls this, not you
void Init_mytest();
// Prototype for our method 'test1' - methods are prefixed by 'method_' here
VALUE method_test1(VALUE self);
// The initialization method for this module
void Init_mytest() {
MyTest = rb_define_module("MyTest");
rb_define_method(MyTest, "test1", method_test1, 0);
}
// Our 'test1' method.. it simply returns a value of '10' for now.
VALUE method_test1(VALUE self) {
int x = 10;
return INT2NUM(x);
}
就这么简单,我们进入MyTest目录,运行
ruby extconf.rb
这会为我们创建Makefile,然后我们运行
make
这样我们的C扩展库就compile和build好了,让我们运行mytest.rb测试一下:
# Load in the extension (on OS X this loads ./MyTest/mytest.bundle - unsure about Linux, possibly mytest.so)
require 'MyTest/mytest'
# MyTest is now a module, so we need to include it
include MyTest
# Call and print the result from the test1 method
puts test1
# => 10
该demo程序下载地址:
extension-code.tar.gz
分享到:
相关推荐
使用Ruby on Rails最新版进行开发,开发者不仅可以享受到高效的开发流程,还能通过强大的社区支持和丰富的第三方库(如Gem)扩展其功能。例如,Devise用于用户认证,CanCanCan用于授权管理,Paperclip或Carrierwave...
随着学习的深入,你将探索更高级的主题,如AJAX集成、Caching技术以提升应用性能,以及如何利用gem(Ruby的库)来扩展Rails的功能。例如,Devise用于用户认证,CanCanCan用于授权管理,Paperclip或Carrierwave处理...
在Rails 2.2.3时代,社区已经发展出很多插件和 gems(Ruby的扩展库),如Devise用于身份验证,CanCanCan进行授权管理,Paperclip或Carrierwave处理文件上传等。虽然这些可能需要适配老版本,但它们能极大地增强你的...
5. **ActiveSupport**:提供了一系列有用的工具和库,如时间助手、字符串操作、哈希扩展等,增强了Ruby的基础功能。 6. **Routes**:Rails的路由系统将URL映射到控制器的行动上,定义了应用的导航结构。 7. **...
Ruby on Rails,简称Rails,是基于Ruby语言的开源Web应用框架,它遵循MVC(Model-View-Controller)架构模式,旨在使开发过程更加简洁高效。这个“ruby on rails 教程源码”很可能是为了辅助学习者深入理解Rails的...
### Ruby for Rails:关键技术与实践 #### 一、引言 《Ruby for Rails》是一本专为希望快速掌握Ruby及Ruby on Rails框架的开发者而编写的书籍。此书旨在帮助读者理解Ruby语言的核心概念以及如何将这些概念应用于...
8. 阅读"ruby on rails 学习资料pdf",巩固和扩展知识。 9. 实战项目,将所学应用于实际开发。 持续实践和项目经验是提升技能的关键,所以边学边做是最佳的学习方式。同时,积极参与社区讨论,阅读他人的代码,以及...
Ruby on Rails,简称Rails,是一种基于Ruby编程语言的开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,旨在提高开发效率和代码的可读性。本示例源码提供了使用Ruby on Rails进行实际项目开发的具体...
2. 数据库集成:Rails默认使用ActiveRecord,这是一个ORM(对象关系映射)库,允许开发者用Ruby代码操作数据库,无需编写SQL。在这个在线考试系统中,数据库可能包含试题、答案、考生信息、考试记录等表。 3. ...
Ruby on Rails,简称Rails,是一种基于Ruby语言的开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在使Web开发过程更加高效、简洁。本篇将通过一个入门实例,深入探讨Rails的基本概念和核心...
Ruby on Rails,简称Rails,是由David Heinemeier Hansson创建的一个开源Web应用程序框架,它基于Ruby编程语言。这个框架以其MVC(Model-View-Controller)架构、约定优于配置(Convention over Configuration)的...
最后,本章还包括了生产环境的部署步骤,以及一些常用的Ruby Gems(扩展库)。 为了方便读者学习,作者提供了书籍的电子版供免费阅读,并提供了两个下载地址。作者鼓励读者在学习过程中注册GitHub账号,建立学习...
3. **DevKit安装**:RubyMine虽然提供了很多便利,但为了能够编译Ruby中的C扩展,你还需要安装DevKit。这是一个包含了Windows平台所需的开发工具的集合。你可以从RubyInstaller的GitHub页面获取DevKit,按照官方文档...
7. **ActiveSupport**:这个库包含了各种实用工具和扩展,如时间辅助方法、字符串操作等,广泛应用于Rails项目。 8. **测试**:Rails内置了测试框架,包括Unit Test、Functional Test和Integration Test,通过`test...
- **书名**:《Ruby on Rails傻瓜书》(英文原名:*Ruby on Rails For Dummies*) - **作者**:Barry Burd - **出版社**:Wiley Publishing, Inc. - **出版日期**:2007年 - **版权归属**:本书版权所有归Wiley ...
在Rails中,Ruby的元编程能力使得框架能够灵活地自定义和扩展。 Rails的核心理念是DRY(Don't Repeat Yourself),鼓励代码重用,避免重复编写相似的代码。此外,它还提供了大量的内置功能和库,如ActiveRecord用于...
Ruby on Rails 是一个基于Ruby语言的开源Web应用框架,它遵循MVC(Model-View-Controller)架构模式,用于快速开发高效、优雅的web应用程序。Redmine则是一个用Ruby on Rails构建的项目管理软件,提供了任务跟踪、...
Ruby语言以其简洁、优雅的语法著称,而Rails则将这种优势进一步扩展到Web开发领域。 首先,我们来看“ruby语言中文教程”。Ruby是一种面向对象的、动态类型的编程语言,它的设计哲学是简单、直观和生产力。中文教程...