aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--todo.txt2
-rw-r--r--vendor/plugins/acts_as_xapian/lib/acts_as_xapian.rb29
2 files changed, 27 insertions, 4 deletions
diff --git a/todo.txt b/todo.txt
index ddf7c1c2a..3e2788eb5 100644
--- a/todo.txt
+++ b/todo.txt
@@ -30,6 +30,8 @@ pages.
Next
====
+https://secure.mysociety.org/cvstrac/tktview?tn=1032
+
Add ppt icon
http://www.whatdotheyknow.com/request/presentations_made_at_climate_ch#incoming-1773
diff --git a/vendor/plugins/acts_as_xapian/lib/acts_as_xapian.rb b/vendor/plugins/acts_as_xapian/lib/acts_as_xapian.rb
index ee20fb5c2..4c45c88fe 100644
--- a/vendor/plugins/acts_as_xapian/lib/acts_as_xapian.rb
+++ b/vendor/plugins/acts_as_xapian/lib/acts_as_xapian.rb
@@ -4,20 +4,32 @@
# Copyright (c) 2008 UK Citizens Online Democracy. All rights reserved.
# Email: francis@mysociety.org; WWW: http://www.mysociety.org/
#
-# $Id: acts_as_xapian.rb,v 1.30 2008-06-23 21:05:39 francis Exp $
-
# Documentation
# =============
#
-# See ../README.txt for documentation. Please update that file if you edit
+# See ../README.txt foocumentation. Please update that file if you edit
# code.
-require 'xapian'
+# Make it so if Xapian isn't installed, the Rails app doesn't fail completely,
+# just when somebody does a search.
+begin
+ require 'xapian'
+ $acts_as_xapian_bindings_available = true
+rescue LoadError
+ STDERR.puts "acts_as_xapian: No Ruby bindings for Xapian installed"
+ $acts_as_xapian_bindings_available = false
+end
module ActsAsXapian
######################################################################
# Module level variables
# XXX must be some kind of cattr_accessor that can do this better
+ def ActsAsXapian.bindings_available
+ $acts_as_xapian_bindings_available
+ end
+ class NoXapianRubyBindingsError < StandardError
+ end
+
def ActsAsXapian.db_path
@@db_path
end
@@ -74,6 +86,8 @@ module ActsAsXapian
# XXX we perhaps don't need to rebuild database and enquire and queryparser -
# but db.reopen wasn't enough by itself, so just do everything it's easier.
def ActsAsXapian.readable_init
+ raise NoXapianRubyBindingsError.new("Xapian Ruby bindings not installed") unless ActsAsXapian.bindings_available
+
# basic Xapian objects
begin
@@db = Xapian::Database.new(@@db_path)
@@ -150,6 +164,8 @@ module ActsAsXapian
end
def ActsAsXapian.writable_init(suffix = "")
+ raise NoXapianRubyBindingsError.new("Xapian Ruby bindings not installed") unless ActsAsXapian.bindings_available
+
ActsAsXapian.init # XXX so db_path is made
new_path = @@db_path + suffix
@@ -566,6 +582,11 @@ module ActsAsXapian
module ActsMethods
# See top of this file for docs
def acts_as_xapian(options)
+ # Give error only on queries if bindings not available
+ if not ActsAsXapian.bindings_available
+ return
+ end
+
include InstanceMethods
cattr_accessor :xapian_options