From: http://wiki.rubyonrails.org/rails/pages/HowTosPlugins
SomeImportantPluginNotes – before you start
Thanks to Kev Jackson and Jamis Buck for their help getting me started with writing acts_as_* plugins. This is a summary and plagiarism of their emails
This plugin adds a class method to a model that acts_as_chicken
A 6 step program to acting like a chicken…
Step 1
under your_app/vendor/plugins
create a directory “acts_as_chicken”
Step 2
in this directory create a lib directory
so now you should have
your_app/vendor/plugins/acts_as_chicken/lib
Step 3
in the acts_as_chicken directory create the following file with this content:
your_app/vendor/plugins/acts_as_chicken/init.rb
require 'acts_as_chicken'
Step 4
in the lib subdirectory add your code to a file called acts_as_chicken.rb
your_app/vendor/plugins/acts_as_chicken/lib/acts_as_chicken.rb
require 'active_record'
module Foo
module Acts #:nodoc:
module Chicken #:nodoc:
def self.append_features(base)
super
base.extend(ClassMethods)
end
module ClassMethods
def acts_as_chicken
class_eval do
extend Foo::Acts::Chicken::SingletonMethods
end
end
end
# add your class methods here
module SingletonMethods
def cluck
'cluck'
end
#etc...
end
end
end
end
ActiveRecord::Base.class_eval do
include Foo::Acts::Chicken
end
Step 5
Use your method in your classes
class Hen < ActiveRecord::Base acts_as_chicken end
Step 6
Use your method in your view.
<%= Hen.cluck %>
Jamis Buck suggested using some name like Foo in the above because “this will allow (potentially) multiple developers to develop identically-named features without conflict.” Other people use “ActiveRecord” in place of the three “Foo”. Jamis doesn’t like this use of ActiveRecord. He says “I’ve noticed many plugin developers taking this particular route, and I’d like to discourage it, strenuously. There really is no need to add your own acts to the ActiveRecord::Acts namespace. Instead, I’d encourage the creation of your own Acts namespace like Foo”
HowTosPlugins – Some tutorials to get started
What is missing here is a good description of the Ruby magic that is happening in step 4. Can someone in the know add this (then remove this message).
本文档提供了一个详细的Ruby on Rails插件开发教程,该插件名为“acts_as_chicken”,用于向Rails模型中添加鸡的行为特性。通过六个步骤介绍了如何创建并使用此插件,包括设置目录结构、编写初始化文件及核心功能实现等。
6074

被折叠的 条评论
为什么被折叠?



