picky-client 0.10.2 → 0.10.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,38 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ activesupport (3.0.1)
5
+ backports (1.18.2)
6
+ haml (3.0.23)
7
+ i18n (0.4.2)
8
+ monkey-lib (0.5.4)
9
+ backports
10
+ picky-client (0.10.1)
11
+ yajl-ruby (>= 0.7.8)
12
+ rack (1.2.1)
13
+ sinatra (1.1.0)
14
+ rack (~> 1.1)
15
+ tilt (~> 1.1)
16
+ sinatra-advanced-routes (0.5.1)
17
+ monkey-lib (~> 0.5.0)
18
+ sinatra (~> 1.0)
19
+ sinatra-sugar (~> 0.5.0)
20
+ sinatra-reloader (0.5.0)
21
+ sinatra (~> 1.0)
22
+ sinatra-advanced-routes (~> 0.5.0)
23
+ sinatra-sugar (0.5.0)
24
+ monkey-lib (~> 0.5.0)
25
+ sinatra (~> 1.0)
26
+ tilt (1.1)
27
+ yajl-ruby (0.7.8)
28
+
29
+ PLATFORMS
30
+ ruby
31
+
32
+ DEPENDENCIES
33
+ activesupport
34
+ haml
35
+ i18n
36
+ picky-client
37
+ sinatra
38
+ sinatra-reloader
@@ -23,6 +23,12 @@ get '/' do
23
23
  haml :'/search'
24
24
  end
25
25
 
26
+ # Configure. The configuration info page.
27
+ #
28
+ get '/configure' do
29
+ haml :'/configure'
30
+ end
31
+
26
32
  # For full results, you get the ids from the picky server
27
33
  # and then populate the result with models (rendered, even).
28
34
  #
@@ -8,6 +8,15 @@ img {
8
8
  p span.explanation {
9
9
  color: #999999; }
10
10
 
11
+ pre {
12
+ padding: 10px;
13
+ background-color: #efede5; }
14
+
15
+ div.content {
16
+ width: 800px;
17
+ margin: 0 auto;
18
+ text-align: left; }
19
+
11
20
  #picky {
12
21
  text-align: left;
13
22
  margin: 0px auto;
@@ -9,6 +9,15 @@ p
9
9
  span.explanation
10
10
  :color #999
11
11
 
12
+ pre
13
+ :padding 10px
14
+ :background-color #EFEDE5
15
+
16
+ div.content
17
+ :width 800px
18
+ :margin 0 auto
19
+ :text-align left
20
+
12
21
  #picky
13
22
  :text-align left
14
23
  :margin 0px auto
@@ -0,0 +1,170 @@
1
+ !!!
2
+ %html{ :lang => 'en' }
3
+ %head
4
+ %link{:href => "stylesheets/stylesheet.css", :media => "screen", :rel => "stylesheet", :type => "text/css"}/
5
+ %body
6
+ %img{:src => "images/picky.png"}/
7
+ %p
8
+ %a{:href => "http://floere.github.com/picky"} To the Picky Homepage
9
+ \/
10
+ %a{:href => '/' } Back to the example
11
+ .content
12
+ %h1 Already made it this far? You're good!
13
+ %p I think you're ready for configuring me for your own purposes.
14
+ %h2 Configuring the Picky client.
15
+ %p
16
+ There are two places where you configure the Picky client:
17
+ %ol
18
+ %li
19
+ %a{ :href => '#controller' } In the controller.
20
+ (client to Picky server)
21
+ %li
22
+ %a{ :href => '#view' } In the view.
23
+ (javascript client interface)
24
+ %h2#controller Controller
25
+ %p
26
+ Open the file
27
+ %strong app.rb
28
+ and take a peek inside.
29
+ %p
30
+ First you need both a client instance for a
31
+ %strong full
32
+ or a
33
+ %strong live search
34
+ depending on what you need (Full gets results with IDs, Live without and is used for updating the counter).
35
+ %p
36
+ In the example, I called it
37
+ %strong FullBooks
38
+ and
39
+ %strong LiveBooks
40
+ respectively.
41
+ %code
42
+ %pre
43
+ :preserve
44
+ FullBooks = Picky::Client::Full.new :host => 'localhost', :port => 8080, :path => '/books/full'
45
+ LiveBooks = Picky::Client::Live.new :host => 'localhost', :port => 8080, :path => '/books/live'
46
+ %p
47
+ Both clients offer the options:
48
+ %dl
49
+ %dt
50
+ %strong host
51
+ %dd The Picky search server host.
52
+ %dt
53
+ %strong port
54
+ %dd The Picky search server port (see unicorn.rb in the server).
55
+ %dt
56
+ %strong path
57
+ %dd The Picky search path (see app/application.rb in the server for the mapping path => query).
58
+ %p
59
+ Then, use these Client instances in your actions. For example like this:
60
+ %code
61
+ %pre
62
+ :preserve
63
+ get '/search/full' do
64
+ results = FullBooks.search :query => params[:query], :offset => params[:offset]
65
+ results.extend Picky::Convenience
66
+ results.populate_with Book do |book|
67
+ book.to_s
68
+ end
69
+ ActiveSupport::JSON.encode results
70
+ end
71
+ %p
72
+ This part gets a
73
+ %strong hash
74
+ with the results:
75
+ %code
76
+ %pre results = FullBooks.search :query => params[:query], :offset => params[:offset]
77
+ %p
78
+ This part takes the
79
+ %strong hash
80
+ and extends it with a few useful and convenient methods:
81
+ %code
82
+ %pre results.extend Picky::Convenience
83
+ %p
84
+ One of these methods is the
85
+ %strong populate_with
86
+ method which takes a
87
+ %strong model
88
+ as parameter, and then gets the corresponding
89
+ %strong model instances
90
+ for each id in the result.
91
+ %code
92
+ %pre
93
+ :preserve
94
+ results.populate_with Book do |book|
95
+ book.to_s
96
+ end
97
+ The
98
+ %strong book.to_s
99
+ simulates rendering a book.
100
+ You can do whatever with the book instance if you just return a rendered thing that's supposed to be shown in the front end.
101
+ %p
102
+ If you don't want to render in the controller, you can do so in a view. In the controller just call
103
+ %code
104
+ %pre
105
+ results.populate_with Book
106
+ and then render the books in a view using:
107
+ %code
108
+ %pre
109
+ :preserve
110
+ results.entries do |book|
111
+ render book # or book.to_s, or however you like to render the book.
112
+ end
113
+ %p
114
+ At the end, encode the hash in JSON:
115
+ %code
116
+ %pre
117
+ ActiveSupport::JSON.encode results
118
+ That's it for the controller.
119
+ %p
120
+ All the steps in one:
121
+ %code
122
+ %pre
123
+ :preserve
124
+ FullBooks = Picky::Client::Full.new :host => 'localhost', :port => 8080, :path => '/books/full'
125
+ LiveBooks = Picky::Client::Live.new :host => 'localhost', :port => 8080, :path => '/books/live'
126
+
127
+ get '/search/full' do
128
+ results = FullBooks.search :query => params[:query], :offset => params[:offset]
129
+
130
+ results.extend Picky::Convenience
131
+ results.populate_with Book do |book|
132
+ book.to_s
133
+ end
134
+
135
+ ActiveSupport::JSON.encode results
136
+ end
137
+ %h2#view View
138
+ %p
139
+ The view is even easier. Just add the line
140
+ %code
141
+ %pre
142
+ \= Picky::Helper.cached_interface
143
+ if you use just one language, or
144
+ %code
145
+ %pre
146
+ \= Picky::Helper.interface :button => 'search', :no_results => 'No results!', :more => 'more'
147
+ if you use multiple languages.
148
+ (You'd use the options
149
+ %pre :button => t(:'search.button'), :no_results => t(:'search.no_results'), :more => t(:'search.more')
150
+ of course, with proper i18n)
151
+ The same options can be used for
152
+ %strong #cached_interface
153
+ but they will be cached, so you can only set them once and then reused.
154
+ %p
155
+ You're almost finished. Take a look at the file
156
+ %strong views/search.haml
157
+ where you'll find javascript at the end. It looks something like this:
158
+ %code
159
+ %pre
160
+ :preserve
161
+ :javascript
162
+ pickyClient = new PickyClient({
163
+ // A full query displays the rendered results.
164
+ //
165
+ full: '/search/full',
166
+
167
+ // etc.
168
+ Just take a look at the possible javascript client options in that file.
169
+ %p
170
+ %strong Good luck my friend! *waves several stubby pink tentacles*
@@ -22,7 +22,9 @@
22
22
  %body
23
23
  %img{:src => "images/picky.png"}/
24
24
  %p
25
- %a{:href => "http://floere.github.com/picky"} Back to the Picky documentation.
25
+ %a{:href => "http://floere.github.com/picky"} To the Picky Homepage
26
+ \/
27
+ %a{:href => '/configure' } Configuring this app server
26
28
  %p
27
29
  Try a few examples
28
30
  = succeed ":" do
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 10
8
- - 2
9
- version: 0.10.2
8
+ - 4
9
+ version: 0.10.4
10
10
  platform: ruby
11
11
  authors:
12
12
  - Florian Hanke
@@ -50,6 +50,7 @@ files:
50
50
  - sinatra_prototype/book.rb
51
51
  - sinatra_prototype/config.ru
52
52
  - sinatra_prototype/Gemfile
53
+ - sinatra_prototype/Gemfile.lock
53
54
  - sinatra_prototype/images/picky.png
54
55
  - sinatra_prototype/javascripts/compiler.jar
55
56
  - sinatra_prototype/javascripts/generate_bundles
@@ -73,6 +74,7 @@ files:
73
74
  - sinatra_prototype/library.csv
74
75
  - sinatra_prototype/stylesheets/stylesheet.css
75
76
  - sinatra_prototype/stylesheets/stylesheet.sass
77
+ - sinatra_prototype/views/configure.haml
76
78
  - sinatra_prototype/views/search.haml
77
79
  - README.rdoc
78
80
  - spec/picky-client/convenience_spec.rb