acts_as_solr_reloaded 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +22 -0
- data/README.markdown +64 -0
- data/README.rdoc +93 -0
- data/Rakefile +71 -0
- data/TESTING_THE_PLUGIN +25 -0
- data/VERSION +1 -0
- data/config/solr.yml +14 -0
- data/config/solr_environment.rb +35 -0
- data/generators/dynamic_attributes_migration/dynamic_attributes_migration_generator.rb +7 -0
- data/generators/dynamic_attributes_migration/templates/migration.rb +15 -0
- data/generators/local_migration/local_migration_generator.rb +7 -0
- data/generators/local_migration/templates/migration.rb +16 -0
- data/lib/acts_as_solr.rb +65 -0
- data/lib/acts_as_solr/acts_methods.rb +363 -0
- data/lib/acts_as_solr/class_methods.rb +240 -0
- data/lib/acts_as_solr/common_methods.rb +89 -0
- data/lib/acts_as_solr/deprecation.rb +61 -0
- data/lib/acts_as_solr/dynamic_attribute.rb +3 -0
- data/lib/acts_as_solr/instance_methods.rb +194 -0
- data/lib/acts_as_solr/lazy_document.rb +18 -0
- data/lib/acts_as_solr/local.rb +4 -0
- data/lib/acts_as_solr/parser_methods.rb +248 -0
- data/lib/acts_as_solr/search_results.rb +74 -0
- data/lib/acts_as_solr/solr_fixtures.rb +13 -0
- data/lib/acts_as_solr/tasks.rb +10 -0
- data/lib/acts_as_solr/tasks/database.rake +16 -0
- data/lib/acts_as_solr/tasks/solr.rake +142 -0
- data/lib/acts_as_solr/tasks/test.rake +5 -0
- data/lib/solr.rb +26 -0
- data/lib/solr/connection.rb +177 -0
- data/lib/solr/document.rb +75 -0
- data/lib/solr/exception.rb +13 -0
- data/lib/solr/field.rb +36 -0
- data/lib/solr/importer.rb +19 -0
- data/lib/solr/importer/array_mapper.rb +26 -0
- data/lib/solr/importer/delimited_file_source.rb +38 -0
- data/lib/solr/importer/hpricot_mapper.rb +27 -0
- data/lib/solr/importer/mapper.rb +51 -0
- data/lib/solr/importer/solr_source.rb +41 -0
- data/lib/solr/importer/xpath_mapper.rb +35 -0
- data/lib/solr/indexer.rb +52 -0
- data/lib/solr/request.rb +26 -0
- data/lib/solr/request/add_document.rb +58 -0
- data/lib/solr/request/base.rb +36 -0
- data/lib/solr/request/commit.rb +29 -0
- data/lib/solr/request/delete.rb +48 -0
- data/lib/solr/request/dismax.rb +46 -0
- data/lib/solr/request/index_info.rb +22 -0
- data/lib/solr/request/modify_document.rb +46 -0
- data/lib/solr/request/optimize.rb +19 -0
- data/lib/solr/request/ping.rb +36 -0
- data/lib/solr/request/select.rb +54 -0
- data/lib/solr/request/spellcheck.rb +30 -0
- data/lib/solr/request/standard.rb +406 -0
- data/lib/solr/request/update.rb +23 -0
- data/lib/solr/response.rb +27 -0
- data/lib/solr/response/add_document.rb +17 -0
- data/lib/solr/response/base.rb +42 -0
- data/lib/solr/response/commit.rb +15 -0
- data/lib/solr/response/delete.rb +13 -0
- data/lib/solr/response/dismax.rb +8 -0
- data/lib/solr/response/index_info.rb +26 -0
- data/lib/solr/response/modify_document.rb +17 -0
- data/lib/solr/response/optimize.rb +14 -0
- data/lib/solr/response/ping.rb +26 -0
- data/lib/solr/response/ruby.rb +42 -0
- data/lib/solr/response/select.rb +17 -0
- data/lib/solr/response/spellcheck.rb +20 -0
- data/lib/solr/response/standard.rb +65 -0
- data/lib/solr/response/xml.rb +39 -0
- data/lib/solr/solrtasks.rb +27 -0
- data/lib/solr/util.rb +32 -0
- data/lib/solr/xml.rb +44 -0
- data/solr/README.txt +36 -0
- data/solr/etc/jetty.xml +212 -0
- data/solr/etc/webdefault.xml +379 -0
- data/solr/exampledocs/books.csv +11 -0
- data/solr/exampledocs/hd.xml +46 -0
- data/solr/exampledocs/ipod_other.xml +50 -0
- data/solr/exampledocs/ipod_video.xml +35 -0
- data/solr/exampledocs/locales.xml +16 -0
- data/solr/exampledocs/mem.xml +58 -0
- data/solr/exampledocs/monitor.xml +31 -0
- data/solr/exampledocs/monitor2.xml +30 -0
- data/solr/exampledocs/mp500.xml +39 -0
- data/solr/exampledocs/post.jar +0 -0
- data/solr/exampledocs/post.sh +28 -0
- data/solr/exampledocs/sd500.xml +33 -0
- data/solr/exampledocs/solr.xml +38 -0
- data/solr/exampledocs/spellchecker.xml +58 -0
- data/solr/exampledocs/test_utf8.sh +83 -0
- data/solr/exampledocs/utf8-example.xml +42 -0
- data/solr/exampledocs/vidcard.xml +52 -0
- data/solr/lib/jetty-6.1.3.jar +0 -0
- data/solr/lib/jetty-util-6.1.3.jar +0 -0
- data/solr/lib/jsp-2.1/ant-1.6.5.jar +0 -0
- data/solr/lib/jsp-2.1/core-3.1.1.jar +0 -0
- data/solr/lib/jsp-2.1/jsp-2.1.jar +0 -0
- data/solr/lib/jsp-2.1/jsp-api-2.1.jar +0 -0
- data/solr/lib/servlet-api-2.5-6.1.3.jar +0 -0
- data/solr/multicore/README.txt +3 -0
- data/solr/multicore/core0/conf/schema.xml +41 -0
- data/solr/multicore/core0/conf/solrconfig.xml +40 -0
- data/solr/multicore/core1/conf/schema.xml +41 -0
- data/solr/multicore/core1/conf/solrconfig.xml +40 -0
- data/solr/multicore/exampledocs/ipod_other.xml +34 -0
- data/solr/multicore/exampledocs/ipod_video.xml +22 -0
- data/solr/multicore/solr.xml +35 -0
- data/solr/solr/README.txt +52 -0
- data/solr/solr/bin/abc +190 -0
- data/solr/solr/bin/abo +190 -0
- data/solr/solr/bin/backup +117 -0
- data/solr/solr/bin/backupcleaner +142 -0
- data/solr/solr/bin/commit +133 -0
- data/solr/solr/bin/optimize +134 -0
- data/solr/solr/bin/readercycle +129 -0
- data/solr/solr/bin/rsyncd-disable +77 -0
- data/solr/solr/bin/rsyncd-enable +76 -0
- data/solr/solr/bin/rsyncd-start +145 -0
- data/solr/solr/bin/rsyncd-stop +105 -0
- data/solr/solr/bin/scripts-util +99 -0
- data/solr/solr/bin/snapcleaner +154 -0
- data/solr/solr/bin/snapinstaller +198 -0
- data/solr/solr/bin/snappuller +269 -0
- data/solr/solr/bin/snappuller-disable +77 -0
- data/solr/solr/bin/snappuller-enable +77 -0
- data/solr/solr/bin/snapshooter +136 -0
- data/solr/solr/conf/admin-extra.html +31 -0
- data/solr/solr/conf/elevate.xml +36 -0
- data/solr/solr/conf/mapping-ISOLatin1Accent.txt +246 -0
- data/solr/solr/conf/protwords.txt +21 -0
- data/solr/solr/conf/schema.xml +132 -0
- data/solr/solr/conf/scripts.conf +24 -0
- data/solr/solr/conf/solrconfig.xml +906 -0
- data/solr/solr/conf/spellings.txt +2 -0
- data/solr/solr/conf/stopwords.txt +58 -0
- data/solr/solr/conf/synonyms.txt +31 -0
- data/solr/solr/conf/xslt/example.xsl +132 -0
- data/solr/solr/conf/xslt/example_atom.xsl +67 -0
- data/solr/solr/conf/xslt/example_rss.xsl +66 -0
- data/solr/solr/conf/xslt/luke.xsl +337 -0
- data/solr/solr/lib/localsolr.jar +0 -0
- data/solr/solr/lib/lucene-spatial-2.9-dev.jar +0 -0
- data/solr/start.jar +0 -0
- data/solr/webapps/solr.war +0 -0
- data/test/config/solr.yml +2 -0
- data/test/db/connections/mysql/connection.rb +11 -0
- data/test/db/connections/sqlite/connection.rb +8 -0
- data/test/db/migrate/001_create_books.rb +15 -0
- data/test/db/migrate/002_create_movies.rb +12 -0
- data/test/db/migrate/003_create_categories.rb +11 -0
- data/test/db/migrate/004_create_electronics.rb +16 -0
- data/test/db/migrate/005_create_authors.rb +12 -0
- data/test/db/migrate/006_create_postings.rb +9 -0
- data/test/db/migrate/007_create_posts.rb +13 -0
- data/test/db/migrate/008_create_gadgets.rb +11 -0
- data/test/db/migrate/009_create_dynamic_attributes.rb +15 -0
- data/test/db/migrate/010_create_advertises.rb +13 -0
- data/test/db/migrate/011_create_locals.rb +15 -0
- data/test/db/test.db +0 -0
- data/test/fixtures/advertises.yml +12 -0
- data/test/fixtures/authors.yml +9 -0
- data/test/fixtures/books.yml +13 -0
- data/test/fixtures/categories.yml +7 -0
- data/test/fixtures/db_definitions/mysql.sql +41 -0
- data/test/fixtures/dynamic_attributes.yml +11 -0
- data/test/fixtures/electronics.yml +49 -0
- data/test/fixtures/locals.yml +9 -0
- data/test/fixtures/movies.yml +9 -0
- data/test/fixtures/postings.yml +10 -0
- data/test/functional/acts_as_solr_test.rb +463 -0
- data/test/functional/association_indexing_test.rb +37 -0
- data/test/functional/faceted_search_test.rb +163 -0
- data/test/functional/multi_solr_search_test.rb +57 -0
- data/test/models/advertise.rb +6 -0
- data/test/models/author.rb +10 -0
- data/test/models/book.rb +10 -0
- data/test/models/category.rb +8 -0
- data/test/models/dynamic_attribute.rb +7 -0
- data/test/models/electronic.rb +25 -0
- data/test/models/gadget.rb +9 -0
- data/test/models/local.rb +7 -0
- data/test/models/movie.rb +17 -0
- data/test/models/novel.rb +2 -0
- data/test/models/post.rb +3 -0
- data/test/models/posting.rb +11 -0
- data/test/test_helper.rb +56 -0
- data/test/unit/acts_methods_shoulda.rb +95 -0
- data/test/unit/class_methods_shoulda.rb +85 -0
- data/test/unit/common_methods_shoulda.rb +111 -0
- data/test/unit/instance_methods_shoulda.rb +372 -0
- data/test/unit/lazy_document_shoulda.rb +34 -0
- data/test/unit/parser_instance.rb +19 -0
- data/test/unit/parser_methods_shoulda.rb +338 -0
- data/test/unit/solr_instance.rb +74 -0
- data/test/unit/test_helper.rb +24 -0
- 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
|
data/TESTING_THE_PLUGIN
ADDED
@@ -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,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,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
|
data/lib/acts_as_solr.rb
ADDED
@@ -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
|