7600aef48b
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.
85 lines
2.2 KiB
Plaintext
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[]
|