sunspot_rbg 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (222) hide show
  1. data/.gitignore +12 -0
  2. data/Gemfile +4 -0
  3. data/History.txt +222 -0
  4. data/LICENSE +18 -0
  5. data/Rakefile +17 -0
  6. data/TODO +13 -0
  7. data/VERSION.yml +4 -0
  8. data/bin/sunspot-installer +19 -0
  9. data/bin/sunspot-solr +74 -0
  10. data/installer/config/schema.yml +95 -0
  11. data/lib/light_config.rb +40 -0
  12. data/lib/sunspot/adapters.rb +265 -0
  13. data/lib/sunspot/composite_setup.rb +202 -0
  14. data/lib/sunspot/configuration.rb +46 -0
  15. data/lib/sunspot/data_extractor.rb +50 -0
  16. data/lib/sunspot/dsl/adjustable.rb +47 -0
  17. data/lib/sunspot/dsl/field_query.rb +279 -0
  18. data/lib/sunspot/dsl/fields.rb +103 -0
  19. data/lib/sunspot/dsl/fulltext.rb +243 -0
  20. data/lib/sunspot/dsl/function.rb +14 -0
  21. data/lib/sunspot/dsl/functional.rb +44 -0
  22. data/lib/sunspot/dsl/more_like_this_query.rb +56 -0
  23. data/lib/sunspot/dsl/paginatable.rb +28 -0
  24. data/lib/sunspot/dsl/query_facet.rb +36 -0
  25. data/lib/sunspot/dsl/restriction.rb +25 -0
  26. data/lib/sunspot/dsl/restriction_with_near.rb +121 -0
  27. data/lib/sunspot/dsl/scope.rb +217 -0
  28. data/lib/sunspot/dsl/search.rb +30 -0
  29. data/lib/sunspot/dsl/standard_query.rb +121 -0
  30. data/lib/sunspot/dsl.rb +5 -0
  31. data/lib/sunspot/field.rb +193 -0
  32. data/lib/sunspot/field_factory.rb +129 -0
  33. data/lib/sunspot/indexer.rb +131 -0
  34. data/lib/sunspot/installer/library_installer.rb +45 -0
  35. data/lib/sunspot/installer/schema_builder.rb +219 -0
  36. data/lib/sunspot/installer/solrconfig_updater.rb +76 -0
  37. data/lib/sunspot/installer/task_helper.rb +18 -0
  38. data/lib/sunspot/installer.rb +31 -0
  39. data/lib/sunspot/query/abstract_field_facet.rb +52 -0
  40. data/lib/sunspot/query/boost_query.rb +24 -0
  41. data/lib/sunspot/query/common_query.rb +85 -0
  42. data/lib/sunspot/query/composite_fulltext.rb +36 -0
  43. data/lib/sunspot/query/connective.rb +206 -0
  44. data/lib/sunspot/query/date_field_facet.rb +14 -0
  45. data/lib/sunspot/query/dismax.rb +128 -0
  46. data/lib/sunspot/query/field_facet.rb +41 -0
  47. data/lib/sunspot/query/filter.rb +38 -0
  48. data/lib/sunspot/query/function_query.rb +52 -0
  49. data/lib/sunspot/query/geo.rb +53 -0
  50. data/lib/sunspot/query/highlighting.rb +55 -0
  51. data/lib/sunspot/query/more_like_this.rb +61 -0
  52. data/lib/sunspot/query/more_like_this_query.rb +12 -0
  53. data/lib/sunspot/query/pagination.rb +38 -0
  54. data/lib/sunspot/query/query_facet.rb +16 -0
  55. data/lib/sunspot/query/restriction.rb +262 -0
  56. data/lib/sunspot/query/scope.rb +9 -0
  57. data/lib/sunspot/query/sort.rb +95 -0
  58. data/lib/sunspot/query/sort_composite.rb +33 -0
  59. data/lib/sunspot/query/standard_query.rb +16 -0
  60. data/lib/sunspot/query/text_field_boost.rb +17 -0
  61. data/lib/sunspot/query.rb +11 -0
  62. data/lib/sunspot/schema.rb +151 -0
  63. data/lib/sunspot/search/abstract_search.rb +293 -0
  64. data/lib/sunspot/search/date_facet.rb +35 -0
  65. data/lib/sunspot/search/facet_row.rb +27 -0
  66. data/lib/sunspot/search/field_facet.rb +88 -0
  67. data/lib/sunspot/search/highlight.rb +38 -0
  68. data/lib/sunspot/search/hit.rb +136 -0
  69. data/lib/sunspot/search/more_like_this_search.rb +31 -0
  70. data/lib/sunspot/search/paginated_collection.rb +55 -0
  71. data/lib/sunspot/search/query_facet.rb +67 -0
  72. data/lib/sunspot/search/standard_search.rb +21 -0
  73. data/lib/sunspot/search.rb +9 -0
  74. data/lib/sunspot/server.rb +152 -0
  75. data/lib/sunspot/session.rb +260 -0
  76. data/lib/sunspot/session_proxy/abstract_session_proxy.rb +29 -0
  77. data/lib/sunspot/session_proxy/class_sharding_session_proxy.rb +66 -0
  78. data/lib/sunspot/session_proxy/id_sharding_session_proxy.rb +89 -0
  79. data/lib/sunspot/session_proxy/master_slave_session_proxy.rb +43 -0
  80. data/lib/sunspot/session_proxy/sharding_session_proxy.rb +222 -0
  81. data/lib/sunspot/session_proxy/silent_fail_session_proxy.rb +42 -0
  82. data/lib/sunspot/session_proxy/thread_local_session_proxy.rb +37 -0
  83. data/lib/sunspot/session_proxy.rb +87 -0
  84. data/lib/sunspot/setup.rb +350 -0
  85. data/lib/sunspot/text_field_setup.rb +29 -0
  86. data/lib/sunspot/type.rb +372 -0
  87. data/lib/sunspot/util.rb +243 -0
  88. data/lib/sunspot/version.rb +3 -0
  89. data/lib/sunspot.rb +569 -0
  90. data/lib/sunspot_rbg.rb +7 -0
  91. data/log/.gitignore +1 -0
  92. data/pkg/.gitignore +1 -0
  93. data/script/console +10 -0
  94. data/solr/README.txt +42 -0
  95. data/solr/etc/jetty.xml +218 -0
  96. data/solr/etc/webdefault.xml +379 -0
  97. data/solr/lib/jetty-6.1.3.jar +0 -0
  98. data/solr/lib/jetty-util-6.1.3.jar +0 -0
  99. data/solr/lib/jsp-2.1/ant-1.6.5.jar +0 -0
  100. data/solr/lib/jsp-2.1/core-3.1.1.jar +0 -0
  101. data/solr/lib/jsp-2.1/jsp-2.1.jar +0 -0
  102. data/solr/lib/jsp-2.1/jsp-api-2.1.jar +0 -0
  103. data/solr/lib/servlet-api-2.5-6.1.3.jar +0 -0
  104. data/solr/logs/.gitignore +1 -0
  105. data/solr/solr/.gitignore +1 -0
  106. data/solr/solr/README.txt +54 -0
  107. data/solr/solr/conf/admin-extra.html +31 -0
  108. data/solr/solr/conf/elevate.xml +36 -0
  109. data/solr/solr/conf/mapping-ISOLatin1Accent.txt +246 -0
  110. data/solr/solr/conf/protwords.txt +21 -0
  111. data/solr/solr/conf/schema.xml +238 -0
  112. data/solr/solr/conf/scripts.conf +24 -0
  113. data/solr/solr/conf/solrconfig.xml +934 -0
  114. data/solr/solr/conf/spellings.txt +2 -0
  115. data/solr/solr/conf/stopwords.txt +58 -0
  116. data/solr/solr/conf/synonyms.txt +31 -0
  117. data/solr/solr/conf/xslt/example.xsl +132 -0
  118. data/solr/solr/conf/xslt/example_atom.xsl +67 -0
  119. data/solr/solr/conf/xslt/example_rss.xsl +66 -0
  120. data/solr/solr/conf/xslt/luke.xsl +337 -0
  121. data/solr/start.jar +0 -0
  122. data/solr/webapps/solr.war +0 -0
  123. data/solr-1.3/etc/jetty.xml +212 -0
  124. data/solr-1.3/etc/webdefault.xml +379 -0
  125. data/solr-1.3/lib/jetty-6.1.3.jar +0 -0
  126. data/solr-1.3/lib/jetty-util-6.1.3.jar +0 -0
  127. data/solr-1.3/lib/jsp-2.1/ant-1.6.5.jar +0 -0
  128. data/solr-1.3/lib/jsp-2.1/core-3.1.1.jar +0 -0
  129. data/solr-1.3/lib/jsp-2.1/jsp-2.1.jar +0 -0
  130. data/solr-1.3/lib/jsp-2.1/jsp-api-2.1.jar +0 -0
  131. data/solr-1.3/lib/servlet-api-2.5-6.1.3.jar +0 -0
  132. data/solr-1.3/solr/conf/elevate.xml +36 -0
  133. data/solr-1.3/solr/conf/protwords.txt +21 -0
  134. data/solr-1.3/solr/conf/schema.xml +64 -0
  135. data/solr-1.3/solr/conf/solrconfig.xml +725 -0
  136. data/solr-1.3/solr/conf/stopwords.txt +57 -0
  137. data/solr-1.3/solr/conf/synonyms.txt +31 -0
  138. data/solr-1.3/solr/lib/geoapi-nogenerics-2.1-M2.jar +0 -0
  139. data/solr-1.3/solr/lib/gt2-referencing-2.3.1.jar +0 -0
  140. data/solr-1.3/solr/lib/jsr108-0.01.jar +0 -0
  141. data/solr-1.3/solr/lib/locallucene.jar +0 -0
  142. data/solr-1.3/solr/lib/localsolr.jar +0 -0
  143. data/solr-1.3/start.jar +0 -0
  144. data/solr-1.3/webapps/solr.war +0 -0
  145. data/spec/api/adapters_spec.rb +33 -0
  146. data/spec/api/binding_spec.rb +50 -0
  147. data/spec/api/indexer/attributes_spec.rb +149 -0
  148. data/spec/api/indexer/batch_spec.rb +46 -0
  149. data/spec/api/indexer/dynamic_fields_spec.rb +42 -0
  150. data/spec/api/indexer/fixed_fields_spec.rb +57 -0
  151. data/spec/api/indexer/fulltext_spec.rb +43 -0
  152. data/spec/api/indexer/removal_spec.rb +53 -0
  153. data/spec/api/indexer/spec_helper.rb +1 -0
  154. data/spec/api/indexer_spec.rb +14 -0
  155. data/spec/api/query/advanced_manipulation_examples.rb +35 -0
  156. data/spec/api/query/connectives_examples.rb +189 -0
  157. data/spec/api/query/dsl_spec.rb +18 -0
  158. data/spec/api/query/dynamic_fields_examples.rb +165 -0
  159. data/spec/api/query/faceting_examples.rb +397 -0
  160. data/spec/api/query/fulltext_examples.rb +313 -0
  161. data/spec/api/query/function_spec.rb +70 -0
  162. data/spec/api/query/geo_examples.rb +68 -0
  163. data/spec/api/query/highlighting_examples.rb +223 -0
  164. data/spec/api/query/more_like_this_spec.rb +140 -0
  165. data/spec/api/query/ordering_pagination_examples.rb +95 -0
  166. data/spec/api/query/scope_examples.rb +275 -0
  167. data/spec/api/query/spec_helper.rb +1 -0
  168. data/spec/api/query/standard_spec.rb +28 -0
  169. data/spec/api/query/text_field_scoping_examples.rb +30 -0
  170. data/spec/api/query/types_spec.rb +20 -0
  171. data/spec/api/search/dynamic_fields_spec.rb +33 -0
  172. data/spec/api/search/faceting_spec.rb +360 -0
  173. data/spec/api/search/highlighting_spec.rb +69 -0
  174. data/spec/api/search/hits_spec.rb +120 -0
  175. data/spec/api/search/paginated_collection_spec.rb +26 -0
  176. data/spec/api/search/results_spec.rb +66 -0
  177. data/spec/api/search/search_spec.rb +23 -0
  178. data/spec/api/search/spec_helper.rb +1 -0
  179. data/spec/api/server_spec.rb +91 -0
  180. data/spec/api/session_proxy/class_sharding_session_proxy_spec.rb +85 -0
  181. data/spec/api/session_proxy/id_sharding_session_proxy_spec.rb +30 -0
  182. data/spec/api/session_proxy/master_slave_session_proxy_spec.rb +41 -0
  183. data/spec/api/session_proxy/sharding_session_proxy_spec.rb +77 -0
  184. data/spec/api/session_proxy/silent_fail_session_proxy_spec.rb +24 -0
  185. data/spec/api/session_proxy/spec_helper.rb +9 -0
  186. data/spec/api/session_proxy/thread_local_session_proxy_spec.rb +50 -0
  187. data/spec/api/session_spec.rb +220 -0
  188. data/spec/api/spec_helper.rb +3 -0
  189. data/spec/api/sunspot_spec.rb +18 -0
  190. data/spec/ext.rb +11 -0
  191. data/spec/helpers/indexer_helper.rb +29 -0
  192. data/spec/helpers/query_helper.rb +38 -0
  193. data/spec/helpers/search_helper.rb +80 -0
  194. data/spec/integration/dynamic_fields_spec.rb +55 -0
  195. data/spec/integration/faceting_spec.rb +238 -0
  196. data/spec/integration/highlighting_spec.rb +22 -0
  197. data/spec/integration/indexing_spec.rb +33 -0
  198. data/spec/integration/keyword_search_spec.rb +317 -0
  199. data/spec/integration/local_search_spec.rb +64 -0
  200. data/spec/integration/more_like_this_spec.rb +43 -0
  201. data/spec/integration/scoped_search_spec.rb +354 -0
  202. data/spec/integration/spec_helper.rb +7 -0
  203. data/spec/integration/stored_fields_spec.rb +10 -0
  204. data/spec/integration/test_pagination.rb +32 -0
  205. data/spec/mocks/adapters.rb +32 -0
  206. data/spec/mocks/blog.rb +3 -0
  207. data/spec/mocks/comment.rb +21 -0
  208. data/spec/mocks/connection.rb +126 -0
  209. data/spec/mocks/mock_adapter.rb +30 -0
  210. data/spec/mocks/mock_class_sharding_session_proxy.rb +24 -0
  211. data/spec/mocks/mock_record.rb +52 -0
  212. data/spec/mocks/mock_sharding_session_proxy.rb +15 -0
  213. data/spec/mocks/photo.rb +11 -0
  214. data/spec/mocks/post.rb +85 -0
  215. data/spec/mocks/super_class.rb +2 -0
  216. data/spec/mocks/user.rb +13 -0
  217. data/spec/spec_helper.rb +30 -0
  218. data/sunspot.gemspec +40 -0
  219. data/tasks/rdoc.rake +27 -0
  220. data/tasks/schema.rake +19 -0
  221. data/tasks/todo.rake +4 -0
  222. metadata +457 -0
@@ -0,0 +1,15 @@
1
+ class MockShardingSessionProxy < Sunspot::SessionProxy::ShardingSessionProxy
2
+ attr_reader :sessions
3
+ alias_method :all_sessions, :sessions
4
+
5
+ def initialize(search_session)
6
+ super
7
+ @sessions = Array.new(2) { Sunspot::Session.new }.each_with_index do |session, i|
8
+ session.config.solr.url = "http://localhost:898#{i}/solr"
9
+ end
10
+ end
11
+
12
+ def session_for(object)
13
+ @sessions[object.blog_id.to_i % 2]
14
+ end
15
+ end
@@ -0,0 +1,11 @@
1
+ class Photo < MockRecord
2
+ attr_accessor :caption, :lat, :lng, :size, :average_rating, :created_at
3
+ end
4
+
5
+ Sunspot.setup(Photo) do
6
+ text :caption, :default_boost => 1.5
7
+ boost 0.75
8
+ integer :size, :trie => true
9
+ float :average_rating, :trie => true
10
+ time :created_at, :trie => true
11
+ end
@@ -0,0 +1,85 @@
1
+ require File.join(File.dirname(__FILE__), 'blog')
2
+ require File.join(File.dirname(__FILE__), 'super_class')
3
+
4
+ class Post < SuperClass
5
+ attr_accessor :title, :body, :blog_id, :published_at, :ratings_average,
6
+ :author_name, :featured, :expire_date, :coordinates, :tags
7
+ alias_method :featured?, :featured
8
+
9
+ def category_ids
10
+ @category_ids ||= []
11
+ end
12
+
13
+ def custom_string
14
+ @custom_string ||= {}
15
+ end
16
+
17
+ def custom_fl
18
+ @custom_fl ||= {}
19
+ end
20
+
21
+ def custom_time
22
+ @custom_time ||= {}
23
+ end
24
+
25
+ def custom_boolean
26
+ @custom_boolean ||= {}
27
+ end
28
+
29
+ private
30
+ attr_writer :category_ids, :custom_string, :custom_fl, :custom_time, :custom_boolean
31
+ end
32
+
33
+ Sunspot.setup(Post) do
34
+ text :title, :boost => 2
35
+ text :body, :stored => true, :more_like_this => true
36
+ text :backwards_title do
37
+ title.reverse if title
38
+ end
39
+ text :tags, :more_like_this => true
40
+ string :title, :stored => true
41
+ integer :blog_id, :references => Blog
42
+ integer :category_ids, :multiple => true
43
+ float :average_rating, :using => :ratings_average, :trie => true
44
+ time :published_at, :trie => true
45
+ date :expire_date
46
+ boolean :featured, :using => :featured?, :stored => true
47
+ string :sort_title do
48
+ title.downcase.sub(/^(a|an|the)\W+/, '') if title
49
+ end
50
+ integer :primary_category_id do |post|
51
+ post.category_ids.first
52
+ end
53
+ time :last_indexed_at, :stored => true do
54
+ Time.now
55
+ end
56
+ location :coordinates
57
+
58
+ dynamic_string :custom_string, :stored => true
59
+ dynamic_float :custom_float, :multiple => true, :using => :custom_fl
60
+ dynamic_integer :custom_integer do
61
+ category_ids.inject({}) do |hash, category_id|
62
+ hash.merge(category_id => 1)
63
+ end
64
+ end
65
+ dynamic_time :custom_time
66
+ dynamic_boolean :custom_boolean
67
+
68
+ boost do
69
+ if ratings_average
70
+ 1 + (ratings_average - 3.0) / 4.0
71
+ end
72
+ end
73
+
74
+ string :legacy, :as => :legacy_field_s do
75
+ "legacy #{title}"
76
+ end
77
+
78
+ string :legacy_array, :as => :legacy_array_field_sm, :multiple => true do
79
+ ['first string', 'second string']
80
+ end
81
+ end
82
+
83
+ class PhotoPost < Post
84
+ end
85
+
@@ -0,0 +1,2 @@
1
+ class SuperClass < MockRecord
2
+ end
@@ -0,0 +1,13 @@
1
+ class User
2
+ attr_accessor :name, :roles
3
+
4
+ def id
5
+ 1
6
+ end
7
+ end
8
+
9
+ Sunspot.setup(User) do
10
+ text :name
11
+ string :name
12
+ integer :role_ids, :multiple => true, :stored => true
13
+ end
@@ -0,0 +1,30 @@
1
+ # encoding: utf-8
2
+ require 'rubygems'
3
+ require 'bundler/setup'
4
+
5
+ require 'ostruct'
6
+ require 'sunspot'
7
+
8
+ require File.join(File.dirname(__FILE__), 'mocks', 'mock_record.rb')
9
+ Dir.glob(File.join(File.dirname(__FILE__), 'mocks', '**', '*.rb')).each do |file|
10
+ require file unless File.basename(file) == 'mock_record.rb'
11
+ end
12
+ require File.join(File.dirname(__FILE__), 'ext')
13
+
14
+ Spec::Runner.configure do |config|
15
+ Dir.glob(File.join(File.dirname(__FILE__), 'helpers', '*_helper.rb')).each do |helper|
16
+ helper_name = File.basename(helper, File.extname(helper))
17
+ spec_type = helper_name.sub(/_helper$/, '').to_sym
18
+ require(helper)
19
+ config.include(
20
+ Sunspot::Util.full_const_get(Sunspot::Util.camel_case(helper_name)),
21
+ :type => spec_type
22
+ )
23
+ end
24
+ end
25
+
26
+ def without_class(clazz)
27
+ Object.class_eval { remove_const(clazz.name.to_sym) }
28
+ yield
29
+ Object.class_eval { const_set(clazz.name.to_sym, clazz) }
30
+ end
data/sunspot.gemspec ADDED
@@ -0,0 +1,40 @@
1
+ # encoding: utf-8
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "sunspot/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "sunspot_rbg"
7
+ s.version = Sunspot::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ['Mat Brown', 'Peer Allan', 'Dmitriy Dzema', 'Benjamin Krause', 'Marcel de Graaf', 'Brandon Keepers', 'Peter Berkenbosch',
10
+ 'Brian Atkinson', 'Tom Coleman', 'Matt Mitchell', 'Nathan Beyer', 'Kieran Topping', 'Nicolas Braem', 'Jeremy Ashkenas',
11
+ 'Dylan Vaughn', 'Brian Durand', 'Sam Granieri', 'Nick Zadrozny', 'Jason Ronallo', 'Russen']
12
+ s.email = ["nessur@gmail.com"]
13
+ s.homepage = "http://outoftime.github.com/sunspot"
14
+ s.summary = 'Library for expressive, powerful interaction with the Solr search engine. Proxy release, copy of master branch on 7-21-2011'
15
+ s.description = <<-TEXT
16
+ Proxy release, copy of master branch on 7-21-2011.
17
+ Sunspot is a library providing a powerful, all-ruby API for the Solr search engine. Sunspot manages the configuration of persistent
18
+ Ruby classes for search and indexing and exposes Solr's most powerful features through a collection of DSLs. Complex search operations
19
+ can be performed without hand-writing any boolean queries or building Solr parameters by hand.
20
+ TEXT
21
+
22
+ s.rubyforge_project = "sunspot_rbg"
23
+
24
+ s.files = `git ls-files`.split("\n")
25
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
26
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
27
+ s.require_paths = ["lib"]
28
+ s.executables = ['sunspot-solr', 'sunspot-installer']
29
+
30
+ s.add_dependency 'rsolr', '0.12.1'
31
+ s.add_dependency 'escape', '0.0.4'
32
+ s.add_dependency 'pr_geohash', '~> 1.0'
33
+
34
+ s.add_development_dependency 'rspec', '~> 1.1'
35
+ s.add_development_dependency 'hanna'
36
+
37
+ s.rdoc_options << '--webcvs=http://github.com/outoftime/sunspot/tree/master/%s' <<
38
+ '--title' << 'Sunspot - Solr-powered search for Ruby objects - API Documentation' <<
39
+ '--main' << 'README.rdoc'
40
+ end
data/tasks/rdoc.rake ADDED
@@ -0,0 +1,27 @@
1
+ begin
2
+ require 'hanna/rdoctask'
3
+ rescue LoadError
4
+ if require 'rubygems'
5
+ retry
6
+ end
7
+ # It's OK if hanna isn't installed.
8
+ end
9
+
10
+ Rake::RDocTask.new(:doc) do |rdoc|
11
+ version = Sunspot::VERSION
12
+ rdoc.title = "Sunspot #{version} - Solr-powered search for Ruby objects - API Documentation"
13
+ rdoc.main = 'README.rdoc'
14
+ rdoc.rdoc_files.include('README.rdoc', 'lib/sunspot.rb', 'lib/sunspot/**/*.rb')
15
+ rdoc.rdoc_dir = 'doc'
16
+ rdoc.options << "--webcvs=http://github.com/outoftime/sunspot/tree/v#{version}/%s" << '--title' << 'Sunspot - Solr-powered search for Ruby objects - API Documentation'
17
+ end
18
+
19
+ namespace :doc do
20
+ desc 'Generate rdoc and move into pages directory'
21
+ task :publish => :redoc do
22
+ doc_dir = File.join(File.dirname(__FILE__), '..', 'doc')
23
+ publish_dir = File.join(File.dirname(__FILE__), '..', '..', 'pages', 'docs')
24
+ FileUtils.rm_rf(publish_dir) if File.exist?(publish_dir)
25
+ FileUtils.cp_r(doc_dir, publish_dir)
26
+ end
27
+ end
data/tasks/schema.rake ADDED
@@ -0,0 +1,19 @@
1
+ namespace :schema do
2
+ desc 'Generate schema from template'
3
+ task :compile do
4
+ require File.join(File.dirname(__FILE__), '..', 'lib', 'sunspot', 'schema')
5
+ File.open(
6
+ File.join(
7
+ File.dirname(__FILE__),
8
+ '..',
9
+ 'solr',
10
+ 'solr',
11
+ 'conf',
12
+ 'schema.xml'
13
+ ),
14
+ 'w'
15
+ ) do |file|
16
+ file << Sunspot::Schema.new.to_xml
17
+ end
18
+ end
19
+ end
data/tasks/todo.rake ADDED
@@ -0,0 +1,4 @@
1
+ desc 'Show all TODO and related tags'
2
+ task :todo do
3
+ FileList['lib/**/*.rb'].egrep(/#.*(TODO|FIXME|XXX)/)
4
+ end