#33 Making a Plugin
引用
注意 这种手法,可能对 rails 4 不再起作用
rails4 http://guides.rubyonrails.org/plugins.html
关于废弃插件的说明 https://github.com/rails/rails/commit/dad7fdc5734a3813246f238ac5760b2076932216
rails 3及以下
After loading the framework and any gems and plugins in your application, Rails turns to loading initializers. An initializer is any Ruby file stored under +config/initializers+ in your application. You can use initializers to hold configuration settings that should be made after all of the frameworks, plugins and gems are loaded, such as options to configure settings for these parts.
rails4
After loading the framework and any gems in your application, Rails turns to loading initializers. An initializer is any Ruby file stored under +config/initializers+ in your application. You can use initializers to hold configuration settings that should be made after all of the frameworks and gems are loaded, such as options to configure settings for these parts.
rails4 不再有 vendor/plugins
Rails 4 将删除 Rails::Plugins 类,所以将不会再加载 vender/plugins 目录下的任何代码。
大多数应用应该依赖于 gems 而不是插件。但如果你在 vender/plugins 中还有一些代码,你有两种选择:
改用 gem 方式实现,多数插件已经有了 gem 版本,如果没有你可以在 Gemfile 中通过 :gitor:pathoptions 来引用插件
移到 lib/your\_pluginand ,然后在 conconfig/initializers 初始化
rails4 http://guides.rubyonrails.org/plugins.html
关于废弃插件的说明 https://github.com/rails/rails/commit/dad7fdc5734a3813246f238ac5760b2076932216
rails 3及以下
After loading the framework and any gems and plugins in your application, Rails turns to loading initializers. An initializer is any Ruby file stored under +config/initializers+ in your application. You can use initializers to hold configuration settings that should be made after all of the frameworks, plugins and gems are loaded, such as options to configure settings for these parts.
rails4
After loading the framework and any gems in your application, Rails turns to loading initializers. An initializer is any Ruby file stored under +config/initializers+ in your application. You can use initializers to hold configuration settings that should be made after all of the frameworks and gems are loaded, such as options to configure settings for these parts.
rails4 不再有 vendor/plugins
Rails 4 将删除 Rails::Plugins 类,所以将不会再加载 vender/plugins 目录下的任何代码。
大多数应用应该依赖于 gems 而不是插件。但如果你在 vender/plugins 中还有一些代码,你有两种选择:
改用 gem 方式实现,多数插件已经有了 gem 版本,如果没有你可以在 Gemfile 中通过 :gitor:pathoptions 来引用插件
移到 lib/your\_pluginand ,然后在 conconfig/initializers 初始化
简介:将get/set等做成一个plugin 减少重复 You can sometimes remove a lot of duplication by generating methods dynamic. In this episode I will show you how to create a plugin which does exactly that. 目的: class Task < ActiveRecord::Base belongs_to :project def due_at_string due_at.to_s(:db) end def due_at_string=(due_at_str) self.due_at = Time.parse(due_at_str) rescue ArgumentError @due_at_invalid = true end end 将以上代码简化成 class Task < ActiveRecord::Base stringify_time :due_at end 手法: 1、script/generate plugin stringify_time 2、init.rb require 'stringify_time' class ActiveRecord::Base extend StringifyTime end 3、stringify_time.rb module StringifyTime def stringify_time(*names) names.each do |name| define_method "#{name}_string" do read_attribute(name).to_s(:db) end define_method "#{name}_string=" do |time_str| begin write_attribute(name, Time.parse(time_str)) rescue ArgumentError instance_variable_set("@#{name}_invalid", true) end end define_method "#{name}_is_invalid?" do return instance_variable_get("@#{name}_invalid") end end end end 4、 最终,我们的task model可以这样写 class Task < ActiveRecord::Base belongs_to :project stringify_time :due_at def validate errors.add(:due_at, "is invalid") if @due_at_invalid end end
发表评论
-
rails 小技巧
2014-02-23 22:55 582#Rails Tip 1 Actions Are Method ... -
ruby 小技巧
2014-02-23 21:18 936#Track 1: The C in MVC #irb Mi ... -
rails 小代码合集 view controller model
2014-02-23 13:18 1607Rails Create an image with link ... -
rails bash
2014-02-22 21:48 6091、一个完整的rails app自动生成bash 引用#!/ ... -
实用工具--rails 命令、generator
2014-02-22 20:52 9931、rails 基本 rails new rails-boo ... -
rails 版本 更新/升级 release note
2014-02-22 14:02 562升级到 Rails 4,你的应用需要准备什么? 升 ... -
日期 、路由辅助方法
2014-02-22 11:48 551#31 Formatting Time 方法一: Task ... -
rails 调试
2014-02-23 22:57 512#24 The Stack Trace A plugin c ... -
Authentication 用户登录 用户权限相关
2014-02-21 21:20 629引用 # 19Where Administration Goe ... -
ActiveRecord
2014-02-21 20:39 1025ActiveRecord 4新特性 http://www.os ... -
工作相关
2014-02-21 20:27 527# 工作经历: 2年制造业ERP开发及管理经验 2年旅游信息化 ... -
rails 开发工具相关
2014-02-21 20:14 469#使用TextMate进行Ruby On Rails开发推荐插 ... -
rails view session layout
2014-02-21 19:00 663#208 erb-blocks 简介:在erb中使用block ...
相关推荐
Rails 4.2.0 是一个非常重要的版本,在Ruby on Rails框架的历史中占据了显著位置。这个版本引入了许多新特性、改进和性能优化,为开发者...通过学习和理解这些知识点,开发者可以更高效地利用Rails进行Web应用开发。
安装过程会将插件放置在Rails应用根目录下的`vendor/plugins`子文件夹内。 移除插件同样简单,只需删除`vendor/plugins`目录下的对应文件夹,或者使用`./script/plugin remove tabnav`命令,再配合SVN的`svn ...
Rails Plugins:Extending Rails Beyond the Core
rails need gems
gems使用手册ruby on rails,真的很好很好很好用啊
这本书通过实际的示例项目“sample_app”引导读者深入理解Rails框架的各个方面。现在,我们来详细探讨这个源代码包中的知识点。 1. **Ruby on Rails框架基础**:Rails是一个基于Ruby语言的开源Web应用框架,遵循MVC...
Rails 2.0 API 文档是一个非常宝贵的资源,它为开发者提供了全面的指南,以便于在使用Ruby on Rails 2.0版本时更好地理解和利用其框架功能。Ruby on Rails(简称Rails)是一个开源的Web应用框架,它遵循MVC(模型-...
Rails Plugins(Rails插件) Rails插件是扩展框架功能的有效方式。本章节将介绍如何安装、使用和开发自己的Rails插件。插件可以提供新的特性或增强现有功能,帮助开发者更快地完成项目。 #### 11. Debugging, ...
在提到的标题和描述中,我们聚焦于四个特定的Ruby Gems:Rails、Padrino、Cancan和Puppet。这些Gem分别在Web开发、轻量级框架、权限控制以及配置管理方面起着重要作用。 Rails是Ruby on Rails的简称,它是一个基于...
### Rails 101 入门电子书知识点详解 #### 一、简介 《Rails 101 入门电子书》是一本非常适合初学者直接入门的书籍,它由xdite编写并出版于2014年6月10日。本书主要针对的是希望学习Ruby on Rails框架的读者,特别...
在标题和描述中提到的“举例理解Ruby on Rails的页面缓存机制”,主要是指通过具体的例子来阐述如何在实际项目中运用页面缓存。例如,IBM 官方技术文档中的内容可能包含以下示例: 1. **启用页面缓存**:在 Rails ...
综上所述,《RAILS2.1的中文版资料》为Ruby on Rails开发者提供了丰富的资源和深入的技术细节,不仅有助于开发者更好地理解2.1版本的新特性,还能帮助他们利用这些特性构建更高效、更稳定的Web应用程序。
Rails Recipes是Rails社区中的重要资源,适合那些希望提高开发技能并深入理解Rails框架的开发者。特别是在Rails社区快速发展,各种新技术和概念层出不穷的背景下,这本书为开发者提供了一个宝贵的参考,帮助他们保持...
为了确保读者能够通过实践加深理解,书中还安排了一系列练习作业,从最基础的“Hello World”开始,逐步过渡到更复杂的概念,如Rails的Routing(路由)机制。路由机制是Web应用中一个非常核心的概念,它定义了不同的...
这个Rails项目提供了学习和研究Web开发的机会,特别是对于Ruby on Rails新手,可以通过阅读和理解源代码来提升技能,了解实际应用中Rails的用法。同时,对于有经验的开发者,这个项目也可以作为一个起点,进行二次...
13. **社区插件(Gems)**:Rails的生态系统中有大量高质量的第三方Gem,如Devise(用户认证)、Pundit(授权管理)、Paperclip或Carrierwave(文件上传)等,它们可以极大地扩展Rails的功能。 通过研究这个源码,...
描述中的“方便查阅”意味着这个CHM文件可能是一个组织良好的Rails API参考手册,便于开发者快速查找和理解Rails的各种API用法。 在Rails中,一些关键的API知识点包括: 1. **ActiveRecord**:这是Rails的核心组件...
综合以上信息,学习和掌握Rails需要理解其核心组件和设计理念,熟练使用相关工具,阅读源码以加深对框架运作的理解,并通过实践项目来巩固理论知识。Rails是一个强大且高效的Web开发框架,它简化了许多常见的开发...