这次的开发中,使用thin作为服务器,sinatra作为web服务框架进行开发。下面讨论的是如何书写自己的插件,扩展sinatra框架。
自定义插件有两种方式,extension方法和helper方法。
extension方法
require 'sinatra/base'
module Sinatra
module PostGet
def post_get(route,&block)
get(route,&block)
post(route,&block)
end
end
register PostGet
end
在定义了PostGet模块后,只需要register就可以使用。
require 'sinatra'
require 'post_get'
configure do
set :port,5000
end
post_get '/' do
"hi"
end
helpers方法
有两种定义方法。一种module定义,一种采用块进行定义。
require 'sinatra/base'
module Sinatra
module LinkHelper
def link(name)
case name
when :about then '/about'
when :index then '/index'
else "/page/#{name}"
end
end
helpers LinkHelper
end
require 'sinatra'
helpers do
def link(name)
case name
when :about then '/about'
when :index then '/index'
else "/page/#{name}";
end
end
end
如上,定义了link的扩展方法。在之后的方法体中,直接调用link方法即可。
extension和helper的混入定义方法
require 'sinatra/base'
module MyExtension
module Helpers
# helper methods go here
end
# extension methods go here
def self.registered(app)
app.helpers Helpers
end
end
Sinatra.register MyExtension
因为Sinatra.register方法体中,我们可以看到如下代码:
def register(*extensions, &block)
extensions << Module.new(&block) if block_given?
@extensions += extensions
extensions.each do |extension|
extend extension
extension.registered(self) if extension.respond_to?(:registered)
end
end
分享到:
相关推荐
在Ruby社区中,Sinatra被誉为轻量级、简洁的HTTP服务器接口库,而Padrino则是在这个基础上进一步扩展,加入了更多用于构建实际应用程序的功能。 首先,我们来深入了解Ruby-Padrino的核心特性: 1. **模块化结构**...
1. 项目结构:可能包含`Gemfile`来管理Ruby依赖,`config.ru`作为Sinatra应用的入口点,以及可能的`app.rb`或类似的文件,包含了Sinatra应用的主要代码。 2. AMQP配置:可能有配置文件或代码段用于设置AMQP连接,...
Sinatra是Ruby语言中的一个轻量级Web开发框架,允许开发者以简洁的代码创建功能丰富的Web应用。而"Sinatra Auth Strava"扩展了这个框架,使得开发者可以轻松地集成Strava的OAuth授权流程,方便用户通过他们的Strava...
- **插件扩展**:虽然轻量级,但Sinatra支持通过插件的形式来扩展功能,满足不同场景的需求。 ### 学习资源推荐 - **官方文档**:Ruby和Rails都有非常完善的官方文档,是学习过程中不可或缺的参考资料。 - **在线...
Ruby的生态系统还包括Sinatra(轻量级的Web框架)、Jekyll(静态站点生成器)以及各种测试框架,如RSpec和Minitest,这些工具极大地丰富了Ruby的使用场景。 总的来说,Ruby是一种强大且灵活的语言,其简洁的语法和...
Ruby社区活跃,有很多优秀的开源库和框架,如Rails(Web开发)、Jekyll(静态站点生成器)、Sinatra(轻量级Web框架)等。保持学习新的库和工具,订阅Ruby相关的博客、论坛和邮件列表,以便了解最新动态。 通过...
- **利用Ruby的库和框架**:Ruby拥有丰富的标准库和第三方库资源,比如ActiveRecord用于数据库操作,Sinatra用于构建轻量级Web应用等。开发者可以根据具体需求选择合适的库和框架来简化开发工作。 #### 四、调试...
- `Button`可能指的是用户界面的按钮元素,Ruby可以结合前端框架如Sinatra或Rails来创建这样的UI元素。 - `Item`可能代表游戏中的物品或道具,它们可能有自己的属性和行为,可以通过Ruby的对象模型来设计和实现。 ...
**Ruby、Sinatra与Redis构建博客网站** 在IT领域,构建一个博客网站是常见的实践,它可以帮助我们理解和应用多种技术。本项目“bloggable”利用了动态编程语言Ruby,轻量级Web框架Sinatra,以及内存数据库Redis,来...
用于启用跨域资源共享(CORS)的简单Sinatra扩展要查看有关跨域资源共享的更多信息,请参阅 使用捆绑器安装 gem "sinatra-cross_origin", "~> 0.3.1" 例子 要为所有路由启用跨源请求: require 'sinatra' require...
此外,Ruby还有大量的第三方库,如Rails(一个流行的Web开发框架)和Sinatra(轻量级Web框架),它们极大地扩展了Ruby的功能。 学习Ruby,不仅需要理解其语法和概念,还需要熟悉Ruby社区的工具和实践,如Gem(Ruby...
总结起来,Ruby-CarrierWave是一个强大的文件上传解决方案,它在Rails和Sinatra等Ruby Web框架中提供了优雅、可扩展的文件处理能力。通过其灵活的配置和丰富的功能,开发者可以轻松地管理文件上传,同时保持代码的...
此外,Ruby 社区有强大的 Gems(Ruby 的扩展库)生态系统,例如 `sinatra`(轻量级Web框架)、` nokogiri`(HTML解析器)和 `rspec`(测试框架)等。 总之,Ruby 2.2.7 是一个成熟的 Ruby 版本,适用于多种用途,...
- 充实的社区和库:Ruby 社区活跃,提供了大量高质量的开源库,如 Rails、Sinatra 等,大大加快了开发速度。 - 元编程能力:Ruby 允许在运行时修改和扩展类,使得代码更加灵活和动态。 - 错误处理:Ruby 提供了...
- **元编程**:Ruby的强大之处在于其灵活的元编程能力,允许程序员在运行时修改或扩展语言本身。例如,使用`define_method`动态创建方法。 #### 三、测试驱动开发(TDD) - **概念**:TDD是一种软件开发方法论,其中...
6. 社区和库:Ruby拥有活跃的开发者社区,提供了丰富的开源库和框架,如Rails、Sinatra等,用于构建Web应用、命令行工具、系统管理任务等。 在Ruby小程序的开发中,你可能需要用到以下知识: 1. 控制结构:包括...
Ruby语言的特色之一是它的元编程能力,即在运行时修改或创建代码的能力。这在《Programming Ruby》中会有详尽的解释,源代码中也会有相关的实例展示如何利用这个特性来增强代码的灵活性和可扩展性。例如,你会看到...