refinerycms-pgsearch 0.1

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.
data/.gitignore ADDED
@@ -0,0 +1,3 @@
1
+ .DS_Store
2
+ Gemfile.lock
3
+ spec/dummy
data/Gemfile ADDED
@@ -0,0 +1,65 @@
1
+ source 'http://rubygems.org'
2
+
3
+ gemspec
4
+
5
+ gem 'refinerycms', '~> 2.0.0'
6
+
7
+ group :development, :test do
8
+ gem 'refinerycms-testing', '~> 2.0.0'
9
+ gem 'guard-rspec', '~> 0.6.0'
10
+
11
+ platforms :jruby do
12
+ gem 'activerecord-jdbcpostgresql-adapter'
13
+ gem 'jruby-openssl'
14
+ end
15
+
16
+ unless defined?(JRUBY_VERSION)
17
+ gem 'pg'
18
+ end
19
+
20
+ platforms :mswin, :mingw do
21
+ gem 'win32console'
22
+ gem 'rb-fchange', '~> 0.0.5'
23
+ gem 'rb-notifu', '~> 0.0.4'
24
+ end
25
+
26
+ platforms :ruby do
27
+ gem 'spork', '~> 0.9.0.rc'
28
+ gem 'guard-spork'
29
+
30
+ unless ENV['TRAVIS']
31
+ require 'rbconfig'
32
+ if RbConfig::CONFIG['target_os'] =~ /darwin/i
33
+ gem 'rb-fsevent', '>= 0.3.9'
34
+ gem 'ruby_gntp'
35
+ end
36
+ if RbConfig::CONFIG['target_os'] =~ /linux/i
37
+ gem 'rb-inotify', '>= 0.5.1'
38
+ gem 'libnotify', '~> 0.1.3'
39
+ gem 'therubyracer', '~> 0.9.9'
40
+ end
41
+ end
42
+ end
43
+
44
+ platforms :jruby do
45
+ unless ENV['TRAVIS']
46
+ require 'rbconfig'
47
+ if RbConfig::CONFIG['target_os'] =~ /darwin/i
48
+ gem 'ruby_gntp'
49
+ end
50
+ if RbConfig::CONFIG['target_os'] =~ /linux/i
51
+ gem 'rb-inotify', '>= 0.5.1'
52
+ gem 'libnotify', '~> 0.1.3'
53
+ end
54
+ end
55
+ end
56
+ end
57
+
58
+ # Refinery/rails should pull in the proper versions of these
59
+ group :assets do
60
+ gem 'sass-rails'
61
+ gem 'coffee-rails'
62
+ gem 'uglifier'
63
+ end
64
+
65
+ gem 'jquery-rails'
data/Guardfile ADDED
@@ -0,0 +1,20 @@
1
+ guard 'rspec', :version => 2, :cli => "--color" do
2
+ watch(%r{^spec/.+_spec\.rb$})
3
+ watch(%r{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
4
+ watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
5
+ watch(%r{^app/controllers/(.+)_(controller)\.rb$}) { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/controllers/#{m[1]}_#{m[2]}_spec.rb", "spec/requests/#{m[1]}_spec.rb"] }
6
+ watch(%r{^spec/support/(.+)\.rb$}) { "spec" }
7
+ watch('spec/spec_helper.rb') { "spec" }
8
+ watch('config/routes.rb') { "spec/routing" }
9
+ watch('app/controllers/application_controller.rb') { "spec/controllers" }
10
+ # Capybara request specs
11
+ watch(%r{^app/views/(.+)/.*\.(erb|haml)$}) { |m| "spec/requests/#{m[1]}_spec.rb" }
12
+ end
13
+
14
+ guard 'spork', :wait => 60, :cucumber => false, :rspec_env => { 'RAILS_ENV' => 'test' } do
15
+ watch('config/application.rb')
16
+ watch('config/environment.rb')
17
+ watch(%r{^config/environments/.+\.rb$})
18
+ watch(%r{^config/initializers/.+\.rb$})
19
+ watch('spec/spec_helper.rb')
20
+ end
data/Rakefile ADDED
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/env rake
2
+ begin
3
+ require 'bundler/setup'
4
+ rescue LoadError
5
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
6
+ end
7
+
8
+ ENGINE_PATH = File.dirname(__FILE__)
9
+ APP_RAKEFILE = File.expand_path("../spec/dummy/Rakefile", __FILE__)
10
+
11
+ if File.exists?(APP_RAKEFILE)
12
+ load 'rails/tasks/engine.rake'
13
+ end
14
+
15
+ require "refinerycms-testing"
16
+ Refinery::Testing::Railtie.load_tasks
17
+ Refinery::Testing::Railtie.load_dummy_tasks(ENGINE_PATH)
18
+
19
+ load File.expand_path('../tasks/rspec.rake', __FILE__)
@@ -0,0 +1,12 @@
1
+ module Refinery
2
+ class SearchController < ::ApplicationController
3
+
4
+ # Display search results given the query supplied
5
+ def show
6
+ @results = Refinery::SearchEngine.search(params[:query], params[:page])
7
+
8
+ present(@page = Refinery::Page.find_by_link_url("/search"))
9
+ end
10
+
11
+ end
12
+ end
@@ -0,0 +1,23 @@
1
+ module Refinery
2
+ module SearchHelper
3
+
4
+ def result_title(result)
5
+ result.title.gsub /(#{Regexp.escape(params[:query])})/i, '<mark>\1</mark>'
6
+ end
7
+
8
+ def result_type(result)
9
+ result.class.to_s.titleize.gsub('Refinery/', '').gsub '/', '::'
10
+ end
11
+
12
+ # this is where you register your result URLs based on the
13
+ # type of result we're dealing with
14
+ def result_url(result)
15
+ if result.respond_to? :url
16
+ refinery.url_for result.url
17
+ else
18
+ refinery.url_for send(Refinery.route_for_model(result.class, :admin => false), result)
19
+ end
20
+ end
21
+
22
+ end
23
+ end
@@ -0,0 +1,13 @@
1
+ module Refinery
2
+ class SearchEngine
3
+
4
+ # How many results should we show per page
5
+ RESULTS_LIMIT = 10
6
+
7
+ # Perform search over the specified models
8
+ def self.search(query, page = 1)
9
+ PgSearch.multisearch(query).paginate(:page => page, :per_page => RESULTS_LIMIT)
10
+ end
11
+
12
+ end
13
+ end
@@ -0,0 +1,19 @@
1
+ <% content_for :body_content_title do %>
2
+ <%= t('.search_results_for', :what => params[:query]) %>
3
+ <% end %>
4
+
5
+ <% content_for :body_content_left do %>
6
+ <ul id="search_results">
7
+ <% @results.each do |result| %>
8
+ <li>
9
+ <span class='result_type'>
10
+ <%= result_type result.searchable %>
11
+ </span>
12
+ <%= link_to result_title(result.searchable).html_safe, result_url(result.searchable) %>
13
+ </li>
14
+ <% end %>
15
+ </ul>
16
+
17
+ <% end %>
18
+
19
+ <%= render :partial => "/refinery/content_page" %>
@@ -0,0 +1,6 @@
1
+ <%= form_tag refinery.search_path do -%>
2
+ <%= text_field_tag :query, {}, {:type => "search",
3
+ :placeholder => "Search site for...",
4
+ :value => (params[:query] if params[:query])} %>
5
+ <%= submit_tag 'Go' %>
6
+ <% end %>
@@ -0,0 +1,6 @@
1
+ bg:
2
+ refinery:
3
+ plugins:
4
+ refinerycms_search:
5
+ title: Търсене
6
+ description: Допълнителна функционалност при търсене за Refinery CMS
@@ -0,0 +1,9 @@
1
+ en:
2
+ refinery:
3
+ plugins:
4
+ refinerycms_search:
5
+ title: Search
6
+ description: Extra search handling for Refinery CMS
7
+ search:
8
+ show:
9
+ search_results_for: Search Results for '%{what}'
data/config/routes.rb ADDED
@@ -0,0 +1,3 @@
1
+ Refinery::Core::Engine.routes.draw do
2
+ match "/search", :to => 'search#show', :as => 'search'
3
+ end
data/db/seeds.rb ADDED
@@ -0,0 +1,23 @@
1
+ if defined?(Refinery::User)
2
+ Refinery::User.all.each do |user|
3
+ if user.plugins.where(:name => 'refinerycms_search').blank?
4
+ user.plugins.create(:name => 'refinerycms_search')
5
+ end
6
+ end
7
+ end
8
+
9
+ if defined?(Refinery::Page)
10
+ unless Refinery::Page.where(:menu_match => "^/search.*$").any?
11
+ page = Refinery::Page.create(
12
+ :title => "Search Results",
13
+ :show_in_menu => false,
14
+ :link_url => "/search",
15
+ :deletable => false,
16
+ :menu_match => "^/search.*$"
17
+ )
18
+
19
+ Refinery::Pages.default_parts.each do |default_page_part|
20
+ page.parts.create(:title => default_page_part, :body => nil)
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,45 @@
1
+ require 'rails/generators'
2
+ require 'rails/generators/migration'
3
+
4
+ module Refinery
5
+ class SearchGenerator < Rails::Generators::Base
6
+ include Rails::Generators::Migration
7
+
8
+ desc "Creates the installation files for RefineryCMS Search"
9
+
10
+ source_root File.expand_path("../templates", __FILE__)
11
+
12
+ def self.next_migration_number(dirname)
13
+ if ActiveRecord::Base.timestamped_migrations
14
+ Time.new.utc.strftime("%Y%m%d%H%M%S")
15
+ else
16
+ "%.3d" % (current_migration_number(dirname) + 1)
17
+ end
18
+ end
19
+
20
+ def create_migration_file
21
+ migration_template '01_create_search_page.rb', 'db/migrate/create_search_page.rb'
22
+ sleep 1
23
+ end
24
+
25
+ def pg_search_migration
26
+ migration_template '02_create_pg_search_table.rb', 'db/migrate/create_pg_search_table.rb'
27
+ end
28
+
29
+ def copy_initializer
30
+ copy_file "03_initializer.rb", "config/initializers/refinery/search.rb"
31
+ end
32
+
33
+ def append_load_seed_data
34
+ create_file 'db/seeds.rb' unless File.exists?(File.join(destination_root, 'db', 'seeds.rb'))
35
+ append_file 'db/seeds.rb', :verbose => true do
36
+ <<-EOH
37
+
38
+ # Added by Refinery CMS Search engine
39
+ Refinery::Search::Engine.load_seed
40
+ EOH
41
+ end
42
+ end
43
+
44
+ end
45
+ end
@@ -0,0 +1,16 @@
1
+ class CreateSearchPage < ActiveRecord::Migration
2
+
3
+ def up
4
+ end
5
+
6
+ def down
7
+ if defined?(Refinery::UserPlugin)
8
+ Refinery::UserPlugin.destroy_all({:name => "refinerycms_search"})
9
+ end
10
+
11
+ if defined?(Refinery::Page)
12
+ Refinery::Page.delete_all({:link_url => "/search"})
13
+ end
14
+ end
15
+
16
+ end
@@ -0,0 +1,21 @@
1
+ class CreatePgSearchTable < ActiveRecord::Migration
2
+ def self.up
3
+ say_with_time("Creating table for pg_search multisearch") do
4
+ create_table :pg_search_documents do |t|
5
+ t.text :content
6
+ t.belongs_to :searchable, :polymorphic => true
7
+ t.timestamps
8
+ end
9
+ execute "CREATE EXTENSION IF NOT EXISTS unaccent;"
10
+ execute "ALTER TABLE pg_search_documents ADD COLUMN tsv tsvector;"
11
+ execute "CREATE INDEX index_pg_search_documents_tsv ON pg_search_documents USING gin(tsv);"
12
+ execute "CREATE TRIGGER tsvectorupdate BEFORE INSERT OR UPDATE ON pg_search_documents FOR EACH ROW EXECUTE PROCEDURE tsvector_update_trigger(tsv, 'pg_catalog.english', content)"
13
+ end
14
+ end
15
+
16
+ def self.down
17
+ say_with_time("Dropping table for pg_search multisearch") do
18
+ drop_table :pg_search_documents
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,23 @@
1
+ Refinery::Search.configure do |config|
2
+ config.searchable_models = {
3
+ # Add a Hash of "ModelName" => [:searchable, :field, :names, :as, :keys]
4
+
5
+ # Below are common Refinery models that you might want indexed.
6
+ # Uncomment any that you wish to use, and then run:
7
+ # rake refinery:search:rebuild
8
+ # To rebuild the search index.
9
+
10
+ # Refinery::Page
11
+ # We defined a special method called #all_parts to allow
12
+ # all of the content in the different Page Parts to be indexed
13
+ # simply under the parent page.
14
+
15
+ "Refinery::Page" => [:title, :all_parts],
16
+
17
+ # Refinery::Blog::Post and Refinery::News::Item
18
+ # These are simple, only indexing fields on the model.
19
+
20
+ # "Refinery::Blog::Post" => [:title, :body],
21
+ # "Refinery::News::Item" => [:title, :body]
22
+ }
23
+ end
@@ -0,0 +1,23 @@
1
+ require "refinerycms-core"
2
+
3
+ module Refinery
4
+ autoload :SearchGenerator, 'generators/refinery/search/search_generator'
5
+
6
+ module Search
7
+ require "refinery/search/engine"
8
+
9
+ class << self
10
+ attr_writer :root
11
+ mattr_accessor :searchable_models
12
+
13
+ def root
14
+ @root ||= Pathname.new(File.expand_path('../../../', __FILE__))
15
+ end
16
+
17
+ def configure
18
+ yield self
19
+ end
20
+ end
21
+ end
22
+ end
23
+
@@ -0,0 +1,47 @@
1
+ module Refinery
2
+ module Search
3
+ class Engine < Rails::Engine
4
+ include Refinery::Engine
5
+
6
+ initializer "register refinery_search plugin" do
7
+ Refinery::Plugin.register do |plugin|
8
+ plugin.name = 'refinery_search'
9
+ plugin.version = 2.0
10
+ plugin.hide_from_menu = true
11
+ end
12
+ end
13
+
14
+ config.to_prepare do
15
+ ::Refinery::Search.searchable_models ||= {"Refinery::Page" => [:title, :all_parts]}
16
+ end
17
+
18
+ config.after_initialize do
19
+ require 'pg_search'
20
+
21
+ PgSearch.multisearch_options = {
22
+ using: {
23
+ tsearch: {
24
+ prefix: true,
25
+ dictionary: "english",
26
+ tsvector_column: 'tsv'
27
+ }
28
+ },
29
+ ignoring: :accents
30
+ }
31
+
32
+ ::Refinery::Search.searchable_models.each do |model, fields|
33
+ model.constantize.module_eval do
34
+ include PgSearch
35
+ multisearchable :against => fields
36
+ if fields.include?(:all_parts)
37
+ def all_parts
38
+ @all_parts ||= parts.pluck(:body).join(' ')
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
44
+
45
+ end
46
+ end
47
+ end
@@ -0,0 +1 @@
1
+ require "refinery/search"
@@ -0,0 +1,15 @@
1
+ namespace :refinery do
2
+ namespace :search do
3
+
4
+ task :rebuild => :environment do
5
+ # Get searchable models from hash keys.
6
+ Refinery::Search.searchable_models.keys.each do |model|
7
+ # Delete the old search documents
8
+ PgSearch::Document.delete_all(:searchable_type => model.to_s)
9
+ # Add some new ones!
10
+ model.constantize.find_each{|record| record.update_pg_search_document }
11
+ end
12
+ end
13
+
14
+ end
15
+ end
data/readme.md ADDED
@@ -0,0 +1,55 @@
1
+ # Search plugin for [RefineryCMS](http://www.refinerycms.com)
2
+ [Github](http://github.com/resolve/refinerycms)
3
+
4
+ By: [JGW Maxwell](http://jgwmaxwell.com)
5
+
6
+ Powered by: [pg_search](http://github.com/Casecommons/pg_search). **This only works on PostgreSQL databases, ideally 9.0+.**
7
+
8
+ ## Installation
9
+
10
+ Simply use this by adding the following to your `Gemfile`:
11
+
12
+ ```ruby
13
+ gem 'refinerycms-pgsearch'
14
+ # or for the latest and greatest
15
+ gem 'refinerycms-pgsearch', github: 'jgwmaxwell/refinerycms-pgsearch'
16
+ ```
17
+ Then run `bundle install`, and `rails g refinery:search` to generate the migrations. Finally, run `rake db:migrate` and `rake db:seed` to finish setting up.
18
+
19
+ # # Check The Initializer
20
+
21
+ The default installation will search in Pages. If you wish to find results in other plugins you have created or installed, you can specify these in `config/initializers/refinery/search.rb` like so:
22
+
23
+ ```ruby
24
+ Refinery::Search.configure do |config|
25
+ config.searchable_models = {
26
+ "Refinery::Page" => [:title, :all_parts],
27
+ "Refinery::Blog::Post" => [:title, :body]
28
+ }
29
+ end
30
+ ```
31
+ This will index Pages and Blog Posts for you. The format is: `"STRING_OF_MODEL_CLASS" => [:array, :of, :attribute, :symbols]`. You might notice that Pages are indexing `:all_parts` - this is a convenience to get the content out of multiple page parts that will be defined if you use it.
32
+
33
+ # # To use your own Models
34
+
35
+ Simple pass another line into the hash in the initializer, such as:
36
+
37
+ ```ruby
38
+ "Employee" => [:name, :bio]
39
+ ```
40
+ You can use any public method, as well. So if you have `:first_name` and `:last_name` but a method like `name` to join them, it can be indexed.
41
+
42
+ # # Existing Data and Rebuilding
43
+
44
+ If at any point you need to rebuild your search index, run `rake refinery:search:rebuild` to update all your search records!
45
+
46
+ # # Searching and Viewing
47
+
48
+ A sample search form can be found in [views/refinery/shared/_search.html.erb](http://github.com/jgwmaxwell/refinerycms-pgsearch/blob/master/app/views/refinery/shared/_search.html.erb).
49
+ You can either use this partial directly, or copy the appropriate parts.
50
+
51
+ If you wish to override the url used in the search results just add a `url` method to your model and the result of this method will be used instead.
52
+
53
+ # # Migrating from refinerycms-search
54
+
55
+ You'll need to run the generator, migrate the database, update the new initializer and remove the old code from `application.rb`. Then remove the `acts_as_indexed` statements from your models but otherwise it should be good to go. Let me know if you need help.
@@ -0,0 +1,17 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = %q{refinerycms-pgsearch}
3
+ s.version = %q{0.1}
4
+ s.date = "#{Date.today.strftime("%Y-%m-%d")}"
5
+ s.summary = %q{PostgreSQL search handling for Refinery CMS}
6
+ s.description = %q{Provides extra functionality for searching your frontend website using Refinery CMS.}
7
+ s.homepage = %q{http://refinerycms.com}
8
+ s.email = %q{jgwmaxwell@gmail.com}
9
+ s.authors = ["JGW Maxwell"]
10
+ s.require_paths = %w(lib)
11
+
12
+ s.files = `git ls-files`.split("\n")
13
+ s.test_files = `git ls-files -- spec/*`.split("\n")
14
+
15
+ s.add_dependency 'refinerycms-core', '~> 2.0.4'
16
+ s.add_dependency 'pg_search', '~> 0.5'
17
+ end
@@ -0,0 +1,25 @@
1
+ require "spec_helper"
2
+
3
+ module Refinery
4
+ describe SearchEngine do
5
+ describe "#search" do
6
+ context "when page exist" do
7
+ # we're using page factory because search engine uses
8
+ # page model as default model
9
+ let!(:page) { FactoryGirl.create(:page, :title => "testy") }
10
+
11
+ it "returns an array consisting of mathcing pages" do
12
+ result = SearchEngine.search("testy")
13
+ result.should include(page)
14
+ end
15
+ end
16
+
17
+ context "when page does not exist" do
18
+ it "returns empty array" do
19
+ result = SearchEngine.search("ugisozols")
20
+ result.should be_empty
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,59 @@
1
+ $VERBOSE = ENV['VERBOSE'] || false
2
+
3
+ require 'rubygems'
4
+
5
+ ENGINE_RAILS_ROOT = File.join(File.dirname(__FILE__), '../') unless defined?(ENGINE_RAILS_ROOT)
6
+
7
+ def setup_environment
8
+ # Configure Rails Environment
9
+ ENV["RAILS_ENV"] ||= 'test'
10
+
11
+ require File.expand_path("../dummy/config/environment", __FILE__)
12
+
13
+ require 'rspec/rails'
14
+ require 'capybara/rspec'
15
+
16
+ Rails.backtrace_cleaner.remove_silencers!
17
+
18
+ RSpec.configure do |config|
19
+ config.mock_with :rspec
20
+ config.treat_symbols_as_metadata_keys_with_true_values = true
21
+ config.filter_run :focus => true
22
+ config.run_all_when_everything_filtered = true
23
+ end
24
+
25
+ # Set javascript driver for capybara
26
+ Capybara.javascript_driver = :selenium
27
+ end
28
+
29
+ def each_run
30
+ Rails.cache.clear
31
+ ActiveSupport::Dependencies.clear
32
+ FactoryGirl.reload
33
+
34
+ # Requires supporting files with custom matchers and macros, etc,
35
+ # in ./support/ and its subdirectories including factories.
36
+ ([ENGINE_RAILS_ROOT, Rails.root.to_s].uniq | Refinery::Plugins.registered.pathnames).map{|p|
37
+ Dir[File.join(p, 'spec', 'support', '**', '*.rb').to_s]
38
+ }.flatten.sort.each do |support_file|
39
+ require support_file
40
+ end
41
+ end
42
+
43
+ # If spork is available in the Gemfile it'll be used but we don't force it.
44
+ unless (begin; require 'spork'; rescue LoadError; nil end).nil?
45
+ Spork.prefork do
46
+ # Loading more in this block will cause your tests to run faster. However,
47
+ # if you change any configuration or code from libraries loaded here, you'll
48
+ # need to restart spork for it take effect.
49
+ setup_environment
50
+ end
51
+
52
+ Spork.each_run do
53
+ # This code will be run each time you run your specs.
54
+ each_run
55
+ end
56
+ else
57
+ setup_environment
58
+ each_run
59
+ end
data/tasks/rspec.rake ADDED
@@ -0,0 +1,4 @@
1
+ require 'rspec/core/rake_task'
2
+
3
+ desc "Run specs"
4
+ RSpec::Core::RakeTask.new
metadata ADDED
@@ -0,0 +1,106 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: refinerycms-pgsearch
3
+ version: !ruby/object:Gem::Version
4
+ version: '0.1'
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - JGW Maxwell
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-07-21 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: refinerycms-core
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 2.0.4
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 2.0.4
30
+ - !ruby/object:Gem::Dependency
31
+ name: pg_search
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: '0.5'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: '0.5'
46
+ description: Provides extra functionality for searching your frontend website using
47
+ Refinery CMS.
48
+ email: jgwmaxwell@gmail.com
49
+ executables: []
50
+ extensions: []
51
+ extra_rdoc_files: []
52
+ files:
53
+ - .gitignore
54
+ - Gemfile
55
+ - Guardfile
56
+ - Rakefile
57
+ - app/controllers/refinery/search_controller.rb
58
+ - app/helpers/refinery/search_helper.rb
59
+ - app/models/refinery/search_engine.rb
60
+ - app/views/refinery/search/show.html.erb
61
+ - app/views/refinery/shared/_search.html.erb
62
+ - config/locales/bg.yml
63
+ - config/locales/en.yml
64
+ - config/routes.rb
65
+ - db/seeds.rb
66
+ - lib/generators/refinery/search/search_generator.rb
67
+ - lib/generators/refinery/search/templates/01_create_search_page.rb
68
+ - lib/generators/refinery/search/templates/02_create_pg_search_table.rb
69
+ - lib/generators/refinery/search/templates/03_initializer.rb
70
+ - lib/refinery/search.rb
71
+ - lib/refinery/search/engine.rb
72
+ - lib/refinerycms-pgsearch.rb
73
+ - lib/tasks/search.rake
74
+ - readme.md
75
+ - refinerycms-pgsearch.gemspec
76
+ - spec/models/refinery/search_engine_spec.rb
77
+ - spec/spec_helper.rb
78
+ - tasks/rspec.rake
79
+ homepage: http://refinerycms.com
80
+ licenses: []
81
+ post_install_message:
82
+ rdoc_options: []
83
+ require_paths:
84
+ - lib
85
+ required_ruby_version: !ruby/object:Gem::Requirement
86
+ none: false
87
+ requirements:
88
+ - - ! '>='
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ required_rubygems_version: !ruby/object:Gem::Requirement
92
+ none: false
93
+ requirements:
94
+ - - ! '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ requirements: []
98
+ rubyforge_project:
99
+ rubygems_version: 1.8.24
100
+ signing_key:
101
+ specification_version: 3
102
+ summary: PostgreSQL search handling for Refinery CMS
103
+ test_files:
104
+ - spec/models/refinery/search_engine_spec.rb
105
+ - spec/spec_helper.rb
106
+ has_rdoc: