acts_as_solr_reloaded 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (197) hide show
  1. data/LICENSE +22 -0
  2. data/README.markdown +64 -0
  3. data/README.rdoc +93 -0
  4. data/Rakefile +71 -0
  5. data/TESTING_THE_PLUGIN +25 -0
  6. data/VERSION +1 -0
  7. data/config/solr.yml +14 -0
  8. data/config/solr_environment.rb +35 -0
  9. data/generators/dynamic_attributes_migration/dynamic_attributes_migration_generator.rb +7 -0
  10. data/generators/dynamic_attributes_migration/templates/migration.rb +15 -0
  11. data/generators/local_migration/local_migration_generator.rb +7 -0
  12. data/generators/local_migration/templates/migration.rb +16 -0
  13. data/lib/acts_as_solr.rb +65 -0
  14. data/lib/acts_as_solr/acts_methods.rb +363 -0
  15. data/lib/acts_as_solr/class_methods.rb +240 -0
  16. data/lib/acts_as_solr/common_methods.rb +89 -0
  17. data/lib/acts_as_solr/deprecation.rb +61 -0
  18. data/lib/acts_as_solr/dynamic_attribute.rb +3 -0
  19. data/lib/acts_as_solr/instance_methods.rb +194 -0
  20. data/lib/acts_as_solr/lazy_document.rb +18 -0
  21. data/lib/acts_as_solr/local.rb +4 -0
  22. data/lib/acts_as_solr/parser_methods.rb +248 -0
  23. data/lib/acts_as_solr/search_results.rb +74 -0
  24. data/lib/acts_as_solr/solr_fixtures.rb +13 -0
  25. data/lib/acts_as_solr/tasks.rb +10 -0
  26. data/lib/acts_as_solr/tasks/database.rake +16 -0
  27. data/lib/acts_as_solr/tasks/solr.rake +142 -0
  28. data/lib/acts_as_solr/tasks/test.rake +5 -0
  29. data/lib/solr.rb +26 -0
  30. data/lib/solr/connection.rb +177 -0
  31. data/lib/solr/document.rb +75 -0
  32. data/lib/solr/exception.rb +13 -0
  33. data/lib/solr/field.rb +36 -0
  34. data/lib/solr/importer.rb +19 -0
  35. data/lib/solr/importer/array_mapper.rb +26 -0
  36. data/lib/solr/importer/delimited_file_source.rb +38 -0
  37. data/lib/solr/importer/hpricot_mapper.rb +27 -0
  38. data/lib/solr/importer/mapper.rb +51 -0
  39. data/lib/solr/importer/solr_source.rb +41 -0
  40. data/lib/solr/importer/xpath_mapper.rb +35 -0
  41. data/lib/solr/indexer.rb +52 -0
  42. data/lib/solr/request.rb +26 -0
  43. data/lib/solr/request/add_document.rb +58 -0
  44. data/lib/solr/request/base.rb +36 -0
  45. data/lib/solr/request/commit.rb +29 -0
  46. data/lib/solr/request/delete.rb +48 -0
  47. data/lib/solr/request/dismax.rb +46 -0
  48. data/lib/solr/request/index_info.rb +22 -0
  49. data/lib/solr/request/modify_document.rb +46 -0
  50. data/lib/solr/request/optimize.rb +19 -0
  51. data/lib/solr/request/ping.rb +36 -0
  52. data/lib/solr/request/select.rb +54 -0
  53. data/lib/solr/request/spellcheck.rb +30 -0
  54. data/lib/solr/request/standard.rb +406 -0
  55. data/lib/solr/request/update.rb +23 -0
  56. data/lib/solr/response.rb +27 -0
  57. data/lib/solr/response/add_document.rb +17 -0
  58. data/lib/solr/response/base.rb +42 -0
  59. data/lib/solr/response/commit.rb +15 -0
  60. data/lib/solr/response/delete.rb +13 -0
  61. data/lib/solr/response/dismax.rb +8 -0
  62. data/lib/solr/response/index_info.rb +26 -0
  63. data/lib/solr/response/modify_document.rb +17 -0
  64. data/lib/solr/response/optimize.rb +14 -0
  65. data/lib/solr/response/ping.rb +26 -0
  66. data/lib/solr/response/ruby.rb +42 -0
  67. data/lib/solr/response/select.rb +17 -0
  68. data/lib/solr/response/spellcheck.rb +20 -0
  69. data/lib/solr/response/standard.rb +65 -0
  70. data/lib/solr/response/xml.rb +39 -0
  71. data/lib/solr/solrtasks.rb +27 -0
  72. data/lib/solr/util.rb +32 -0
  73. data/lib/solr/xml.rb +44 -0
  74. data/solr/README.txt +36 -0
  75. data/solr/etc/jetty.xml +212 -0
  76. data/solr/etc/webdefault.xml +379 -0
  77. data/solr/exampledocs/books.csv +11 -0
  78. data/solr/exampledocs/hd.xml +46 -0
  79. data/solr/exampledocs/ipod_other.xml +50 -0
  80. data/solr/exampledocs/ipod_video.xml +35 -0
  81. data/solr/exampledocs/locales.xml +16 -0
  82. data/solr/exampledocs/mem.xml +58 -0
  83. data/solr/exampledocs/monitor.xml +31 -0
  84. data/solr/exampledocs/monitor2.xml +30 -0
  85. data/solr/exampledocs/mp500.xml +39 -0
  86. data/solr/exampledocs/post.jar +0 -0
  87. data/solr/exampledocs/post.sh +28 -0
  88. data/solr/exampledocs/sd500.xml +33 -0
  89. data/solr/exampledocs/solr.xml +38 -0
  90. data/solr/exampledocs/spellchecker.xml +58 -0
  91. data/solr/exampledocs/test_utf8.sh +83 -0
  92. data/solr/exampledocs/utf8-example.xml +42 -0
  93. data/solr/exampledocs/vidcard.xml +52 -0
  94. data/solr/lib/jetty-6.1.3.jar +0 -0
  95. data/solr/lib/jetty-util-6.1.3.jar +0 -0
  96. data/solr/lib/jsp-2.1/ant-1.6.5.jar +0 -0
  97. data/solr/lib/jsp-2.1/core-3.1.1.jar +0 -0
  98. data/solr/lib/jsp-2.1/jsp-2.1.jar +0 -0
  99. data/solr/lib/jsp-2.1/jsp-api-2.1.jar +0 -0
  100. data/solr/lib/servlet-api-2.5-6.1.3.jar +0 -0
  101. data/solr/multicore/README.txt +3 -0
  102. data/solr/multicore/core0/conf/schema.xml +41 -0
  103. data/solr/multicore/core0/conf/solrconfig.xml +40 -0
  104. data/solr/multicore/core1/conf/schema.xml +41 -0
  105. data/solr/multicore/core1/conf/solrconfig.xml +40 -0
  106. data/solr/multicore/exampledocs/ipod_other.xml +34 -0
  107. data/solr/multicore/exampledocs/ipod_video.xml +22 -0
  108. data/solr/multicore/solr.xml +35 -0
  109. data/solr/solr/README.txt +52 -0
  110. data/solr/solr/bin/abc +190 -0
  111. data/solr/solr/bin/abo +190 -0
  112. data/solr/solr/bin/backup +117 -0
  113. data/solr/solr/bin/backupcleaner +142 -0
  114. data/solr/solr/bin/commit +133 -0
  115. data/solr/solr/bin/optimize +134 -0
  116. data/solr/solr/bin/readercycle +129 -0
  117. data/solr/solr/bin/rsyncd-disable +77 -0
  118. data/solr/solr/bin/rsyncd-enable +76 -0
  119. data/solr/solr/bin/rsyncd-start +145 -0
  120. data/solr/solr/bin/rsyncd-stop +105 -0
  121. data/solr/solr/bin/scripts-util +99 -0
  122. data/solr/solr/bin/snapcleaner +154 -0
  123. data/solr/solr/bin/snapinstaller +198 -0
  124. data/solr/solr/bin/snappuller +269 -0
  125. data/solr/solr/bin/snappuller-disable +77 -0
  126. data/solr/solr/bin/snappuller-enable +77 -0
  127. data/solr/solr/bin/snapshooter +136 -0
  128. data/solr/solr/conf/admin-extra.html +31 -0
  129. data/solr/solr/conf/elevate.xml +36 -0
  130. data/solr/solr/conf/mapping-ISOLatin1Accent.txt +246 -0
  131. data/solr/solr/conf/protwords.txt +21 -0
  132. data/solr/solr/conf/schema.xml +132 -0
  133. data/solr/solr/conf/scripts.conf +24 -0
  134. data/solr/solr/conf/solrconfig.xml +906 -0
  135. data/solr/solr/conf/spellings.txt +2 -0
  136. data/solr/solr/conf/stopwords.txt +58 -0
  137. data/solr/solr/conf/synonyms.txt +31 -0
  138. data/solr/solr/conf/xslt/example.xsl +132 -0
  139. data/solr/solr/conf/xslt/example_atom.xsl +67 -0
  140. data/solr/solr/conf/xslt/example_rss.xsl +66 -0
  141. data/solr/solr/conf/xslt/luke.xsl +337 -0
  142. data/solr/solr/lib/localsolr.jar +0 -0
  143. data/solr/solr/lib/lucene-spatial-2.9-dev.jar +0 -0
  144. data/solr/start.jar +0 -0
  145. data/solr/webapps/solr.war +0 -0
  146. data/test/config/solr.yml +2 -0
  147. data/test/db/connections/mysql/connection.rb +11 -0
  148. data/test/db/connections/sqlite/connection.rb +8 -0
  149. data/test/db/migrate/001_create_books.rb +15 -0
  150. data/test/db/migrate/002_create_movies.rb +12 -0
  151. data/test/db/migrate/003_create_categories.rb +11 -0
  152. data/test/db/migrate/004_create_electronics.rb +16 -0
  153. data/test/db/migrate/005_create_authors.rb +12 -0
  154. data/test/db/migrate/006_create_postings.rb +9 -0
  155. data/test/db/migrate/007_create_posts.rb +13 -0
  156. data/test/db/migrate/008_create_gadgets.rb +11 -0
  157. data/test/db/migrate/009_create_dynamic_attributes.rb +15 -0
  158. data/test/db/migrate/010_create_advertises.rb +13 -0
  159. data/test/db/migrate/011_create_locals.rb +15 -0
  160. data/test/db/test.db +0 -0
  161. data/test/fixtures/advertises.yml +12 -0
  162. data/test/fixtures/authors.yml +9 -0
  163. data/test/fixtures/books.yml +13 -0
  164. data/test/fixtures/categories.yml +7 -0
  165. data/test/fixtures/db_definitions/mysql.sql +41 -0
  166. data/test/fixtures/dynamic_attributes.yml +11 -0
  167. data/test/fixtures/electronics.yml +49 -0
  168. data/test/fixtures/locals.yml +9 -0
  169. data/test/fixtures/movies.yml +9 -0
  170. data/test/fixtures/postings.yml +10 -0
  171. data/test/functional/acts_as_solr_test.rb +463 -0
  172. data/test/functional/association_indexing_test.rb +37 -0
  173. data/test/functional/faceted_search_test.rb +163 -0
  174. data/test/functional/multi_solr_search_test.rb +57 -0
  175. data/test/models/advertise.rb +6 -0
  176. data/test/models/author.rb +10 -0
  177. data/test/models/book.rb +10 -0
  178. data/test/models/category.rb +8 -0
  179. data/test/models/dynamic_attribute.rb +7 -0
  180. data/test/models/electronic.rb +25 -0
  181. data/test/models/gadget.rb +9 -0
  182. data/test/models/local.rb +7 -0
  183. data/test/models/movie.rb +17 -0
  184. data/test/models/novel.rb +2 -0
  185. data/test/models/post.rb +3 -0
  186. data/test/models/posting.rb +11 -0
  187. data/test/test_helper.rb +56 -0
  188. data/test/unit/acts_methods_shoulda.rb +95 -0
  189. data/test/unit/class_methods_shoulda.rb +85 -0
  190. data/test/unit/common_methods_shoulda.rb +111 -0
  191. data/test/unit/instance_methods_shoulda.rb +372 -0
  192. data/test/unit/lazy_document_shoulda.rb +34 -0
  193. data/test/unit/parser_instance.rb +19 -0
  194. data/test/unit/parser_methods_shoulda.rb +338 -0
  195. data/test/unit/solr_instance.rb +74 -0
  196. data/test/unit/test_helper.rb +24 -0
  197. metadata +290 -0
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ (The MIT License)
2
+
3
+ Copyright © 2010
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ ‘Software’), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED ‘AS IS’, WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
20
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.markdown ADDED
@@ -0,0 +1,64 @@
1
+ Description
2
+ ======
3
+ This plugin adds full text search capabilities and many other nifty features from Apache's [Solr](http://lucene.apache.org/solr/) to any Rails model.
4
+ It was based on the first draft by Erik Hatcher.
5
+
6
+ Installation
7
+ ======
8
+
9
+ script/plugin install git://github.com/dcrec1/acts_as_solr_reloaded.git
10
+
11
+ Requirements
12
+ ------
13
+ * Java Runtime Environment(JRE) 1.5 aka 5.0 or newer [http://www.java.com/en/download/index.jsp](http://www.java.com/en/download/index.jsp)
14
+ * If you have libxml-ruby installed, make sure it's at least version 0.7
15
+
16
+ Configuration
17
+ ======
18
+ If you are using acts_as_solr as a Rails plugin, everything is configured to work out of the box. You can use `rake solr:start` and `rake solr:stop`
19
+ to start and stop the Solr web server (an embedded Jetty). If the default JVM options aren't suitable for
20
+ your environment, you can configure them in solr.yml with the option `jvm_options`. There is a default
21
+ set for the production environment to have some more memory available for the JVM than the defaults, but
22
+ feel free to change them to your liking.
23
+
24
+ If you are using acts_as_solr as a gem, create a file named lib/tasks/acts_as_solr.rake:
25
+ <pre><code>
26
+ require "acts_as_solr/tasks"
27
+ </code></pre>
28
+
29
+ Basic Usage
30
+ ======
31
+ <pre><code>
32
+ # Just include the line below to any of your ActiveRecord models:
33
+ acts_as_solr
34
+
35
+ # Or if you want, you can specify only the fields that should be indexed:
36
+ acts_as_solr :fields => [:name, :author]
37
+
38
+ # Then to find instances of your model, just do:
39
+ Model.search(query) #query is a string representing your query
40
+
41
+ # Please see ActsAsSolr::ActsMethods for a complete info
42
+
43
+ </code></pre>
44
+
45
+
46
+ `acts_as_solr` in your tests
47
+ ======
48
+ To test code that uses `acts_as_solr` you must start a Solr server for the test environment. You can do that with `rake solr:start RAILS_ENV=test`
49
+
50
+ However, if you would like to mock out Solr calls so that a Solr server is not needed (and your tests will run much faster), just add this to your `test_helper.rb` or similar:
51
+
52
+ <pre><code>
53
+ class ActsAsSolr::Post
54
+ def self.execute(request)
55
+ true
56
+ end
57
+ end
58
+ </pre></code>
59
+
60
+ ([via](http://www.subelsky.com/2007/10/actsassolr-capistranhttpwwwbloggercomim.html#c1646308013209805416))
61
+
62
+ Release Information
63
+ ======
64
+ Released under the MIT license.
data/README.rdoc ADDED
@@ -0,0 +1,93 @@
1
+ = DESCRIPTION
2
+
3
+ This plugin adds full text search capabilities and many other nifty features from Apache's Solr[http://lucene.apache.org/solr/] to any Rails model, like:
4
+
5
+ * faceting
6
+ * dynamic attributes
7
+ * integration with acts_as_taggable_on
8
+ * highlighting
9
+ * geolocation
10
+ * relevance
11
+
12
+ Watch this screencast for a short demo of the latests features:
13
+
14
+ http://www.vimeo.com/8728276
15
+
16
+ == INSTALLATION
17
+
18
+ script/plugin install git://github.com/dcrec1/acts_as_solr_reloaded.git
19
+
20
+ == REQUIREMENTS
21
+
22
+ * Java Runtime Environment(JRE) 1.5 aka 5.0 [http://www.java.com/en/download/index.jsp](http://www.java.com/en/download/index.jsp)
23
+ * If you have libxml-ruby installed, make sure it's at least version 0.7
24
+
25
+ == CONFIGURATION
26
+
27
+ If you are using acts_as_solr_reloaded as a Rails plugin, everything is configured to work out of the box. You can use `rake solr:start` and `rake solr:stop`
28
+ to start and stop the Solr web server (an embedded Jetty). If the default JVM options aren't suitable for
29
+ your environment, you can configure them in config/solr.yml with the option `jvm_options`. There is a default
30
+ set for the production environment to have some more memory available for the JVM than the defaults, but
31
+ feel free to change them to your liking.
32
+
33
+ If you are using acts_as_solr_reloaded as a gem, create a file named lib/tasks/acts_as_solr.rake:
34
+
35
+ require "acts_as_solr/tasks"
36
+
37
+ == USAGE
38
+
39
+ Just include the line below to any of your ActiveRecord models:
40
+ acts_as_solr
41
+
42
+ Or if you want, you can specify only the fields that should be indexed:
43
+ acts_as_solr :fields => [:name, :author]
44
+
45
+ Then to find instances of your model, just do:
46
+ Model.search(query) #query is a string representing your query
47
+
48
+ Case you want to use dynamic attributes or geolocalization, you can use this generators that setup the database:
49
+
50
+ script/generate dynamic_attributes_migration
51
+ script/generate local_migration
52
+
53
+ and then configure your model like this:
54
+
55
+ acts_as_solr :dynamic_attributes => true,
56
+ :spatial => true
57
+
58
+ If you want to integrate the model with acts_as_taggable_on, just add the option :taggable => true :
59
+
60
+ acts_as_solr :taggable => true
61
+
62
+ Please see ActsAsSolr::ActsMethods for a complete info
63
+
64
+ == TESTING
65
+
66
+ To test code that uses acts_as_solr_reloaded you must start a Solr server for the test environment. You can do that with
67
+
68
+ rake solr:start RAILS_ENV=test
69
+
70
+ == LICENSE
71
+
72
+ (The MIT License)
73
+
74
+ Copyright © 2010
75
+
76
+ Permission is hereby granted, free of charge, to any person obtaining
77
+ a copy of this software and associated documentation files (the
78
+ ‘Software’), to deal in the Software without restriction, including
79
+ without limitation the rights to use, copy, modify, merge, publish,
80
+ distribute, sublicense, and/or sell copies of the Software, and to
81
+ permit persons to whom the Software is furnished to do so, subject to
82
+ the following conditions:
83
+
84
+ The above copyright notice and this permission notice shall be
85
+ included in all copies or substantial portions of the Software.
86
+
87
+ THE SOFTWARE IS PROVIDED ‘AS IS’, WITHOUT WARRANTY OF ANY KIND,
88
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
89
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
90
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
91
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
92
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
93
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/Rakefile ADDED
@@ -0,0 +1,71 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+ require 'rake/testtask'
4
+ require 'rake/rdoctask'
5
+
6
+ Dir["#{File.dirname(__FILE__)}/lib/acts_as_solr/tasks/**/*.rake"].sort.each { |ext| load ext }
7
+
8
+ desc "Default Task"
9
+ task :default => [:test]
10
+
11
+ desc "Runs the unit tests"
12
+ task :test => "test:unit"
13
+
14
+ namespace :test do
15
+ task :setup do
16
+ RAILS_ROOT = File.expand_path("#{File.dirname(__FILE__)}/test") unless defined? RAILS_ROOT
17
+ ENV['RAILS_ENV'] = "test"
18
+ ENV["ACTS_AS_SOLR_TEST"] = "true"
19
+ require File.expand_path("#{File.dirname(__FILE__)}/config/solr_environment")
20
+ puts "Using " + DB
21
+ %x(mysql -u#{MYSQL_USER} < #{File.dirname(__FILE__) + "/test/fixtures/db_definitions/mysql.sql"}) if DB == 'mysql'
22
+
23
+ Rake::Task["test:migrate"].invoke
24
+ end
25
+
26
+ desc 'Measures test coverage using rcov'
27
+ task :rcov => :setup do
28
+ rm_f "coverage"
29
+ rm_f "coverage.data"
30
+ rcov = "rcov --rails --aggregate coverage.data --text-summary -Ilib"
31
+
32
+ system("#{rcov} --html #{Dir.glob('test/**/*_shoulda.rb').join(' ')}")
33
+ system("open coverage/index.html") if PLATFORM['darwin']
34
+ end
35
+
36
+ desc 'Runs the functional tests, testing integration with Solr'
37
+ Rake::TestTask.new('functional' => :setup) do |t|
38
+ t.pattern = "test/functional/*_test.rb"
39
+ t.verbose = true
40
+ end
41
+
42
+ desc "Unit tests"
43
+ Rake::TestTask.new(:unit) do |t|
44
+ t.libs << 'test/unit'
45
+ t.pattern = "test/unit/*_shoulda.rb"
46
+ t.verbose = true
47
+ end
48
+ end
49
+
50
+ Rake::RDocTask.new do |rd|
51
+ rd.main = "README.rdoc"
52
+ rd.rdoc_dir = "rdoc"
53
+ rd.rdoc_files.exclude("lib/solr/**/*.rb", "lib/solr.rb")
54
+ rd.rdoc_files.include("README.rdoc", "lib/**/*.rb")
55
+ end
56
+
57
+ begin
58
+ require 'jeweler'
59
+ Jeweler::Tasks.new do |s|
60
+ s.name = "acts_as_solr_reloaded"
61
+ s.summary = "This gem adds full text search capabilities and many other nifty features from Apache Solr to any Rails model."
62
+ s.email = "dc.rec1@gmail.com"
63
+ s.homepage = "http://github.com/dcrec1/acts_as_solr_reloaded"
64
+ s.description = "This gem adds full text search capabilities and many other nifty features from Apache Solr to any Rails model."
65
+ s.authors = ["Diego Carrion"]
66
+ s.files = FileList["[A-Z]*", "{bin,generators,config,lib,solr}/**/*"] +
67
+ FileList["test/**/*"].reject {|f| f.include?("test/log")}.reject {|f| f.include?("test/tmp")}
68
+ end
69
+ rescue LoadError
70
+ puts "Jeweler, or one of its dependencies, is not available. Install it with: sudo gem install jeweler"
71
+ end
@@ -0,0 +1,25 @@
1
+ acts_as_solr comes with a quick and fast unit test suite, and with a longer-running
2
+ functional test suite, the latter testing the actual integration with Solr.
3
+
4
+ The unit test suite is written using Shoulda, so make sure you have a recent version
5
+ installed.
6
+
7
+ Running `rake test` or just `rake` will run both test suites. Use `rake test:unit` to
8
+ just run the unit test suite.
9
+
10
+ == How to run functional tests for this plugin:
11
+ To run the acts_as_solr's plugin tests run the following steps:
12
+
13
+ - create a MySQL database called "actsassolr_test" (if you want to use MySQL)
14
+
15
+ - create a new Rails project, if needed (the plugin can only be tested from within a Rails project); move/checkout acts_as_solr into its vendor/plugins/, as usual
16
+
17
+ - copy vendor/plugins/acts_as_solr/config/solr.yml to config/ (the Rails config folder)
18
+
19
+ - rake solr:start RAILS_ENV=test
20
+
21
+ - rake test:functional (Accepts the following arguments: DB=sqlite|mysql and MYSQL_USER=user)
22
+
23
+ == Troubleshooting:
24
+ If for some reason the tests don't run and you get MySQL errors, make sure you edit the MYSQL_USER entry under
25
+ config/environment.rb. It's recommended to create or use a MySQL user with no password.
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 1.0.0
data/config/solr.yml ADDED
@@ -0,0 +1,14 @@
1
+ # Config file for the acts_as_solr_reloaded plugin.
2
+ #
3
+ # If you change the host or port number here, make sure you update
4
+ # them in your Solr config file
5
+
6
+ development:
7
+ url: http://127.0.0.1:8982/solr
8
+
9
+ test:
10
+ url: http://127.0.0.1:8981/solr
11
+
12
+ production:
13
+ url: http://127.0.0.1:8983/solr
14
+ jvm_options: -server -d64 -Xmx1024M -Xms64M
@@ -0,0 +1,35 @@
1
+ ENV['RAILS_ENV'] = (ENV['RAILS_ENV'] || 'development').dup
2
+ # RAILS_ROOT isn't defined yet, so figure it out.
3
+ require "uri"
4
+ require "fileutils"
5
+ dir = File.dirname(__FILE__)
6
+ SOLR_PATH = File.expand_path("#{dir}/../solr") unless defined? SOLR_PATH
7
+
8
+ RAILS_ROOT = File.expand_path("#{File.dirname(__FILE__)}/../test") unless defined? RAILS_ROOT
9
+ unless defined? SOLR_LOGS_PATH
10
+ SOLR_LOGS_PATH = ENV["SOLR_LOGS_PATH"] || "#{RAILS_ROOT}/log"
11
+ end
12
+ unless defined? SOLR_PIDS_PATH
13
+ SOLR_PIDS_PATH = ENV["SOLR_PIDS_PATH"] || "#{RAILS_ROOT}/tmp/pids"
14
+ end
15
+ unless defined? SOLR_DATA_PATH
16
+ SOLR_DATA_PATH = ENV["SOLR_DATA_PATH"] || "#{RAILS_ROOT}/solr/#{ENV['RAILS_ENV']}"
17
+ end
18
+ unless defined? SOLR_CONFIG_PATH
19
+ SOLR_CONFIG_PATH = ENV["SOLR_CONFIG_PATH"] || "#{SOLR_PATH}/solr"
20
+ end
21
+
22
+ unless defined? SOLR_PORT
23
+ config = YAML::load_file(RAILS_ROOT+'/config/solr.yml')
24
+ raise("No solr environment defined for RAILS_ENV the #{ENV['RAILS_ENV'].inspect}") unless config[ENV['RAILS_ENV']]
25
+ SOLR_PORT = ENV['PORT'] || URI.parse(config[ENV['RAILS_ENV']]['url']).port
26
+ end
27
+
28
+ SOLR_JVM_OPTIONS = config[ENV['RAILS_ENV']]['jvm_options'] unless defined? SOLR_JVM_OPTIONS
29
+
30
+ if ENV["ACTS_AS_SOLR_TEST"]
31
+ require "activerecord"
32
+ DB = (ENV['DB'] ? ENV['DB'] : 'sqlite') unless defined?(DB)
33
+ MYSQL_USER = (ENV['MYSQL_USER'].nil? ? 'root' : ENV['MYSQL_USER']) unless defined? MYSQL_USER
34
+ require File.join(File.dirname(File.expand_path(__FILE__)), '..', 'test', 'db', 'connections', DB, 'connection.rb')
35
+ end
@@ -0,0 +1,7 @@
1
+ class DynamicAttributesMigrationGenerator < Rails::Generator::Base
2
+ def manifest
3
+ record do |m|
4
+ m.migration_template 'migration.rb', 'db/migrate', :migration_file_name => "dynamic_attributes_migration"
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,15 @@
1
+ class DynamicAttributesMigration < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :dynamic_attributes do |t|
4
+ t.integer :dynamicable_id
5
+ t.string :dynamicable_type
6
+ t.string :name
7
+ t.text :value
8
+ t.timestamps
9
+ end
10
+ end
11
+
12
+ def self.down
13
+ drop_table :dynamic_attributes
14
+ end
15
+ end
@@ -0,0 +1,7 @@
1
+ class LocalMigrationGenerator < Rails::Generator::Base
2
+ def manifest
3
+ record do |m|
4
+ m.migration_template 'migration.rb', 'db/migrate', :migration_file_name => "local_migration"
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,16 @@
1
+ class LocalMigration < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :locals do |t|
4
+ t.integer :localizable_id
5
+ t.string :localizable_type
6
+ t.string :latitude
7
+ t.string :longitude
8
+
9
+ t.timestamps
10
+ end
11
+ end
12
+
13
+ def self.down
14
+ drop_table :locals
15
+ end
16
+ end
@@ -0,0 +1,65 @@
1
+ # Copyright (c) 2006 Erik Hatcher, Thiago Jackiw
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ # of this software and associated documentation files (the "Software"), to deal
5
+ # in the Software without restriction, including without limitation the rights
6
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ # copies of the Software, and to permit persons to whom the Software is
8
+ # furnished to do so, subject to the following conditions:
9
+ #
10
+ # The above copyright notice and this permission notice shall be included in all
11
+ # copies or substantial portions of the Software.
12
+ #
13
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
+ # SOFTWARE.
20
+
21
+ require 'active_record'
22
+ require 'rexml/document'
23
+ require 'net/http'
24
+ require 'yaml'
25
+ require 'time'
26
+ require 'erb'
27
+ require 'rexml/xpath'
28
+
29
+ require File.dirname(__FILE__) + '/solr'
30
+ require File.dirname(__FILE__) + '/acts_as_solr/acts_methods'
31
+ require File.dirname(__FILE__) + '/acts_as_solr/common_methods'
32
+ require File.dirname(__FILE__) + '/acts_as_solr/parser_methods'
33
+ require File.dirname(__FILE__) + '/acts_as_solr/class_methods'
34
+ require File.dirname(__FILE__) + '/acts_as_solr/instance_methods'
35
+ require File.dirname(__FILE__) + '/acts_as_solr/common_methods'
36
+ require File.dirname(__FILE__) + '/acts_as_solr/deprecation'
37
+ require File.dirname(__FILE__) + '/acts_as_solr/search_results'
38
+ require File.dirname(__FILE__) + '/acts_as_solr/lazy_document'
39
+ module ActsAsSolr
40
+
41
+ class Post
42
+ def self.execute(request, core = nil)
43
+ begin
44
+ if File.exists?(RAILS_ROOT+'/config/solr.yml')
45
+ config = YAML::load_file(RAILS_ROOT+'/config/solr.yml')
46
+ url = config[ENV['RAILS_ENV']]['url']
47
+ # for backwards compatibility
48
+ url ||= "http://#{config[ENV['RAILS_ENV']]['host']}:#{config[ENV['RAILS_ENV']]['port']}/#{config[ENV['RAILS_ENV']]['servlet_path']}"
49
+ else
50
+ url = 'http://localhost:8982/solr'
51
+ end
52
+ url += "/" + core if !core.nil?
53
+ connection = Solr::Connection.new(url)
54
+ return connection.send(request)
55
+ rescue
56
+ raise "Couldn't connect to the Solr server at #{url}. #{$!}"
57
+ false
58
+ end
59
+ end
60
+ end
61
+
62
+ end
63
+
64
+ # reopen ActiveRecord and include the acts_as_solr method
65
+ ActiveRecord::Base.extend ActsAsSolr::ActsMethods