/[Frey]/trunk/lib/Frey/Manual.pod
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /trunk/lib/Frey/Manual.pod

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 729 by dpavlin, Sat Dec 6 00:20:20 2008 UTC revision 1014 by dpavlin, Sun Jan 25 12:57:28 2009 UTC
# Line 2  Line 2 
2    
3  This page describes how to use and develop with L<Frey>  This page describes how to use and develop with L<Frey>
4    
5    =head1 Developer parts
6    
7    =head2 Moose classes
8    
9    All Moose classes have simple introspection API which use
10    L<Frey::Introspect> to show class and it's pod (using L<Frey::Pod>).
11    
12    Example of valid REST URL is
13    
14      http://localhost:16001/Frey
15    
16    which will show L<Frey> class introspection.
17    
18    You can also add method invocation and optional parameters to C<new>
19    constructor like this:
20    
21      http://localhost:16001/Frey::Pod/as_markup?class=Frey
22    
23    this is same using L<Frey::Pod> from perl as
24    
25      Frey::Pod->new( class => 'Frey' )->as_markup;
26    
27    Forms to enter required parameters will be generated automatically,
28    allowing you to explore your data while you are making interface for it.
29    
30    =head2 Database
31    
32    FIXME broken if not noted in C<TODO>
33    
34    For database objects we support L<DBIx::Class> to introspect existing
35    database and implement user interface for it.
36    
37    =over 5
38    
39    Steps to create classes for your existing L<Reblog> database:
40    
41    =item 1
42    
43    
44    
45    =back
46    
47    =head1 User parts
48    
49    =head2 Pipes
50    
51    See L<Frey::Pipe> for now.
52    
53  =head1 Designing user interaction flows  =head1 Designing user interaction flows
54    
55  Frey is all about creating Moose classes as your interaction with pages.  Frey is all about creating Moose classes as your interaction with pages.
56  Each page is instance of class with some parametars received with post or  Each page is instance of class with some parameters received with post or
57  get request.  get request.
58    
59  If you want to access those parameters in your object, you have to define  If you want to access those parameters in your object, you have to define
# Line 45  to you, it the right track. Line 93  to you, it the right track.
93    
94  You don't even have to create initial entry form as L<Frey::Run>,  You don't even have to create initial entry form as L<Frey::Run>,
95  which will start your L<Moose> classes, will call L<Frey::Action>  which will start your L<Moose> classes, will call L<Frey::Action>
96  for help and generate initial form for you.  for help and generate initial form for you. If this magic is wrong,
97    just define C<< sub render_pipe { 'radio' } >> to force rending of
98  Creating files is mess, so L<Frey::ClassCreator/create_class_source> will  C<pipe> attribute as radio buttons.
 create class and test skeleton for you.  
99    
100  If I did it right, it should read similar to human language, like SmallTalk.  =head2 Easy skeletons
101    
102  To make things simple, there are few convertions (with nod to Ruby on Rails)  Creating files is mess, so L<Frey::Class::Create/create_class_source> will
103  which will help you get started:  create class and test skeleton for you.
104    
105    If I did it right, it should read similar to human language, like Smalltalk.
106    
107  =head2 default parametars  L<Frey> is careful to provide enough magic to build skeletons just of files
108    which contain some specific logic to your aplication, so it's not massive code
109    generation as in Java...
110    
111  Default values for  To make things simple, there are few conventions (with nod to Ruby on Rails)
112    which will help you get started:
113    
114    
115  =head2 html markup  =head2 HTML markup convetion
116    
117  HTML markup should be enclosed in C< qq| > and C< | > quotes. There is also  HTML markup should be enclosed in C< qq| > and C< | > quotes. There is also
118  funny but very readable convention of multi line html when you have to  funny but very readable convention of multi line html when you have to
119  intermix confitions:  intermix conditions:
120    
121    my $html    my $html
122      = qq|<h1>First</h1>|      = qq|<h1>First</h1>|
# Line 85  write just Line 136  write just
136  which is valid perl syntax but doesn't work as expected.  which is valid perl syntax but doesn't work as expected.
137    
138    
139  =head2 SmallTalk like refactoring  =head2 Smalltalk like refactoring
140    
141  Frey is heavily influcenced by SmallTalks, up to the point of syntax. Coding  Frey is heavily influenced by Smalltalk, up to the point of syntax. Coding
142  Frey code should be like playing with L<Frey>. And you might end up with  Frey code should be like playing with L<Frey>. And you might end up with
143  result which might surprise you.  result which might surprise you.
144    
145  Refactoring tools are not new in perl. However,  Refactoring tools are not new in perl. We have L<PPI>, L<App::Ack> and C<vim>
146    so what more do we want?
147    
148    If you look closely into Smalltalk development work-flow, you really need
149    ability to rename class or method without any additional effort. For that,
150    we use L<Frey::Class::Refactor> which allows code modifications at source
151    level with just few clicks.
152    
153    =head2 Default values
154    
155  =head2 examples  When L<Frey::Run> tries to create instance of class (usually because of web
156    request) it tried to read default values from C<yaml> files in C<etc/> and
157    if it doesn't find all of required values it will invoke L<Frey::Action> to
158    create end-user html form with missing fields.
159    
160    
161    =head1 Examples
162    
163  To help you get started, here are few implemented flows in Frey:  To help you get started, here are few implemented flows in Frey:
164    
# Line 118  Display a huge amount of icons with sing Line 182  Display a huge amount of icons with sing
182  =head1 Command-line integration  =head1 Command-line integration
183    
184  One of key points is that L<Frey> runs under your user. This means it has  One of key points is that L<Frey> runs under your user. This means it has
185  access to your termnial, and ssh keys, so beware!  access to your terminal, and ssh keys, so beware!
186    
187  =head1 Install  =head1 Install
188    
# Line 155  Used for switching focus between browser Line 219  Used for switching focus between browser
219    
220  =head2 bin/dev.sh  =head2 bin/dev.sh
221    
222  Recommeded way to start development L<Frey> server since it will restart it  Recommended way to start development L<Frey> server since it will restart it
223  automatically and kill running instance if existing.  automatically and kill running instance if existing.
224    
225  =head2 bin/check-syntax.sh  =head2 bin/check-syntax.sh
# Line 164  Check syntax of modified files. Line 228  Check syntax of modified files.
228    
229  =head2 bin/grep-iselect.sh  =head2 bin/grep-iselect.sh
230    
231  Helper using C<iselect> to quickly grep, select result and jump to C<vim>  Helper using C<iselect> to quickly grep, select result and jump to C<vim>.
232    
233    You can also pass grep params for context etc, like this:
234    
235            ./bin/grep-iselect.sh something -C 3
236            ./bin/grep-iselect.sh something -A 10 -B 3
237    
238  =head2 bin/log.sh  =head2 bin/log.sh
239    
# Line 178  used in Frey and rest is kind of TODO li Line 247  used in Frey and rest is kind of TODO li
247  =head2 bin/clean-var.sh  =head2 bin/clean-var.sh
248    
249  Cleanup C<var/> directory which gets a lot of dumps. Most of useful data  Cleanup C<var/> directory which gets a lot of dumps. Most of useful data
250  is held forever because I belive that trends are most interesting way to  is held forever because I believe that trends are most interesting way to
251  look at data.  look at data.
252    
253  =cut  =cut

Legend:
Removed from v.729  
changed lines
  Added in v.1014

  ViewVC Help
Powered by ViewVC 1.1.26