instiki/vendor/rails/railties/doc/guides/source/creating_plugins/index.txt
Jacques Distler 7600aef48b Upgrade to Rails 2.2.0
As a side benefit, fix an (non-user-visible) bug in display_s5().
Also fixed a bug where removing orphaned pages did not expire cached summary pages.
2008-10-27 01:47:01 -05:00

85 lines
2.2 KiB
Plaintext

The Basics of Creating Rails Plugins
====================================
Pretend for a moment that you are an avid bird watcher. Your favorite bird is the Yaffle, and you want to create a plugin that allows other developers to share in the Yaffle goodness.
In this tutorial you will learn how to create a plugin that includes:
* Core Extensions - extending String with a `to_squawk` method:
+
[source, ruby]
-------------------------------------------
# Anywhere
"hello!".to_squawk # => "squawk! hello!"
-------------------------------------------
* An `acts_as_yaffle` method for ActiveRecord models that adds a `squawk` method:
+
[source, ruby]
-------------------------------------------
class Hickwall < ActiveRecord::Base
acts_as_yaffle :yaffle_text_field => :last_sang_at
end
Hickwall.new.squawk("Hello World")
-------------------------------------------
* A view helper that will print out squawking info:
+
[source, ruby]
-------------------------------------------
squawk_info_for(@hickwall)
-------------------------------------------
* A generator that creates a migration to add squawk columns to a model:
+
-------------------------------------------
script/generate yaffle hickwall
-------------------------------------------
* A custom generator command:
+
[source, ruby]
-------------------------------------------
class YaffleGenerator < Rails::Generator::NamedBase
def manifest
m.yaffle_definition
end
end
-------------------------------------------
* A custom route method:
+
[source, ruby]
-------------------------------------------
ActionController::Routing::Routes.draw do |map|
map.yaffles
end
-------------------------------------------
In addition you'll learn how to:
* test your plugins.
* work with 'init.rb', how to store model, views, controllers, helpers and even other plugins in your plugins.
* create documentation for your plugin.
* write custom Rake tasks in your plugin.
include::preparation.txt[]
include::string_to_squawk.txt[]
include::acts_as_yaffle.txt[]
include::view_helper.txt[]
include::migration_generator.txt[]
include::custom_generator.txt[]
include::custom_route.txt[]
include::odds_and_ends.txt[]
include::appendix.txt[]