picky-generators 4.0.0pre1 → 4.0.0pre2
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/picky-generators/generators/all_in_one/sinatra.rb +1 -1
- data/lib/picky-generators/generators/selector.rb +0 -6
- data/lib/picky-generators/generators/server/sinatra.rb +1 -1
- data/lib/picky-generators.rb +0 -3
- data/prototypes/all_in_one/sinatra/Gemfile +2 -2
- data/prototypes/all_in_one/sinatra/app.rb +20 -2
- data/prototypes/all_in_one/sinatra/book.rb +1 -1
- data/prototypes/all_in_one/sinatra/views/search.haml +1 -1
- data/prototypes/client/sinatra/Gemfile +1 -1
- data/prototypes/client/sinatra/app.rb +1 -1
- data/prototypes/client/sinatra/views/search.haml +1 -1
- data/prototypes/server/sinatra/app.rb +19 -1
- data/prototypes/{all_in_one/sinatra → shared/server}/config.ru +2 -0
- data/prototypes/shared/server/tmp/pids/README +1 -0
- data/spec/lib/picky-generators/generators/selector_spec.rb +11 -14
- data/spec/lib/picky-generators/generators/server/sinatra_spec.rb +5 -5
- metadata +20 -36
- data/lib/picky-generators/generators/server/classic.rb +0 -42
- data/prototypes/server/classic/Gemfile +0 -27
- data/prototypes/server/classic/app/README +0 -4
- data/prototypes/server/classic/app/application.rb +0 -47
- data/prototypes/server/classic/app/db.yml +0 -13
- data/prototypes/server/classic/app/logging.rb +0 -23
- data/prototypes/server/classic/config.ru +0 -31
- data/prototypes/server/classic/log/README +0 -1
- data/prototypes/server/classic/script/console +0 -5
- data/prototypes/server/classic/spec/spec_helper.rb +0 -8
- data/prototypes/server/shared/data/test/library.csv +0 -540
- data/prototypes/server/shared/tmp/pids/README +0 -1
- data/prototypes/server/sinatra/config.ru +0 -14
- data/prototypes/server/sinatra/logging.rb +0 -24
- data/prototypes/server/sinatra/spec/spec_helper.rb +0 -6
- data/spec/lib/picky-generators/generators/server/classic_spec.rb +0 -35
- /data/prototypes/server/{shared → sinatra}/Rakefile +0 -0
- /data/prototypes/server/{shared → sinatra}/spec/integration_spec.rb +0 -0
- /data/prototypes/{all_in_one/sinatra → shared/server/data/development}/library.csv +0 -0
- /data/prototypes/{server/shared/data/development → shared/server/data/production}/library.csv +0 -0
- /data/prototypes/{server/shared/data/production → shared/server/data/test}/library.csv +0 -0
- /data/prototypes/{all_in_one/sinatra → shared/server}/logging.rb +0 -0
- /data/prototypes/{all_in_one/sinatra → shared/server}/spec/spec_helper.rb +0 -0
- /data/prototypes/{server/shared → shared/server}/unicorn.rb +0 -0
@@ -21,7 +21,7 @@ module Picky
|
|
21
21
|
exclaim "Setting up Picky Sinatra Client/Server \"#{name}\"."
|
22
22
|
create_target_directory
|
23
23
|
copy_all_files
|
24
|
-
copy_all_files expand_prototype_path('server
|
24
|
+
copy_all_files expand_prototype_path('shared/server')
|
25
25
|
exclaim "\"#{name}\" is a great project name! Have fun :)\n"
|
26
26
|
exclaim ""
|
27
27
|
exclaim "Next steps:"
|
@@ -12,12 +12,6 @@ module Picky
|
|
12
12
|
@types = {
|
13
13
|
:client => [Client::Sinatra, :sinatra_client_name],
|
14
14
|
:server => [Server::Sinatra, :sinatra_server_name],
|
15
|
-
|
16
|
-
:sinatra_client => [Client::Sinatra, :sinatra_client_name],
|
17
|
-
|
18
|
-
:classic_server => [Server::Classic, :unicorn_server_name],
|
19
|
-
:sinatra_server => [Server::Sinatra, :sinatra_server_name],
|
20
|
-
|
21
15
|
:all_in_one => [AllInOne::Sinatra, :"directory_name (use e.g. for Heroku)"]
|
22
16
|
}
|
23
17
|
end
|
@@ -21,7 +21,7 @@ module Picky
|
|
21
21
|
exclaim "Setting up Picky Sinatra Server \"#{name}\"."
|
22
22
|
create_target_directory
|
23
23
|
copy_all_files
|
24
|
-
copy_all_files expand_prototype_path('server
|
24
|
+
copy_all_files expand_prototype_path('shared/server')
|
25
25
|
exclaim "\"#{name}\" is a great project name! Have fun :)\n"
|
26
26
|
exclaim ""
|
27
27
|
exclaim "Next steps:"
|
data/lib/picky-generators.rb
CHANGED
@@ -3,10 +3,7 @@ require File.expand_path '../picky-generators/generators/not_found_exception', _
|
|
3
3
|
require File.expand_path '../picky-generators/generators/base', __FILE__
|
4
4
|
|
5
5
|
require File.expand_path '../picky-generators/generators/client/sinatra', __FILE__
|
6
|
-
|
7
|
-
require File.expand_path '../picky-generators/generators/server/classic', __FILE__
|
8
6
|
require File.expand_path '../picky-generators/generators/server/sinatra', __FILE__
|
9
|
-
|
10
7
|
require File.expand_path '../picky-generators/generators/all_in_one/sinatra', __FILE__
|
11
8
|
|
12
9
|
require File.expand_path '../picky-generators/generators/selector', __FILE__
|
@@ -2,7 +2,7 @@ source :gemcutter
|
|
2
2
|
|
3
3
|
# Gems required by the Picky client.
|
4
4
|
#
|
5
|
-
gem 'picky-client', '~> 4.0.
|
5
|
+
gem 'picky-client', '~> 4.0.0pre2'
|
6
6
|
gem 'i18n'
|
7
7
|
gem 'activesupport', :require => 'active_support/core_ext'
|
8
8
|
gem 'sinatra'
|
@@ -10,7 +10,7 @@ gem 'haml'
|
|
10
10
|
|
11
11
|
# Gems required by the Picky server.
|
12
12
|
#
|
13
|
-
gem 'picky', '~> 4.0.
|
13
|
+
gem 'picky', '~> 4.0.0pre2'
|
14
14
|
gem 'rake'
|
15
15
|
gem 'rack'
|
16
16
|
gem 'rack_fast_escape', '2009.06.24' # Optional.
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'sinatra/base'
|
2
2
|
require 'i18n'
|
3
3
|
require 'haml'
|
4
|
+
require 'csv'
|
4
5
|
require 'picky'
|
5
6
|
require 'picky-client'
|
6
7
|
|
@@ -22,10 +23,27 @@ class BookSearch < Sinatra::Application
|
|
22
23
|
# Server.
|
23
24
|
#
|
24
25
|
|
26
|
+
# Data source.
|
27
|
+
#
|
28
|
+
class Books
|
29
|
+
|
30
|
+
def initialize
|
31
|
+
@csv = CSV.new File.open(File.expand_path("../data/#{PICKY_ENVIRONMENT}/library.csv", __FILE__))
|
32
|
+
end
|
33
|
+
|
34
|
+
def each
|
35
|
+
instance = Struct.new :id, :title, :author, :year
|
36
|
+
@csv.each do |row|
|
37
|
+
yield instance.new *row[0..3]
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
|
25
43
|
# Define an index.
|
26
44
|
#
|
27
45
|
books_index = Index.new :books do
|
28
|
-
source
|
46
|
+
source { Books.new }
|
29
47
|
indexing removes_characters: /[^a-z0-9\s\/\-\_\:\"\&\.]/i,
|
30
48
|
stopwords: /\b(and|the|of|it|in|for)\b/i,
|
31
49
|
splits_text_on: /[\s\/\-\_\:\"\&\/]/
|
@@ -99,7 +117,7 @@ class BookSearch < Sinatra::Application
|
|
99
117
|
# rendered_entries = results.entries.map do |book| (render each book here) end
|
100
118
|
#
|
101
119
|
|
102
|
-
|
120
|
+
Yajl::Encoder.encode results
|
103
121
|
end
|
104
122
|
|
105
123
|
# Updates the search count while the user is typing.
|
@@ -14,7 +14,7 @@ class Book
|
|
14
14
|
|
15
15
|
# Load the books on startup.
|
16
16
|
#
|
17
|
-
file_name = File.expand_path
|
17
|
+
file_name = File.expand_path "../data/#{PICKY_ENVIRONMENT}/library.csv", __FILE__
|
18
18
|
CSV.open(file_name, 'r').each do |row|
|
19
19
|
@@books_mapping[row.shift.to_i] = row
|
20
20
|
end
|
@@ -7,7 +7,7 @@
|
|
7
7
|
= js 'jquery-1.5.0.min'
|
8
8
|
= js 'history.min'
|
9
9
|
= js 'history.adapter.jquery.min'
|
10
|
-
|
10
|
+
= js 'picky.min'
|
11
11
|
|
12
12
|
%body
|
13
13
|
%img{:src => "images/picky.png"}/
|
@@ -7,7 +7,7 @@
|
|
7
7
|
= js 'jquery-1.5.0.min'
|
8
8
|
= js 'history.min'
|
9
9
|
= js 'history.adapter.jquery.min'
|
10
|
-
|
10
|
+
= js 'picky.min'
|
11
11
|
|
12
12
|
%body
|
13
13
|
%img{:src => "images/picky.png"}/
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'sinatra/base'
|
2
|
+
require 'csv'
|
2
3
|
require 'picky'
|
3
4
|
require File.expand_path '../logging', __FILE__
|
4
5
|
|
@@ -9,10 +10,27 @@ class BookSearch < Sinatra::Application
|
|
9
10
|
#
|
10
11
|
include Picky
|
11
12
|
|
13
|
+
# Data source.
|
14
|
+
#
|
15
|
+
class Books
|
16
|
+
|
17
|
+
def initialize
|
18
|
+
@csv = CSV.new File.open(File.expand_path("../data/#{PICKY_ENVIRONMENT}/library.csv", __FILE__))
|
19
|
+
end
|
20
|
+
|
21
|
+
def each
|
22
|
+
instance = Struct.new :id, :title, :author, :year
|
23
|
+
@csv.each do |row|
|
24
|
+
yield instance.new *row[0..3]
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
|
12
30
|
# Define an index.
|
13
31
|
#
|
14
32
|
books_index = Index.new :books do
|
15
|
-
source
|
33
|
+
source { Books.new }
|
16
34
|
indexing removes_characters: /[^a-z0-9\s\/\-\_\:\"\&\.]/i,
|
17
35
|
stopwords: /\b(and|the|of|it|in|for)\b/i,
|
18
36
|
splits_text_on: /[\s\/\-\_\:\"\&\/]/
|
@@ -0,0 +1 @@
|
|
1
|
+
Temporary pids for Unicorn servers.
|
@@ -2,46 +2,43 @@
|
|
2
2
|
require 'spec_helper'
|
3
3
|
|
4
4
|
describe Picky::Generators::Selector do
|
5
|
-
|
5
|
+
|
6
6
|
describe "main class" do
|
7
7
|
before(:each) do
|
8
8
|
@selector = Picky::Generators::Selector.new
|
9
9
|
end
|
10
|
-
|
10
|
+
|
11
11
|
describe "generator_for_class" do
|
12
12
|
it "should return me a generator for the given class" do
|
13
|
-
@selector.generator_for_class(Picky::Generators::Server::
|
13
|
+
@selector.generator_for_class(Picky::Generators::Server::Sinatra, :identifier, :some_args).should be_kind_of(Picky::Generators::Server::Sinatra)
|
14
14
|
end
|
15
15
|
end
|
16
|
-
|
16
|
+
|
17
17
|
describe "generator_for" do
|
18
18
|
it "should not raise if a generator is available" do
|
19
|
-
lambda { @selector.generator_for('
|
20
|
-
end
|
21
|
-
it "should not raise if a generator is available" do
|
22
|
-
lambda { @selector.generator_for('sinatra_client', 'some_project') }.should_not raise_error
|
19
|
+
lambda { @selector.generator_for('client', 'some_project') }.should_not raise_error
|
23
20
|
end
|
24
21
|
it "should not raise if a generator is available" do
|
25
|
-
lambda { @selector.generator_for('
|
22
|
+
lambda { @selector.generator_for('server', 'some_project') }.should_not raise_error
|
26
23
|
end
|
27
24
|
it "should not raise if a generator is available" do
|
28
|
-
lambda { @selector.generator_for('
|
25
|
+
lambda { @selector.generator_for('all_in_one', 'some_project') }.should_not raise_error
|
29
26
|
end
|
30
27
|
it "should raise if a generator is not available" do
|
31
28
|
lambda { @selector.generator_for('blarf', 'gnorf') }.should raise_error(Picky::Generators::NotFoundException)
|
32
29
|
end
|
33
30
|
end
|
34
|
-
|
31
|
+
|
35
32
|
describe "generate" do
|
36
33
|
it "should raise a NoGeneratorException if called with the wrong params" do
|
37
34
|
lambda { @selector.generate('blarf', 'gnorf') }.should raise_error(Picky::Generators::NotFoundException)
|
38
35
|
end
|
39
36
|
it "should not raise on the right params" do
|
40
37
|
@selector.stub! :generator_for_class => stub(:generator, :generate => nil)
|
41
|
-
|
42
|
-
lambda { @selector.generate('
|
38
|
+
|
39
|
+
lambda { @selector.generate('client', 'some_project') }.should_not raise_error
|
43
40
|
end
|
44
41
|
end
|
45
42
|
end
|
46
|
-
|
43
|
+
|
47
44
|
end
|
@@ -3,12 +3,12 @@
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
5
|
describe Picky::Generators::Server::Sinatra do
|
6
|
-
|
6
|
+
|
7
7
|
before(:each) do
|
8
8
|
@sinatra = Picky::Generators::Server::Sinatra.new :sinatra_server, 'sinatra_server_dir_name'
|
9
9
|
@sinatra.stub! :exclaim
|
10
10
|
end
|
11
|
-
|
11
|
+
|
12
12
|
context "after initialize" do
|
13
13
|
it 'has the right identifier' do
|
14
14
|
@sinatra.identifier.should == :sinatra_server
|
@@ -20,16 +20,16 @@ describe Picky::Generators::Server::Sinatra do
|
|
20
20
|
@sinatra.prototype_basedir.should == File.expand_path('../../../../../../prototypes/server/sinatra', __FILE__)
|
21
21
|
end
|
22
22
|
end
|
23
|
-
|
23
|
+
|
24
24
|
describe "generate" do
|
25
25
|
it "should do things in order" do
|
26
26
|
@sinatra.should_receive(:exclaim).once.ordered # Initial explanation
|
27
27
|
@sinatra.should_receive(:create_target_directory).once.ordered
|
28
28
|
@sinatra.should_receive(:copy_all_files).twice.ordered
|
29
29
|
@sinatra.should_receive(:exclaim).at_least(8).times.ordered # Some user steps to do
|
30
|
-
|
30
|
+
|
31
31
|
@sinatra.generate
|
32
32
|
end
|
33
33
|
end
|
34
|
-
|
34
|
+
|
35
35
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: picky-generators
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0.
|
4
|
+
version: 4.0.0pre2
|
5
5
|
prerelease: 5
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-12-
|
12
|
+
date: 2011-12-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &70251514102680 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,29 +21,29 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70251514102680
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: picky
|
27
|
-
requirement: &
|
27
|
+
requirement: &70251514101780 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: 4.0.
|
32
|
+
version: 4.0.0pre2
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70251514101780
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: picky-client
|
38
|
-
requirement: &
|
38
|
+
requirement: &70251514100740 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
42
42
|
- !ruby/object:Gem::Version
|
43
|
-
version: 4.0.
|
43
|
+
version: 4.0.0pre2
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70251514100740
|
47
47
|
description: Generators for Picky.
|
48
48
|
email: florian.hanke+picky-generators@gmail.com
|
49
49
|
executables:
|
@@ -56,24 +56,19 @@ files:
|
|
56
56
|
- lib/picky-generators/generators/client/sinatra.rb
|
57
57
|
- lib/picky-generators/generators/not_found_exception.rb
|
58
58
|
- lib/picky-generators/generators/selector.rb
|
59
|
-
- lib/picky-generators/generators/server/classic.rb
|
60
59
|
- lib/picky-generators/generators/server/sinatra.rb
|
61
60
|
- lib/picky-generators.rb
|
62
61
|
- prototypes/all_in_one/sinatra/app.rb
|
63
62
|
- prototypes/all_in_one/sinatra/book.rb
|
64
|
-
- prototypes/all_in_one/sinatra/config.ru
|
65
63
|
- prototypes/all_in_one/sinatra/Gemfile
|
66
64
|
- prototypes/all_in_one/sinatra/images/picky.png
|
67
65
|
- prototypes/all_in_one/sinatra/javascripts/history.adapter.jquery.min.js
|
68
66
|
- prototypes/all_in_one/sinatra/javascripts/history.min.js
|
69
67
|
- prototypes/all_in_one/sinatra/javascripts/jquery-1.5.0.min.js
|
70
68
|
- prototypes/all_in_one/sinatra/javascripts/picky.min.js
|
71
|
-
- prototypes/all_in_one/sinatra/library.csv
|
72
69
|
- prototypes/all_in_one/sinatra/log/README
|
73
|
-
- prototypes/all_in_one/sinatra/logging.rb
|
74
70
|
- prototypes/all_in_one/sinatra/Rakefile
|
75
71
|
- prototypes/all_in_one/sinatra/spec/integration_spec.rb
|
76
|
-
- prototypes/all_in_one/sinatra/spec/spec_helper.rb
|
77
72
|
- prototypes/all_in_one/sinatra/stylesheets/application.css
|
78
73
|
- prototypes/all_in_one/sinatra/stylesheets/picky.css
|
79
74
|
- prototypes/all_in_one/sinatra/views/configure.haml
|
@@ -93,33 +88,23 @@ files:
|
|
93
88
|
- prototypes/client/sinatra/stylesheets/picky.css
|
94
89
|
- prototypes/client/sinatra/views/configure.haml
|
95
90
|
- prototypes/client/sinatra/views/search.haml
|
96
|
-
- prototypes/server/classic/app/application.rb
|
97
|
-
- prototypes/server/classic/app/db.yml
|
98
|
-
- prototypes/server/classic/app/logging.rb
|
99
|
-
- prototypes/server/classic/app/README
|
100
|
-
- prototypes/server/classic/config.ru
|
101
|
-
- prototypes/server/classic/Gemfile
|
102
|
-
- prototypes/server/classic/log/README
|
103
|
-
- prototypes/server/classic/script/console
|
104
|
-
- prototypes/server/classic/spec/spec_helper.rb
|
105
|
-
- prototypes/server/shared/data/development/library.csv
|
106
|
-
- prototypes/server/shared/data/production/library.csv
|
107
|
-
- prototypes/server/shared/data/test/library.csv
|
108
|
-
- prototypes/server/shared/Rakefile
|
109
|
-
- prototypes/server/shared/spec/integration_spec.rb
|
110
|
-
- prototypes/server/shared/tmp/pids/README
|
111
|
-
- prototypes/server/shared/unicorn.rb
|
112
91
|
- prototypes/server/sinatra/app.rb
|
113
|
-
- prototypes/server/sinatra/config.ru
|
114
92
|
- prototypes/server/sinatra/log/README
|
115
93
|
- prototypes/server/sinatra/log/unicorn.stderr.log
|
116
94
|
- prototypes/server/sinatra/log/unicorn.stdout.log
|
117
|
-
- prototypes/server/sinatra/
|
118
|
-
- prototypes/server/sinatra/spec/
|
95
|
+
- prototypes/server/sinatra/Rakefile
|
96
|
+
- prototypes/server/sinatra/spec/integration_spec.rb
|
97
|
+
- prototypes/shared/server/config.ru
|
98
|
+
- prototypes/shared/server/data/development/library.csv
|
99
|
+
- prototypes/shared/server/data/production/library.csv
|
100
|
+
- prototypes/shared/server/data/test/library.csv
|
101
|
+
- prototypes/shared/server/logging.rb
|
102
|
+
- prototypes/shared/server/spec/spec_helper.rb
|
103
|
+
- prototypes/shared/server/tmp/pids/README
|
104
|
+
- prototypes/shared/server/unicorn.rb
|
119
105
|
- spec/lib/picky-generators/generators/base_spec.rb
|
120
106
|
- spec/lib/picky-generators/generators/client/sinatra_spec.rb
|
121
107
|
- spec/lib/picky-generators/generators/selector_spec.rb
|
122
|
-
- spec/lib/picky-generators/generators/server/classic_spec.rb
|
123
108
|
- spec/lib/picky-generators/generators/server/sinatra_spec.rb
|
124
109
|
- bin/picky-generate
|
125
110
|
homepage: http://floere.github.com/picky
|
@@ -150,5 +135,4 @@ test_files:
|
|
150
135
|
- spec/lib/picky-generators/generators/base_spec.rb
|
151
136
|
- spec/lib/picky-generators/generators/client/sinatra_spec.rb
|
152
137
|
- spec/lib/picky-generators/generators/selector_spec.rb
|
153
|
-
- spec/lib/picky-generators/generators/server/classic_spec.rb
|
154
138
|
- spec/lib/picky-generators/generators/server/sinatra_spec.rb
|
@@ -1,42 +0,0 @@
|
|
1
|
-
module Picky
|
2
|
-
|
3
|
-
module Generators
|
4
|
-
|
5
|
-
module Server
|
6
|
-
|
7
|
-
# Generates a new Picky Classic Server Example.
|
8
|
-
#
|
9
|
-
# Example:
|
10
|
-
# > picky-generate classic_server my_classic_directory
|
11
|
-
#
|
12
|
-
class Classic < Picky::Generators::Base
|
13
|
-
|
14
|
-
def initialize identifier, name, *args
|
15
|
-
super identifier, name, 'server/classic', *args
|
16
|
-
end
|
17
|
-
|
18
|
-
#
|
19
|
-
#
|
20
|
-
def generate
|
21
|
-
exclaim "Setting up Picky Classic Server \"#{name}\"."
|
22
|
-
create_target_directory
|
23
|
-
copy_all_files
|
24
|
-
copy_all_files expand_prototype_path('server/shared')
|
25
|
-
exclaim "\"#{name}\" is a great project name! Have fun :)\n"
|
26
|
-
exclaim ""
|
27
|
-
exclaim "Next steps:"
|
28
|
-
exclaim "1. cd #{name}"
|
29
|
-
exclaim "2. bundle install"
|
30
|
-
exclaim "3. rake index"
|
31
|
-
exclaim "4. rake start"
|
32
|
-
exclaim "5. rake todo # (optional) shows you where Picky needs input from you"
|
33
|
-
exclaim " # if you want to define your own search."
|
34
|
-
end
|
35
|
-
|
36
|
-
end
|
37
|
-
|
38
|
-
end
|
39
|
-
|
40
|
-
end
|
41
|
-
|
42
|
-
end
|
@@ -1,27 +0,0 @@
|
|
1
|
-
source :gemcutter
|
2
|
-
|
3
|
-
# Gems required by Picky.
|
4
|
-
#
|
5
|
-
gem 'picky', '~> 4.0.0pre1'
|
6
|
-
gem 'rake'
|
7
|
-
gem 'rack'
|
8
|
-
gem 'rack-mount'
|
9
|
-
gem 'rack_fast_escape', '2009.06.24' # Optional.
|
10
|
-
gem 'text'
|
11
|
-
gem 'yajl-ruby', :require => 'yajl'
|
12
|
-
|
13
|
-
# Should be optional, but isn't yet.
|
14
|
-
#
|
15
|
-
gem 'activesupport', '~> 3.0', :require => 'active_support/core_ext'
|
16
|
-
gem 'activerecord', '~> 3.0', :require => 'active_record'
|
17
|
-
|
18
|
-
# Required by your project.
|
19
|
-
#
|
20
|
-
gem 'unicorn'
|
21
|
-
gem 'mysql' # Project specific.
|
22
|
-
gem 'redis' # Project specific.
|
23
|
-
|
24
|
-
group :test do
|
25
|
-
gem 'picky-client', '~> 4.0.0pre1'
|
26
|
-
gem 'rspec'
|
27
|
-
end
|
@@ -1,47 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
#
|
3
|
-
require File.expand_path '../logging', __FILE__
|
4
|
-
|
5
|
-
# TODO Adapt the generated example
|
6
|
-
# (a library books finder) to what you need.
|
7
|
-
#
|
8
|
-
# Questions? Mail me, IRC #picky, the google group, http://github.com/floere/picky/wiki.
|
9
|
-
#
|
10
|
-
class BookSearch < Picky::Application
|
11
|
-
|
12
|
-
# So we don't have to write Picky::
|
13
|
-
# in front of everything.
|
14
|
-
#
|
15
|
-
include Picky
|
16
|
-
|
17
|
-
# How text is indexed. Move to Index block to make it index specific.
|
18
|
-
#
|
19
|
-
indexing removes_characters: /[^a-z0-9\s\/\-\_\:\"\&\.]/i,
|
20
|
-
stopwords: /\b(and|the|of|it|in|for)\b/i,
|
21
|
-
splits_text_on: /[\s\/\-\_\:\"\&\/]/
|
22
|
-
|
23
|
-
# How query text is preprocessed. Move to Search block to make it search specific.
|
24
|
-
#
|
25
|
-
searching substitutes_characters_with: CharacterSubstituters::WestEuropean.new, # Normalizes special user input, Ä -> Ae, ñ -> n etc.
|
26
|
-
removes_characters: /[^a-z0-9\s\/\-\_\&\.\"\~\*\:\,]/i, # Picky needs control chars *"~:, to pass through.
|
27
|
-
stopwords: /\b(and|the|of|it|in|for)\b/i,
|
28
|
-
splits_text_on: /[\s\/\-\&]+/,
|
29
|
-
max_words: 5 # Amount of words maximally used in a search.
|
30
|
-
|
31
|
-
books_index = Index.new :books do
|
32
|
-
source Sources::CSV.new(:title, :author, :year, file: "data/#{PICKY_ENVIRONMENT}/library.csv")
|
33
|
-
category :title,
|
34
|
-
similarity: Similarity::DoubleMetaphone.new(3), # Default is no similarity.
|
35
|
-
partial: Partial::Substring.new(from: 1) # Default is from: -3.
|
36
|
-
category :author, partial: Partial::Substring.new(from: 1)
|
37
|
-
category :year, partial: Partial::None.new
|
38
|
-
end
|
39
|
-
|
40
|
-
books = Search.new books_index do
|
41
|
-
boost [:title, :author] => +3,
|
42
|
-
[:title] => +1
|
43
|
-
end
|
44
|
-
|
45
|
-
route %r{\A/books\Z} => books
|
46
|
-
|
47
|
-
end
|
@@ -1,13 +0,0 @@
|
|
1
|
-
# Just an example, see application.rb on how this file is used.
|
2
|
-
#
|
3
|
-
# Note: ActiveRecord is used. Sorry.
|
4
|
-
#
|
5
|
-
# TODO Configure the database adapter
|
6
|
-
# or ignore and use a csv source.
|
7
|
-
#
|
8
|
-
adapter: mysql
|
9
|
-
host: localhost
|
10
|
-
username: root
|
11
|
-
password:
|
12
|
-
database: your_database # Load this configuration and use a DB source in app/application.rb.
|
13
|
-
encoding: utf8
|
@@ -1,23 +0,0 @@
|
|
1
|
-
# Separate file since this is usually what is
|
2
|
-
# environment specific.
|
3
|
-
#
|
4
|
-
|
5
|
-
# Standard logging.
|
6
|
-
#
|
7
|
-
require 'logger'
|
8
|
-
Picky.logger = Logger.new File.expand_path('log/search.log', PICKY_ROOT)
|
9
|
-
|
10
|
-
# Example with using the syslog logger.
|
11
|
-
# Falling back to the standard log if it isn't available.
|
12
|
-
# (For example, because it is used locally and syslog is
|
13
|
-
# only available on the servers)
|
14
|
-
#
|
15
|
-
# begin
|
16
|
-
# log_program_name = 'search/query'
|
17
|
-
# Picky.logger = SyslogLogger.new log_program_name
|
18
|
-
# puts "Logging on syslog #{log_program_name}."
|
19
|
-
# rescue StandardError
|
20
|
-
# puts "Could not connect to the syslog, using the normal log."
|
21
|
-
# require 'logger'
|
22
|
-
# Picky.logger = Logger.new(File.join(PICKY_ROOT, 'log/search.log'))
|
23
|
-
# end
|
@@ -1,31 +0,0 @@
|
|
1
|
-
# Require the gem. This loads the search framework.
|
2
|
-
#
|
3
|
-
require 'picky'
|
4
|
-
|
5
|
-
# Load your application. This requires the following files in
|
6
|
-
#
|
7
|
-
# * app/application.rb
|
8
|
-
#
|
9
|
-
# (in that order).
|
10
|
-
#
|
11
|
-
Picky::Loader.load_application
|
12
|
-
|
13
|
-
# Load the indexes into the memory.
|
14
|
-
#
|
15
|
-
Picky::Indexes.load
|
16
|
-
|
17
|
-
# TODO Decide if you want to use the Unicorn killing trick. (Good with large data sets)
|
18
|
-
#
|
19
|
-
# Use Harakiri middleware to kill worker child after X requests.
|
20
|
-
#
|
21
|
-
# Works only with web servers that fork worker children and which
|
22
|
-
# fork new children, like for example Unicorn.
|
23
|
-
#
|
24
|
-
# Rack::Harakiri.after = 50
|
25
|
-
# use Rack::Harakiri
|
26
|
-
|
27
|
-
# Start accepting requests.
|
28
|
-
#
|
29
|
-
# Note: Needs to be the same constant name as in app/application.rb.
|
30
|
-
#
|
31
|
-
run BookSearch
|
@@ -1 +0,0 @@
|
|
1
|
-
Logs go here by default.
|