rails plugin是什么,自己google吧
生成plugin骨架代码:
ruby script\generate plugin MyPlugin
功能需求:
在BlogController中把所有符合条件的Post(Model)生成为xml
如果不使用插件,很easy :
in BlogController
def export_to_xml
posts = Post.find(:all, :order => 'published_date',
:conditions => ['title = ?', 'love'])
send_data posts.to_xml, :type => 'text/xml; charset=UTF-8;',
:disposition => "attachment; filename=posts.xml"
end
如果使用插件,我们要求能这样:
class BlogController < ApplicationController
my_plugin :post
def to_xml
export_to_xml
end
end
OK,立刻满足以上的要求,进入你的project:
生成plugin
ruby script\generate plugin MyPlugin
and than to find:
vendor/plugins/my_plugin/lib/my_plugin.rb
接着就是edit了:
module MyPlugin
def self.included(base)
base.extend(ClassMethods)
end
class Config
attr_reader :model
attr_reader :model_id
def initialize(model_id)
@model_id = model_id
@model = model_id.to_s.camelize.constantize
end
def model_name
@model_id.to_s
end
end
module ClassMethods
def my_plugin(model_id = nil)
model_id = self.to_s.split('::').last.sub(/Controller$/, '').pluralize.singularize.underscore unless model_id
@my_plugin_config = MyPlugin::Config.new(model_id)
include MyPlugin::InstanceMethods
end
def my_plugin_config
@my_plugin_config || self.superclass.instance_variable_get('@my_plugin_config')
end
end
module InstanceMethods
def export_to_xml
data = self.class.my_plugin_config.model.find(:all, :order => 'published_date', :conditions => conditions_for_collection)
send_data data.to_xml, :type => 'text/xml; charset=UTF-8;',
:disposition => "attachment; filename=#{self.class.my_plugin_config.model_name.pluralize}.xml"
end
# 在controller中覆盖此method,写入满足的条件
def conditions_for_collection
end
end
end
OK了吗? No No No 还要让rails加载plugin,在rails应用启动时,会到vendor/plugins目录查找所有plugin,并执行其中的init.rb
那么就edit init.rb
ActionController::Base.class_eval do
include MyPlugin
end
或edit这样:
require 'my_plugin'
ActionController::Base.send :include, MyPlugin
最后就按上面的需求写入controller了
分享到:
相关推荐
标题中的“几个常用的plugin的直接下载”提示我们,这可能是一个关于软件开发,特别是Ruby on Rails框架中的插件(plugin)下载的话题。Rails插件是为Rails应用添加功能或扩展其核心行为的代码库。在Rails社区,...
Rails3 是 Ruby on Rails 框架的一个版本,它提供了一系列强大的命令行工具,使得开发者可以快速地构建和管理Web应用。在本文中,我们将深入探讨Rails3中的常用命令,帮助你更高效地进行开发工作。 首先,新建一个...
oauth-plugin, 用于OAuth的Rails 插件 OAuth插件这是在 Rails 应用程序中实现OAuth提供者和消费者的插件。我们支持修改后的OAuth 1.0规格:tools.ietf. org/html/rfc5849以及对 OAuth 2.0的支持:tools.iet
通过命令行输入`rails new project_name`即可创建一个新的Rails应用项目,这里`project_name`代表你希望命名的项目名称。该命令会自动初始化一系列的目录结构和基础文件,这些文件是Rails应用程序的骨架。 **知识点...
VuexRails插件一个 Vuex 插件,可以轻松地将 Rails 资源映射到 Vuex 模块这个插件的想法是轻松地合并在搭建 Rails 资源时定义的传统休息端点,并将响应映射到 Vuex 中的适当状态。 前任。 resources :posts生成以下...
标题中的“rails飞信 gem plugin api 插件的问题解决方案”涉及到的是在Ruby on Rails框架下,使用特定的gem(一种Ruby的库或插件)来集成飞信API时遇到的问题及解决方法。飞信是中国移动推出的一种即时通讯服务,...
### CentOS环境下Rails 3开发环境搭建详解 #### 一、准备工作与环境配置 ...通过以上步骤,您可以在CentOS系统上成功搭建一个完整的Rails 3开发环境。这对于初学者和专业开发者来说都是非常实用的知识点。
Ruby on Rails插件是Rails框架的核心扩展机制,用于弥补Rails本身功能的不足,提供开发者所需的额外特性或功能。...插件的存在也是Rails社区活跃和生态系统繁荣的一个重要标志,为开发者提供了强大的工具和资源。
rails.vim提供了常用的一些命令,可以帮助开发,例如:Rgenerate, Rake, Rfind,RTview等,很方便,也很实用。...拷贝 autoload/rails.vim, plugin/rails.vim, 和 doc/rails.txt 到 ~/.vim 目录. 标签:rails
Rails 6允许开发者同时使用两者,例如,对于简单的应用或不涉及复杂前端开发的部分,Assets Pipeline可能仍是一个可行的选择。同时,Webpacker也支持使用 Stimulus.js(一个轻量级的JavaScript控制器库)和Bootstrap...
软件介绍 Fepss(菲普斯)第一个推出在线为企业提供不限用户...本网站系统是作为OA系统的前端展示系统,所倚赖的包都在plugin目录,其中还提供了一个基于ferret的全文检索功能,需要通过 gem install ferret 方式安装。
- 首页创建:可以创建一个简单的首页控制器和视图,或者移除默认的首页。 - 管理员页面:创建一个用于管理用户和内容的后台页面,包括用户管理、权限设置等。 6. 数据库和迁移的处理。 - 数据库迁移:通过Rails...
jquery-fileupload-rails, 用于 Rails的jQuery文件上传集成 Rails 文件上传jQuery-File-Plugin 是一个文件上传插件,由的Tschan 。 jQuery文件上传功能多文件选择。drag&拖放支持。进度栏和jQuery预览图像。 支持...
Rails 2.2.2 是一个古老的 Ruby on Rails 框架版本,它在2008年发布,标志着Web开发的一个重要里程碑。Ruby on Rails(简称Rails)是由David Heinemeier Hansson创建的开源Web应用程序框架,它遵循模型-视图-控制器...
- **acts_as_authenticated**:这是一个用于用户身份验证的插件,它提供了一种简便的方式,使你的应用能够处理用户登录、注销以及权限检查等操作。通过使用`acts_as_authenticated`,你可以轻松地为用户添加认证逻辑...
这个简单的插件使您能够调用to_xls到Rails的数组集合。 数组元素支持对象:ActiveRecord,Mongid,哈希。 在您的Gemfile中: gem 'to_xls-rails' # Last officially released gem # gem "to_xls-rails", :git => ...
1. **设置引擎**:首先,你需要创建一个新的Rails引擎项目,这可以通过`rails plugin new my_documentation_engine --mountable`命令完成。`--mountable`选项使得引擎可以被挂载到主应用中。 2. **添加文档生成库**...