carload 0.4.1 → 0.4.2
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/app/controllers/carload/dashboard_controller.rb +6 -1
- data/app/views/layouts/carload/dashboard.html.erb +1 -1
- data/lib/carload/engine.rb +48 -32
- data/lib/carload/exceptions.rb +6 -0
- data/lib/carload/version.rb +1 -1
- data/lib/carload.rb +10 -1
- data/lib/generators/carload/install_generator.rb +10 -4
- data/lib/generators/carload/templates/carload.rb +3 -0
- metadata +30 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a049222076a6d7c860613fca9fdcb808f9d3a1fd
|
4
|
+
data.tar.gz: 027d10be270a76dce7187702c936139d6bec61ea
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eceb767f554ce9e7cc34b543764485beb0dcc925a70aae2eea3ebdf2d17688e3518a1f2c0083d3dbdc827b370d113314ce47bb78e7a10846cafeadcd6b6615b4
|
7
|
+
data.tar.gz: 2421d62bdd80071fb5bd7f41e13829b125d286f4c4315c54f8db465293e82cb614b67e24647cca9d582dfb27277ab86a83edc282474c7dd378972e0b8ebef63b
|
@@ -17,7 +17,12 @@ module Carload
|
|
17
17
|
authorize :carload_dashboard, :index? unless Carload.auth_solution == :none
|
18
18
|
if params[:search].present?
|
19
19
|
@query = params[:search][:query]
|
20
|
-
|
20
|
+
case Carload.search_engine
|
21
|
+
when :elasticsearch
|
22
|
+
@objects = @model_class.search(params[:search][:query]).records.page(params[:page])
|
23
|
+
when :pg_search
|
24
|
+
@objects = @model_class.search(params[:search][:query]).page(params[:page])
|
25
|
+
end
|
21
26
|
else
|
22
27
|
@objects = @model_class.page(params[:page])
|
23
28
|
end
|
@@ -12,7 +12,7 @@
|
|
12
12
|
<div id='main-container'>
|
13
13
|
<div id='top-nav-buttons' class='center'>
|
14
14
|
<div class='btn-group' role='group'>
|
15
|
-
<%= link_to t('carload.action.back_to_root'), main_app.root_path, class: 'btn btn-default' %>
|
15
|
+
<%= link_to t('carload.action.back_to_root'), (main_app.root_path rescue root_path), class: 'btn btn-default' %>
|
16
16
|
<% Dashboard.models.keys.each do |model| %>
|
17
17
|
<%= link_to t("activerecord.models.#{model}"), dashboard_index_path(model),
|
18
18
|
class: "#{@model_name == model ? 'active' : ''} btn btn-default" %>
|
data/lib/carload/engine.rb
CHANGED
@@ -18,41 +18,57 @@ module Carload
|
|
18
18
|
end
|
19
19
|
end
|
20
20
|
# Reopen model classes to add pg text search.
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
using: {
|
33
|
-
tsearch: {
|
34
|
-
prefix: true,
|
35
|
-
negation: true,
|
36
|
-
dictionary: Dictionaries[I18n.locale]
|
37
|
-
}
|
38
|
-
}
|
39
|
-
end
|
40
|
-
end
|
41
|
-
# Reopen model classes to handle polymorphic association.
|
42
|
-
Dashboard.models.each do |name, spec|
|
43
|
-
spec.associated_models.values.select { |x| x[:polymorphic] == true }.each do |associated_model|
|
44
|
-
polymorphic_objects = []
|
45
|
-
associated_model[:instance_models].each do |instance_model|
|
46
|
-
Dashboard.model(instance_model).klass.all.each do |object|
|
47
|
-
polymorphic_objects << ["#{object.class} - #{object.send(associated_model[:choose_by])}", "#{object.id},#{object.class}"]
|
48
|
-
end
|
21
|
+
case Carload.search_engine
|
22
|
+
when :elasticsearch
|
23
|
+
Dashboard.models.each do |name, spec|
|
24
|
+
spec.klass.class_eval do
|
25
|
+
include Elasticsearch::Model
|
26
|
+
include Elasticsearch::Model::Callbacks
|
27
|
+
|
28
|
+
self.__elasticsearch__.client.indices.delete index: self.index_name rescue nil
|
29
|
+
self.__elasticsearch__.client.indices.create \
|
30
|
+
index: self.index_name,
|
31
|
+
body: { settings: self.settings.to_hash, mappings: self.mappings.to_hash }
|
49
32
|
end
|
33
|
+
spec.klass.import
|
34
|
+
end
|
35
|
+
when :pg_search
|
36
|
+
Dictionaries = {
|
37
|
+
en: 'english',
|
38
|
+
:'zh-CN' => 'zhparser'
|
39
|
+
}.freeze
|
40
|
+
Dashboard.models.each do |name, spec|
|
41
|
+
# NOTE: Only direct columns are included.
|
42
|
+
attributes = spec.index_page.searches.attributes.select { |x| x[:name].class == Symbol }.map { |x| x[:name] }
|
50
43
|
spec.klass.class_eval do
|
51
|
-
|
52
|
-
|
53
|
-
|
44
|
+
include PgSearch
|
45
|
+
pg_search_scope :search,
|
46
|
+
against: attributes,
|
47
|
+
using: {
|
48
|
+
tsearch: {
|
49
|
+
prefix: true,
|
50
|
+
negation: true,
|
51
|
+
dictionary: Dictionaries[I18n.locale]
|
52
|
+
}
|
53
|
+
}
|
54
|
+
end
|
55
|
+
end
|
56
|
+
# Reopen model classes to handle polymorphic association.
|
57
|
+
Dashboard.models.each do |name, spec|
|
58
|
+
spec.associated_models.values.select { |x| x[:polymorphic] == true }.each do |associated_model|
|
59
|
+
polymorphic_objects = []
|
60
|
+
associated_model[:instance_models].each do |instance_model|
|
61
|
+
Dashboard.model(instance_model).klass.all.each do |object|
|
62
|
+
polymorphic_objects << ["#{object.class} - #{object.send(associated_model[:choose_by])}", "#{object.id},#{object.class}"]
|
54
63
|
end
|
55
|
-
|
64
|
+
end
|
65
|
+
spec.klass.class_eval do
|
66
|
+
class_eval <<-RUBY
|
67
|
+
def self.#{associated_model[:name].to_s.pluralize}
|
68
|
+
#{polymorphic_objects}
|
69
|
+
end
|
70
|
+
RUBY
|
71
|
+
end
|
56
72
|
end
|
57
73
|
end
|
58
74
|
end
|
data/lib/carload/exceptions.rb
CHANGED
data/lib/carload/version.rb
CHANGED
data/lib/carload.rb
CHANGED
@@ -1,6 +1,11 @@
|
|
1
1
|
# Require all dependencies (Rails does not do this for us in default).
|
2
2
|
Gem.loaded_specs['carload'].dependencies.each do |dependency|
|
3
|
-
|
3
|
+
begin
|
4
|
+
require dependency.name
|
5
|
+
rescue LoadError
|
6
|
+
# For elasticsearch-model and elasticsearch-rails
|
7
|
+
require dependency.name.gsub('-', '/')
|
8
|
+
end
|
4
9
|
end
|
5
10
|
|
6
11
|
require 'carload/extended_hash'
|
@@ -24,6 +29,10 @@ module Carload
|
|
24
29
|
if not [:carrierwave].include? @@config[:upload_solution]
|
25
30
|
raise UnsupportedError.new("upload solution #{@@config[:upload_solution]}")
|
26
31
|
end
|
32
|
+
@@config[:search_engine] ||= :elasticsearch
|
33
|
+
if not [:elasticsearch, :pg_search].include? @@config[:search_engine]
|
34
|
+
raise UnsupportedError.new("search engine #{@@config[:search_engine]}")
|
35
|
+
end
|
27
36
|
# Define configuation helpers.
|
28
37
|
@@config.each do |key, value|
|
29
38
|
define_singleton_method key do
|
@@ -29,10 +29,16 @@ require 'carload'
|
|
29
29
|
|
30
30
|
def copy_migration_files
|
31
31
|
# Copy migrations if necessary.
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
32
|
+
if Carload.search_engine == :pg_search
|
33
|
+
adapter = ActiveRecord::Base.connection.instance_values["config"][:adapter]
|
34
|
+
if adapter != 'postgresql'
|
35
|
+
raise InvalidError.new("Database adapter #{adapter} cannot work with pg_search!")
|
36
|
+
end
|
37
|
+
case I18n.locale
|
38
|
+
when :'zh-CN'
|
39
|
+
['20161030074822_carload_enable_zhparser_extension.rb'].each do |file|
|
40
|
+
copy_file "#{Carload::Engine.root}/db/migrate/#{file}", "db/migrate/#{file}"
|
41
|
+
end
|
36
42
|
end
|
37
43
|
end
|
38
44
|
end
|
@@ -17,6 +17,9 @@ Carload.setup do |config|
|
|
17
17
|
# Set which file upload solution is used. Currently, we only support Carrierwave.
|
18
18
|
config.upload_solution = :carrierwave
|
19
19
|
|
20
|
+
# Set which search engine to use (elasticsearch or pg_search).
|
21
|
+
config.search_engine = :elasticsearch
|
22
|
+
|
20
23
|
# Set the actions used to discern user's permission to access dashboard.
|
21
24
|
#
|
22
25
|
# config.dashboard.permits_user.<method> = '...'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: carload
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Li Dong
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-11-
|
11
|
+
date: 2016-11-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -142,6 +142,34 @@ dependencies:
|
|
142
142
|
- - "~>"
|
143
143
|
- !ruby/object:Gem::Version
|
144
144
|
version: '1.0'
|
145
|
+
- !ruby/object:Gem::Dependency
|
146
|
+
name: elasticsearch-model
|
147
|
+
requirement: !ruby/object:Gem::Requirement
|
148
|
+
requirements:
|
149
|
+
- - "~>"
|
150
|
+
- !ruby/object:Gem::Version
|
151
|
+
version: '0.1'
|
152
|
+
type: :runtime
|
153
|
+
prerelease: false
|
154
|
+
version_requirements: !ruby/object:Gem::Requirement
|
155
|
+
requirements:
|
156
|
+
- - "~>"
|
157
|
+
- !ruby/object:Gem::Version
|
158
|
+
version: '0.1'
|
159
|
+
- !ruby/object:Gem::Dependency
|
160
|
+
name: elasticsearch-rails
|
161
|
+
requirement: !ruby/object:Gem::Requirement
|
162
|
+
requirements:
|
163
|
+
- - "~>"
|
164
|
+
- !ruby/object:Gem::Version
|
165
|
+
version: '0.1'
|
166
|
+
type: :runtime
|
167
|
+
prerelease: false
|
168
|
+
version_requirements: !ruby/object:Gem::Requirement
|
169
|
+
requirements:
|
170
|
+
- - "~>"
|
171
|
+
- !ruby/object:Gem::Version
|
172
|
+
version: '0.1'
|
145
173
|
- !ruby/object:Gem::Dependency
|
146
174
|
name: kaminari
|
147
175
|
requirement: !ruby/object:Gem::Requirement
|