alchemy-pg_search 1.2.0 → 2.0.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.
- checksums.yaml +4 -4
- data/.travis.yml +8 -5
- data/CHANGELOG.md +5 -0
- data/Gemfile +10 -7
- data/README.md +4 -4
- data/alchemy-pg_search.gemspec +15 -15
- data/app/helpers/alchemy/pg_search/search_helper.rb +7 -7
- data/bin/rails +6 -6
- data/bin/rspec +29 -0
- data/db/migrate/20210923081905_move_searchable_to_contents.rb +41 -0
- data/lib/alchemy/pg_search/content_extension.rb +23 -24
- data/lib/alchemy/pg_search/element_extension.rb +29 -16
- data/lib/alchemy/pg_search/engine.rb +4 -10
- data/lib/alchemy/pg_search/page_extension.rb +31 -18
- data/lib/alchemy/pg_search/version.rb +1 -1
- data/lib/alchemy-pg_search.rb +2 -2
- metadata +25 -25
- data/lib/alchemy/pg_search/searchable.rb +0 -27
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0f7e0df77f37c90847ca65e06e9e857b1ce34c3967a5f4ad2b49b5b628a92216
|
4
|
+
data.tar.gz: f090bfccc9e38990d60047eaa41f7752ee6e96dbb9b80c7c7d0c747ab7296535
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e753341799782ba728dfffd808f0b8dfd3e4c224973858d6e04a0bcba28f234cff4f1bca64e7b74ef2f6f179523cfbc75df2824c3bab6fa2d09e31e59d836d7d
|
7
|
+
data.tar.gz: 612150eac4dba1e71277a325617ae84ae138eaec33b3ae7d330065255cd7f98a05f0094c508f5650f70edb981a716e664b919f43641f9a1dedfcaef1f39d5cd8
|
data/.travis.yml
CHANGED
@@ -1,10 +1,13 @@
|
|
1
1
|
sudo: false
|
2
2
|
language: ruby
|
3
3
|
rvm:
|
4
|
-
- 2.
|
5
|
-
|
4
|
+
- 2.5
|
5
|
+
services:
|
6
|
+
- postgresql
|
7
|
+
cache:
|
8
|
+
- bundler
|
6
9
|
branches:
|
7
10
|
only:
|
8
|
-
-
|
9
|
-
before_script:
|
10
|
-
script: rspec
|
11
|
+
- main
|
12
|
+
before_script: bundle exec rake alchemy:spec:prepare
|
13
|
+
script: bundle exec rspec
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
## 2.0.0 (2021-09-23)
|
2
|
+
|
3
|
+
- Move searchable attribute to contents table [#20](https://github.com/AlchemyCMS/alchemy-pg_search/pull/20) by [tvdeyen](https://github.com/tvdeyen)
|
4
|
+
- Support Alchemy 4.0 [#18](https://github.com/AlchemyCMS/alchemy-pg_search/pull/18) by [tvdeyen](https://github.com/tvdeyen)
|
5
|
+
|
1
6
|
## 1.2.0 (2018-11-28)
|
2
7
|
|
3
8
|
- Rename the #search method into #full_text_search [#14](https://github.com/AlchemyCMS/alchemy-pg_search/pull/14) by [tvdeyen](https://github.com/tvdeyen)
|
data/Gemfile
CHANGED
@@ -1,14 +1,17 @@
|
|
1
|
-
source
|
1
|
+
source "https://rubygems.org"
|
2
2
|
|
3
3
|
gemspec
|
4
4
|
|
5
|
-
gem
|
6
|
-
gem
|
7
|
-
gem
|
5
|
+
gem "rails", "~> 5.0.0"
|
6
|
+
gem "alchemy_cms", github: "AlchemyCMS/alchemy_cms", branch: "4.0-stable"
|
7
|
+
gem "sassc-rails"
|
8
|
+
gem "sassc", "< 2.2.0"
|
9
|
+
gem "pg", "< 1.0"
|
10
|
+
gem "puma"
|
8
11
|
|
9
12
|
group :test do
|
10
|
-
gem
|
13
|
+
gem "factory_bot_rails", "~> 4.8.0"
|
11
14
|
gem "capybara"
|
12
|
-
gem "pry"
|
13
|
-
gem
|
15
|
+
gem "pry-byebug"
|
16
|
+
gem "launchy"
|
14
17
|
end
|
data/README.md
CHANGED
@@ -1,15 +1,15 @@
|
|
1
|
-
[](https://travis-ci.org/AlchemyCMS/alchemy-pg_search)
|
2
2
|
|
3
3
|
# Alchemy CMS Postgresql Fulltext Search
|
4
4
|
|
5
|
-
This gem provides full text search for projects using postgresql databases to Alchemy CMS
|
5
|
+
This gem provides full text search for projects using postgresql databases to Alchemy CMS 4.0 and above.
|
6
6
|
|
7
7
|
## Installation
|
8
8
|
|
9
9
|
Add this line to your application's `Gemfile`:
|
10
10
|
|
11
11
|
```ruby
|
12
|
-
gem 'alchemy-pg_search', github: 'AlchemyCMS/alchemy-pg_search', branch: '
|
12
|
+
gem 'alchemy-pg_search', github: 'AlchemyCMS/alchemy-pg_search', branch: 'main'
|
13
13
|
```
|
14
14
|
|
15
15
|
And then execute:
|
@@ -120,7 +120,7 @@ en:
|
|
120
120
|
|
121
121
|
## Upgrading
|
122
122
|
|
123
|
-
If you are upgrading from an old Alchemy <
|
123
|
+
If you are upgrading from an old Alchemy < 4.0 based project that uses the ferret based full text search, please run this handy generator:
|
124
124
|
|
125
125
|
```shell
|
126
126
|
$ bin/rails g alchemy:pg_search:upgrade
|
data/alchemy-pg_search.gemspec
CHANGED
@@ -1,26 +1,26 @@
|
|
1
|
-
|
2
|
-
lib = File.expand_path('../lib', __FILE__)
|
1
|
+
lib = File.expand_path("../lib", __FILE__)
|
3
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
|
3
|
+
|
4
|
+
require "alchemy/pg_search/version"
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name
|
8
|
-
spec.version
|
9
|
-
spec.authors
|
10
|
-
spec.email
|
11
|
-
spec.description
|
12
|
-
spec.summary
|
13
|
-
spec.homepage
|
14
|
-
spec.license
|
7
|
+
spec.name = "alchemy-pg_search"
|
8
|
+
spec.version = Alchemy::PgSearch::VERSION
|
9
|
+
spec.authors = ["Thomas von Deyen"]
|
10
|
+
spec.email = ["thomas@vondeyen.com"]
|
11
|
+
spec.description = "PostgreSQL search for Alchemy CMS 4.0"
|
12
|
+
spec.summary = "This gem provides PostgreSQL full text search to Alchemy 4.0"
|
13
|
+
spec.homepage = "https://alchemy-cms.com"
|
14
|
+
spec.license = "BSD-3-Clause"
|
15
15
|
|
16
|
-
spec.files
|
16
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^spec/}) }
|
17
17
|
spec.require_paths = ["lib"]
|
18
18
|
|
19
|
-
spec.add_runtime_dependency "alchemy_cms", ["
|
20
|
-
spec.add_runtime_dependency "pg_search", ["~>
|
19
|
+
spec.add_runtime_dependency "alchemy_cms", [">= 4.0", "< 5.0"]
|
20
|
+
spec.add_runtime_dependency "pg_search", ["~> 2.1"]
|
21
21
|
spec.add_runtime_dependency "pg"
|
22
22
|
|
23
|
-
spec.add_development_dependency "bundler"
|
23
|
+
spec.add_development_dependency "bundler"
|
24
24
|
spec.add_development_dependency "rake"
|
25
25
|
spec.add_development_dependency "rspec-rails"
|
26
26
|
end
|
@@ -23,13 +23,13 @@ module Alchemy
|
|
23
23
|
# @option options class [String] (fulltext_search) The default css class of the form
|
24
24
|
# @option options id [String] (search) The default css id of the form
|
25
25
|
#
|
26
|
-
def render_search_form(options={})
|
26
|
+
def render_search_form(options = {})
|
27
27
|
default_options = {
|
28
28
|
html5: false,
|
29
|
-
class:
|
30
|
-
id:
|
29
|
+
class: "fulltext_search",
|
30
|
+
id: "search",
|
31
31
|
}
|
32
|
-
render
|
32
|
+
render "alchemy/search/form", options: default_options.merge(options), search_result_page: search_result_page
|
33
33
|
end
|
34
34
|
|
35
35
|
# Renders the search results partial within +app/views/alchemy/search/_results.html+
|
@@ -37,12 +37,12 @@ module Alchemy
|
|
37
37
|
# @option options show_result_count [Boolean] (true) Should the count of results be displayed or not?
|
38
38
|
# @option options show_heading [Boolean] (true) Should the heading be displayed or not?
|
39
39
|
#
|
40
|
-
def render_search_results(options={})
|
40
|
+
def render_search_results(options = {})
|
41
41
|
default_options = {
|
42
42
|
show_result_count: true,
|
43
|
-
show_heading: true
|
43
|
+
show_heading: true,
|
44
44
|
}
|
45
|
-
render
|
45
|
+
render "alchemy/search/results", options: default_options.merge(options)
|
46
46
|
end
|
47
47
|
|
48
48
|
def highlighted_excerpt(text, phrase, radius = 50)
|
data/bin/rails
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
# This command will automatically be run when you run "rails" with Rails 4 gems installed from the root of your application.
|
3
3
|
|
4
|
-
ENGINE_ROOT = File.expand_path(
|
5
|
-
ENGINE_PATH = File.expand_path(
|
4
|
+
ENGINE_ROOT = File.expand_path("../..", __FILE__)
|
5
|
+
ENGINE_PATH = File.expand_path("../../lib/alchemy/pg_search/engine", __FILE__)
|
6
6
|
|
7
7
|
# Set up gems listed in the Gemfile.
|
8
|
-
ENV[
|
9
|
-
require
|
8
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", __FILE__)
|
9
|
+
require "bundler/setup" if File.exist?(ENV["BUNDLE_GEMFILE"])
|
10
10
|
|
11
|
-
require
|
12
|
-
require
|
11
|
+
require "rails/all"
|
12
|
+
require "rails/engine/commands"
|
data/bin/rspec
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# This file was generated by Bundler.
|
6
|
+
#
|
7
|
+
# The application 'rspec' is installed as part of a gem, and
|
8
|
+
# this file is here to facilitate running it.
|
9
|
+
#
|
10
|
+
|
11
|
+
require "pathname"
|
12
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
13
|
+
Pathname.new(__FILE__).realpath)
|
14
|
+
|
15
|
+
bundle_binstub = File.expand_path("../bundle", __FILE__)
|
16
|
+
|
17
|
+
if File.file?(bundle_binstub)
|
18
|
+
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
|
19
|
+
load(bundle_binstub)
|
20
|
+
else
|
21
|
+
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
22
|
+
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
require "rubygems"
|
27
|
+
require "bundler/setup"
|
28
|
+
|
29
|
+
load Gem.bin_path("rspec-core", "rspec")
|
@@ -0,0 +1,41 @@
|
|
1
|
+
class MoveSearchableToContents < ActiveRecord::Migration[5.0]
|
2
|
+
def change
|
3
|
+
add_column :alchemy_contents, :searchable, :boolean, default: true
|
4
|
+
|
5
|
+
{
|
6
|
+
Text: "texts",
|
7
|
+
Richtext: "richtexts",
|
8
|
+
Picture: "pictures",
|
9
|
+
}.each do |klass, table|
|
10
|
+
reversible do |dir|
|
11
|
+
dir.up do
|
12
|
+
Alchemy::Content.connection.execute <<~SQL
|
13
|
+
UPDATE alchemy_contents
|
14
|
+
SET searchable = alchemy_essence_#{table}.searchable
|
15
|
+
FROM alchemy_essence_#{table}
|
16
|
+
WHERE
|
17
|
+
alchemy_contents.essence_type = 'Alchemy::Essence#{klass}'
|
18
|
+
AND
|
19
|
+
alchemy_contents.essence_id = alchemy_essence_#{table}.id
|
20
|
+
SQL
|
21
|
+
end
|
22
|
+
|
23
|
+
dir.down do
|
24
|
+
Alchemy::Content.connection.execute <<~SQL
|
25
|
+
UPDATE alchemy_essence_#{table}
|
26
|
+
SET searchable = alchemy_contents.searchable
|
27
|
+
FROM alchemy_contents
|
28
|
+
WHERE
|
29
|
+
alchemy_contents.essence_type = 'Alchemy::Essence#{klass}'
|
30
|
+
AND
|
31
|
+
alchemy_contents.essence_id = alchemy_essence_#{table}.id
|
32
|
+
SQL
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
remove_column "alchemy_essence_#{table}", :searchable, default: true
|
37
|
+
end
|
38
|
+
|
39
|
+
change_column_null :alchemy_contents, :searchable, false, true
|
40
|
+
end
|
41
|
+
end
|
@@ -1,30 +1,29 @@
|
|
1
|
-
Alchemy::
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
def prepared_attributes_for_essence
|
9
|
-
attributes = {
|
10
|
-
ingredient: default_text(definition['default'])
|
11
|
-
}
|
12
|
-
if Alchemy::PgSearch.is_searchable_essence?(definition['type'])
|
13
|
-
attributes.merge!(searchable: definition.fetch('searchable', true))
|
1
|
+
module Alchemy::PgSearch::ContentExtension
|
2
|
+
module ClassMethods
|
3
|
+
def build(element, essence_hash)
|
4
|
+
definition = content_definition(element, essence_hash)
|
5
|
+
super.tap do |content|
|
6
|
+
content.searchable = definition.key?(:searchable) ? definition[:searchable] : true
|
7
|
+
end
|
14
8
|
end
|
15
|
-
|
9
|
+
|
10
|
+
Alchemy::Content.singleton_class.prepend self
|
16
11
|
end
|
17
12
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
13
|
+
module InstanceMethods
|
14
|
+
def searchable_ingredient
|
15
|
+
case essence_type
|
16
|
+
when "Alchemy::EssencePicture"
|
17
|
+
essence.caption
|
18
|
+
when "Alchemy::EssenceRichtext"
|
19
|
+
essence.stripped_body
|
20
|
+
when "Alchemy::EssenceText"
|
21
|
+
essence.body
|
22
|
+
else
|
23
|
+
ingredient
|
24
|
+
end
|
28
25
|
end
|
26
|
+
|
27
|
+
Alchemy::Content.prepend self
|
29
28
|
end
|
30
29
|
end
|
@@ -1,40 +1,53 @@
|
|
1
1
|
Alchemy::Element.class_eval do
|
2
|
-
include PgSearch
|
2
|
+
include PgSearch::Model
|
3
3
|
|
4
4
|
pg_search_scope :full_text_search,
|
5
5
|
associated_against: {
|
6
|
-
searchable_essence_texts:
|
6
|
+
searchable_essence_texts: :body,
|
7
7
|
searchable_essence_richtexts: :stripped_body,
|
8
|
-
searchable_essence_pictures:
|
8
|
+
searchable_essence_pictures: :caption,
|
9
9
|
},
|
10
10
|
using: {
|
11
|
-
tsearch: {prefix: true}
|
11
|
+
tsearch: { prefix: true },
|
12
12
|
}
|
13
13
|
|
14
14
|
has_many :searchable_essence_texts,
|
15
|
-
-> {
|
16
|
-
|
17
|
-
|
15
|
+
-> {
|
16
|
+
includes(:element)
|
17
|
+
.where(alchemy_contents: { searchable: true })
|
18
|
+
.where(alchemy_elements: { public: true })
|
19
|
+
},
|
20
|
+
class_name: "Alchemy::EssenceText",
|
21
|
+
source_type: "Alchemy::EssenceText",
|
18
22
|
through: :contents,
|
19
23
|
source: :essence
|
20
24
|
|
21
25
|
has_many :searchable_essence_richtexts,
|
22
|
-
-> {
|
23
|
-
|
24
|
-
|
26
|
+
-> {
|
27
|
+
includes(:element)
|
28
|
+
.where(alchemy_contents: { searchable: true })
|
29
|
+
.where(alchemy_elements: { public: true })
|
30
|
+
},
|
31
|
+
class_name: "Alchemy::EssenceRichtext",
|
32
|
+
source_type: "Alchemy::EssenceRichtext",
|
25
33
|
through: :contents,
|
26
34
|
source: :essence
|
27
35
|
|
28
36
|
has_many :searchable_essence_pictures,
|
29
|
-
-> {
|
30
|
-
|
31
|
-
|
37
|
+
-> {
|
38
|
+
includes(:element)
|
39
|
+
.where(alchemy_contents: { searchable: true })
|
40
|
+
.where(alchemy_elements: { public: true })
|
41
|
+
},
|
42
|
+
class_name: "Alchemy::EssencePicture",
|
43
|
+
source_type: "Alchemy::EssencePicture",
|
32
44
|
through: :contents,
|
33
45
|
source: :essence
|
34
46
|
|
35
47
|
has_many :searchable_contents,
|
36
|
-
-> {
|
37
|
-
|
48
|
+
-> {
|
49
|
+
where(essence_type: Alchemy::PgSearch::SEARCHABLE_ESSENCES.map { |k| "Alchemy::#{k}" })
|
50
|
+
},
|
51
|
+
class_name: "Alchemy::Content",
|
38
52
|
source: :contents
|
39
|
-
|
40
53
|
end
|
@@ -1,25 +1,19 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require "alchemy_cms"
|
2
|
+
require "pg_search"
|
3
3
|
|
4
4
|
module Alchemy
|
5
5
|
module PgSearch
|
6
6
|
class Engine < ::Rails::Engine
|
7
|
-
engine_name
|
7
|
+
engine_name "alchemy_pg_search"
|
8
8
|
|
9
9
|
config.to_prepare do
|
10
10
|
require_relative "./content_extension"
|
11
|
-
require_relative
|
11
|
+
require_relative "./controller_methods"
|
12
12
|
require_relative "./element_extension"
|
13
13
|
require_relative "./page_extension"
|
14
|
-
require_relative './searchable'
|
15
14
|
|
16
15
|
# We need to have the search methods present in all Alchemy controllers
|
17
16
|
Alchemy::BaseController.send(:include, Alchemy::PgSearch::ControllerMethods)
|
18
|
-
|
19
|
-
# Inject searchable attribute persistence into searchable essence classes
|
20
|
-
Alchemy::PgSearch.searchable_essence_classes.each do |klass|
|
21
|
-
klass.send(:include, Alchemy::PgSearch::Searchable)
|
22
|
-
end
|
23
17
|
end
|
24
18
|
end
|
25
19
|
end
|
@@ -1,41 +1,54 @@
|
|
1
1
|
Alchemy::Page.class_eval do
|
2
|
-
include PgSearch
|
2
|
+
include PgSearch::Model
|
3
3
|
|
4
4
|
# Enable Postgresql full text indexing.
|
5
5
|
#
|
6
|
-
pg_search_scope :full_text_search,
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
6
|
+
pg_search_scope :full_text_search,
|
7
|
+
against: {
|
8
|
+
meta_description: "B",
|
9
|
+
meta_keywords: "B",
|
10
|
+
title: "B",
|
11
|
+
name: "A",
|
11
12
|
},
|
12
13
|
associated_against: {
|
13
|
-
searchable_essence_texts:
|
14
|
+
searchable_essence_texts: :body,
|
14
15
|
searchable_essence_richtexts: :stripped_body,
|
15
|
-
searchable_essence_pictures:
|
16
|
+
searchable_essence_pictures: :caption,
|
16
17
|
},
|
17
18
|
using: {
|
18
|
-
tsearch: {prefix: true}
|
19
|
+
tsearch: { prefix: true },
|
19
20
|
}
|
20
21
|
|
21
22
|
has_many :searchable_essence_texts,
|
22
|
-
-> {
|
23
|
-
|
24
|
-
|
23
|
+
-> {
|
24
|
+
includes(:element)
|
25
|
+
.where(alchemy_contents: { searchable: true })
|
26
|
+
.where(alchemy_elements: { public: true })
|
27
|
+
},
|
28
|
+
class_name: "Alchemy::EssenceText",
|
29
|
+
source_type: "Alchemy::EssenceText",
|
25
30
|
through: :descendent_contents,
|
26
31
|
source: :essence
|
27
32
|
|
28
33
|
has_many :searchable_essence_richtexts,
|
29
|
-
-> {
|
30
|
-
|
31
|
-
|
34
|
+
-> {
|
35
|
+
includes(:element)
|
36
|
+
.where(alchemy_contents: { searchable: true })
|
37
|
+
.where(alchemy_elements: { public: true })
|
38
|
+
},
|
39
|
+
class_name: "Alchemy::EssenceRichtext",
|
40
|
+
source_type: "Alchemy::EssenceRichtext",
|
32
41
|
through: :descendent_contents,
|
33
42
|
source: :essence
|
34
43
|
|
35
44
|
has_many :searchable_essence_pictures,
|
36
|
-
-> {
|
37
|
-
|
38
|
-
|
45
|
+
-> {
|
46
|
+
includes(:element)
|
47
|
+
.where(alchemy_contents: { searchable: true })
|
48
|
+
.where(alchemy_elements: { public: true })
|
49
|
+
},
|
50
|
+
class_name: "Alchemy::EssencePicture",
|
51
|
+
source_type: "Alchemy::EssencePicture",
|
39
52
|
through: :descendent_contents,
|
40
53
|
source: :essence
|
41
54
|
|
data/lib/alchemy-pg_search.rb
CHANGED
@@ -4,9 +4,9 @@ require "alchemy/pg_search/page_search_scope"
|
|
4
4
|
|
5
5
|
module Alchemy
|
6
6
|
module PgSearch
|
7
|
-
SEARCHABLE_ESSENCES = %w
|
7
|
+
SEARCHABLE_ESSENCES = %w[EssenceText EssenceRichtext EssencePicture]
|
8
8
|
DEFAULT_CONFIG = {
|
9
|
-
page_search_scope: PageSearchScope.new
|
9
|
+
page_search_scope: PageSearchScope.new,
|
10
10
|
}
|
11
11
|
|
12
12
|
extend Config
|
metadata
CHANGED
@@ -1,49 +1,49 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: alchemy-pg_search
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thomas von Deyen
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-09-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: alchemy_cms
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '4.0'
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: '
|
22
|
+
version: '5.0'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
|
-
- - "
|
27
|
+
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: '
|
29
|
+
version: '4.0'
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: '
|
32
|
+
version: '5.0'
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: pg_search
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
37
|
- - "~>"
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version: '
|
39
|
+
version: '2.1'
|
40
40
|
type: :runtime
|
41
41
|
prerelease: false
|
42
42
|
version_requirements: !ruby/object:Gem::Requirement
|
43
43
|
requirements:
|
44
44
|
- - "~>"
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version: '
|
46
|
+
version: '2.1'
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: pg
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
@@ -62,16 +62,16 @@ dependencies:
|
|
62
62
|
name: bundler
|
63
63
|
requirement: !ruby/object:Gem::Requirement
|
64
64
|
requirements:
|
65
|
-
- - "
|
65
|
+
- - ">="
|
66
66
|
- !ruby/object:Gem::Version
|
67
|
-
version: '
|
67
|
+
version: '0'
|
68
68
|
type: :development
|
69
69
|
prerelease: false
|
70
70
|
version_requirements: !ruby/object:Gem::Requirement
|
71
71
|
requirements:
|
72
|
-
- - "
|
72
|
+
- - ">="
|
73
73
|
- !ruby/object:Gem::Version
|
74
|
-
version: '
|
74
|
+
version: '0'
|
75
75
|
- !ruby/object:Gem::Dependency
|
76
76
|
name: rake
|
77
77
|
requirement: !ruby/object:Gem::Requirement
|
@@ -100,9 +100,9 @@ dependencies:
|
|
100
100
|
- - ">="
|
101
101
|
- !ruby/object:Gem::Version
|
102
102
|
version: '0'
|
103
|
-
description: PostgreSQL search for Alchemy CMS
|
103
|
+
description: PostgreSQL search for Alchemy CMS 4.0
|
104
104
|
email:
|
105
|
-
-
|
105
|
+
- thomas@vondeyen.com
|
106
106
|
executables: []
|
107
107
|
extensions: []
|
108
108
|
extra_rdoc_files: []
|
@@ -120,11 +120,13 @@ files:
|
|
120
120
|
- app/views/alchemy/search/_result.html.erb
|
121
121
|
- app/views/alchemy/search/_results.html.erb
|
122
122
|
- bin/rails
|
123
|
+
- bin/rspec
|
123
124
|
- config/locales/alchemy.search.de.yml
|
124
125
|
- config/locales/alchemy.search.en.yml
|
125
126
|
- db/migrate/20141211105526_add_searchable_to_alchemy_essence_texts.rb
|
126
127
|
- db/migrate/20141211105942_add_searchable_to_alchemy_essence_richtexts.rb
|
127
128
|
- db/migrate/20141211110126_add_searchable_to_alchemy_essence_pictures.rb
|
129
|
+
- db/migrate/20210923081905_move_searchable_to_contents.rb
|
128
130
|
- lib/alchemy-pg_search.rb
|
129
131
|
- lib/alchemy/pg_search/config.rb
|
130
132
|
- lib/alchemy/pg_search/content_extension.rb
|
@@ -133,17 +135,16 @@ files:
|
|
133
135
|
- lib/alchemy/pg_search/engine.rb
|
134
136
|
- lib/alchemy/pg_search/page_extension.rb
|
135
137
|
- lib/alchemy/pg_search/page_search_scope.rb
|
136
|
-
- lib/alchemy/pg_search/searchable.rb
|
137
138
|
- lib/alchemy/pg_search/version.rb
|
138
139
|
- lib/generators/alchemy/pg_search/upgrade/templates/migration.rb.tt
|
139
140
|
- lib/generators/alchemy/pg_search/upgrade/upgrade_generator.rb
|
140
141
|
- lib/generators/alchemy/pg_search/views/views_generator.rb
|
141
142
|
- lib/tasks/alchemy/pg_search_tasks.rake
|
142
|
-
homepage:
|
143
|
+
homepage: https://alchemy-cms.com
|
143
144
|
licenses:
|
144
|
-
- BSD
|
145
|
+
- BSD-3-Clause
|
145
146
|
metadata: {}
|
146
|
-
post_install_message:
|
147
|
+
post_install_message:
|
147
148
|
rdoc_options: []
|
148
149
|
require_paths:
|
149
150
|
- lib
|
@@ -158,9 +159,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
158
159
|
- !ruby/object:Gem::Version
|
159
160
|
version: '0'
|
160
161
|
requirements: []
|
161
|
-
|
162
|
-
|
163
|
-
signing_key:
|
162
|
+
rubygems_version: 3.2.27
|
163
|
+
signing_key:
|
164
164
|
specification_version: 4
|
165
|
-
summary: This gem provides PostgreSQL full text search to Alchemy
|
165
|
+
summary: This gem provides PostgreSQL full text search to Alchemy 4.0
|
166
166
|
test_files: []
|
@@ -1,27 +0,0 @@
|
|
1
|
-
module Alchemy
|
2
|
-
module PgSearch
|
3
|
-
|
4
|
-
# Ensures that the current content definition value for +searchable+ gets persisted.
|
5
|
-
#
|
6
|
-
# It is enabled per default, but you can disable indexing in your +elements.yml+ file.
|
7
|
-
#
|
8
|
-
# === Example
|
9
|
-
#
|
10
|
-
# name: secrets
|
11
|
-
# contents:
|
12
|
-
# - name: confidential
|
13
|
-
# type: EssenceRichtext
|
14
|
-
# searchable: false
|
15
|
-
#
|
16
|
-
module Searchable
|
17
|
-
extend ActiveSupport::Concern
|
18
|
-
|
19
|
-
included do
|
20
|
-
before_update do
|
21
|
-
write_attribute(:searchable, definition.fetch('searchable', true))
|
22
|
-
true
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|