blob: f2ed6ed8bbd02fe3bafa38f74905eee54c9bfafc (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
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[]
|