lipsiadmin 5.1.6 → 5.1.7
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/lib/access_control/authentication.rb +20 -20
- data/lib/access_control/base.rb +40 -40
- data/lib/controller/ext.rb +27 -27
- data/lib/controller/lipsiadmin_controller.rb +3 -3
- data/lib/controller/pdf_builder.rb +33 -31
- data/lib/controller/rescue.rb +12 -12
- data/lib/controller/responds_to_parent.rb +5 -5
- data/lib/data_base/attachment.rb +60 -60
- data/lib/data_base/attachment/attach.rb +18 -18
- data/lib/data_base/attachment/geometry.rb +7 -7
- data/lib/data_base/attachment/iostream.rb +1 -1
- data/lib/data_base/attachment/processor.rb +2 -2
- data/lib/data_base/attachment/storage.rb +11 -11
- data/lib/data_base/attachment/thumbnail.rb +2 -2
- data/lib/data_base/attachment_table.rb +27 -27
- data/lib/data_base/translate_attributes.rb +9 -9
- data/lib/data_base/utility_scopes.rb +7 -7
- data/lib/data_base/without_table.rb +10 -10
- data/lib/generator.rb +4 -4
- data/lib/loops.rb +77 -77
- data/lib/loops/base.rb +2 -2
- data/lib/loops/daemonize.rb +5 -5
- data/lib/loops/process_manager.rb +3 -3
- data/lib/loops/worker.rb +1 -1
- data/lib/loops/worker_pool.rb +1 -1
- data/lib/mailer/exception_notifier.rb +5 -5
- data/lib/mailer/pdf_builder.rb +20 -18
- data/lib/utils/literal.rb +6 -6
- data/lib/utils/pdf_builder.rb +10 -10
- data/lib/version.rb +1 -1
- data/lib/view/helpers/backend_helper.rb +123 -123
- data/lib/view/helpers/ext/button.rb +7 -7
- data/lib/view/helpers/ext/column_model.rb +18 -18
- data/lib/view/helpers/ext/component.rb +50 -50
- data/lib/view/helpers/ext/configuration.rb +5 -5
- data/lib/view/helpers/ext/grid.rb +46 -46
- data/lib/view/helpers/ext/store.rb +14 -14
- data/lib/view/helpers/ext/tool_bar.rb +6 -6
- data/lib/view/helpers/ext_helper.rb +21 -21
- data/lib/view/helpers/frontend_helper.rb +5 -5
- data/lib/view/helpers/pdf_helper.rb +7 -7
- data/lib/view/helpers/view_helper.rb +28 -28
- data/lipsiadmin_generators/attachment/attachment_generator.rb +7 -7
- data/lipsiadmin_generators/attachment/templates/controller.rb +13 -13
- data/lipsiadmin_generators/attachment/templates/migration.rb +1 -1
- data/lipsiadmin_generators/backend/backend_generator.rb +9 -9
- data/lipsiadmin_generators/backend/templates/controllers/backend/accounts_controller.rb +10 -10
- data/lipsiadmin_generators/backend/templates/controllers/backend/sessions_controller.rb +2 -2
- data/lipsiadmin_generators/backend/templates/controllers/javascripts_controller.rb +2 -2
- data/lipsiadmin_generators/backend/templates/migrations/create_accounts.rb +5 -5
- data/lipsiadmin_generators/backend/templates/models/account.rb +16 -16
- data/lipsiadmin_generators/backend/templates/models/account_access.rb +11 -11
- data/lipsiadmin_generators/backend/templates/models/notifier.rb +2 -2
- data/lipsiadmin_generators/backend_page/backend_page_generator.rb +22 -22
- data/lipsiadmin_generators/backend_page/templates/controller.rb +9 -9
- data/lipsiadmin_generators/backend_page/templates/functional_test.rb +10 -10
- data/lipsiadmin_generators/frontend/frontend_generator.rb +5 -5
- data/lipsiadmin_generators/frontend/templates/controllers/frontend/sessions_controller.rb +3 -3
- data/lipsiadmin_generators/loops/loops_generator.rb +2 -2
- data/lipsiadmin_generators/pdf/pdf_generator.rb +7 -7
- data/lipsiadmin_generators/state_session/state_session_generator.rb +9 -9
- data/lipsiadmin_generators/state_session/templates/controller.rb +2 -2
- data/lipsiadmin_generators/state_session/templates/migration.rb +2 -2
- data/resources/rdoc/horo.rb +3 -3
- metadata +4 -4
@@ -2,30 +2,30 @@ module Lipsiadmin
|
|
2
2
|
module DataBase
|
3
3
|
# This class create a *fake* table that can be usefull if you need for example
|
4
4
|
# perform validations. Take a look to this test case:
|
5
|
-
#
|
5
|
+
#
|
6
6
|
# Examples:
|
7
|
-
#
|
7
|
+
#
|
8
8
|
# class Contact < Lipsiadmin::DataBase::WithoutTable
|
9
9
|
# column :name, :string
|
10
10
|
# column :company, :string
|
11
11
|
# column :telephone, :string
|
12
12
|
# column :email, :string
|
13
13
|
# column :message, :text
|
14
|
-
#
|
14
|
+
#
|
15
15
|
# validates_presence_of :name, :message
|
16
16
|
# validates_format_of :email, :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i
|
17
17
|
# end
|
18
|
-
#
|
18
|
+
#
|
19
19
|
# Now we need to validate a contact, and if the validations is okey send an email or if not raise errors
|
20
|
-
#
|
20
|
+
#
|
21
21
|
# @contact = Contact.new(params[:contact])
|
22
|
-
# if @contact.valid?
|
22
|
+
# if @contact.valid?
|
23
23
|
# Notifier.deliver_support_request(@contact)
|
24
24
|
# else
|
25
25
|
# flash[:notice] = "There are some problems"
|
26
26
|
# render :action => :support_request
|
27
27
|
# end
|
28
|
-
#
|
28
|
+
#
|
29
29
|
class WithoutTable < ActiveRecord::Base
|
30
30
|
self.abstract_class = true
|
31
31
|
|
@@ -38,13 +38,13 @@ module Lipsiadmin
|
|
38
38
|
def columns()
|
39
39
|
@columns ||= []
|
40
40
|
end
|
41
|
-
|
41
|
+
|
42
42
|
# Define columns for a this *fake* table
|
43
43
|
def column(name, sql_type = nil, default = nil, null = true)
|
44
44
|
columns << ActiveRecord::ConnectionAdapters::Column.new(name.to_s, default, sql_type.to_s, null)
|
45
45
|
reset_column_information
|
46
46
|
end
|
47
|
-
|
47
|
+
|
48
48
|
# Resets all the cached information about columns, which will cause them to be reloaded on the next request.
|
49
49
|
def reset_column_information
|
50
50
|
generated_methods.each { |name| undef_method(name) }
|
@@ -53,4 +53,4 @@ module Lipsiadmin
|
|
53
53
|
end
|
54
54
|
end
|
55
55
|
end
|
56
|
-
end
|
56
|
+
end
|
data/lib/generator.rb
CHANGED
@@ -11,7 +11,7 @@ module Lipsiadmin#:nodoc:
|
|
11
11
|
alias_method_chain :use_component_sources!, :lipsiadmin
|
12
12
|
end
|
13
13
|
end
|
14
|
-
|
14
|
+
|
15
15
|
# Append my sources
|
16
16
|
def use_component_sources_with_lipsiadmin!
|
17
17
|
use_component_sources_without_lipsiadmin!
|
@@ -38,7 +38,7 @@ module Lipsiadmin#:nodoc:
|
|
38
38
|
"public/images/",
|
39
39
|
"public/javascripts/",
|
40
40
|
"public/stylesheet/"]
|
41
|
-
|
41
|
+
|
42
42
|
def with_source_in(path)
|
43
43
|
root = source_path(path)
|
44
44
|
Find.find(root) do |f|
|
@@ -63,7 +63,7 @@ module Lipsiadmin#:nodoc:
|
|
63
63
|
# Need to do this for remove all directories
|
64
64
|
directories.each { |d| directory(d) unless PROTECTED_DIRS.include?(d) }
|
65
65
|
end
|
66
|
-
|
66
|
+
|
67
67
|
private
|
68
68
|
def render_template_part(template_options)
|
69
69
|
# Getting Sandbox to evaluate part template in it
|
@@ -89,7 +89,7 @@ module Lipsiadmin#:nodoc:
|
|
89
89
|
end
|
90
90
|
end
|
91
91
|
end # Module Create
|
92
|
-
|
92
|
+
|
93
93
|
module Create#:nodoc:
|
94
94
|
include Base
|
95
95
|
|
data/lib/loops.rb
CHANGED
@@ -1,54 +1,54 @@
|
|
1
1
|
require 'yaml'
|
2
2
|
|
3
3
|
module Lipsiadmin
|
4
|
-
|
4
|
+
|
5
5
|
# ==Simple background loops framework for rails
|
6
|
-
#
|
7
|
-
# Loops is a small and lightweight framework for Ruby on Rails created to support simple
|
8
|
-
# background loops in your application which are usually used to do some background data processing
|
6
|
+
#
|
7
|
+
# Loops is a small and lightweight framework for Ruby on Rails created to support simple
|
8
|
+
# background loops in your application which are usually used to do some background data processing
|
9
9
|
# on your servers (queue workers, batch tasks processors, etc).
|
10
|
-
#
|
10
|
+
#
|
11
11
|
# Authors:: Alexey Kovyrin and Dmytro Shteflyuk
|
12
12
|
# Comments:: This plugin has been created in Scribd.com for internal use.
|
13
|
-
#
|
13
|
+
#
|
14
14
|
# == What tasks could you use it for?
|
15
|
-
#
|
16
|
-
# Originally loops plugin was created to make our own loops code more organized. We used to have tens
|
17
|
-
# of different modules with methods that were called with script/runner and then used with nohup and
|
18
|
-
# other not so convenient backgrounding techniques. When you have such a number of loops/workers to
|
19
|
-
# run in background it becomes a nightmare to manage them on a regular basis (restarts, code upgrades,
|
15
|
+
#
|
16
|
+
# Originally loops plugin was created to make our own loops code more organized. We used to have tens
|
17
|
+
# of different modules with methods that were called with script/runner and then used with nohup and
|
18
|
+
# other not so convenient backgrounding techniques. When you have such a number of loops/workers to
|
19
|
+
# run in background it becomes a nightmare to manage them on a regular basis (restarts, code upgrades,
|
20
20
|
# status/health checking, etc).
|
21
|
-
#
|
22
|
-
# After a short time of writing our loops in more organized ways we were able to generalize most of the
|
23
|
-
# loops code so now our loops look like a classes with a single mandatory public method called *run*.
|
24
|
-
# Everything else (spawning many workers, managing them, logging, backgrounding, pid-files management,
|
21
|
+
#
|
22
|
+
# After a short time of writing our loops in more organized ways we were able to generalize most of the
|
23
|
+
# loops code so now our loops look like a classes with a single mandatory public method called *run*.
|
24
|
+
# Everything else (spawning many workers, managing them, logging, backgrounding, pid-files management,
|
25
25
|
# etc) is handled by the plugin it
|
26
|
-
#
|
27
|
-
#
|
26
|
+
#
|
27
|
+
#
|
28
28
|
# == But there are dozens of libraries like this! Why do we need one more?
|
29
|
-
#
|
30
|
-
# The major idea behind this small project was to create a deadly simple and yet robust framework to
|
31
|
-
# be able to run some tasks in background and do not think about spawning many workers, restarting
|
32
|
-
# them when they die, etc. So, if you need to be able to run either one or many copies of your worker or
|
33
|
-
# you do not want to think about re-spawning dead workers and do not want to spend megabytes of RAM on
|
34
|
-
# separate copies of Ruby interpreter (when you run each copy of your loop as a separate process
|
29
|
+
#
|
30
|
+
# The major idea behind this small project was to create a deadly simple and yet robust framework to
|
31
|
+
# be able to run some tasks in background and do not think about spawning many workers, restarting
|
32
|
+
# them when they die, etc. So, if you need to be able to run either one or many copies of your worker or
|
33
|
+
# you do not want to think about re-spawning dead workers and do not want to spend megabytes of RAM on
|
34
|
+
# separate copies of Ruby interpreter (when you run each copy of your loop as a separate process
|
35
35
|
# controlled by monit/god/etc), then I'd recommend you to try this framework -- you'd like it.
|
36
|
-
#
|
37
|
-
#
|
36
|
+
#
|
37
|
+
#
|
38
38
|
# == How to use?
|
39
|
-
#
|
40
|
-
# Generate binary and configuration files by running
|
41
|
-
#
|
42
|
-
# script/generate loops
|
43
|
-
#
|
39
|
+
#
|
40
|
+
# Generate binary and configuration files by running
|
41
|
+
#
|
42
|
+
# script/generate loops
|
43
|
+
#
|
44
44
|
# This will create the following list of files:
|
45
|
-
#
|
45
|
+
#
|
46
46
|
# script/loops # binary file that will be used to manage your loops
|
47
47
|
# config/loops.yml # example configuration file
|
48
48
|
# app/loops/simple.rb # REALLY simple loop example
|
49
|
-
#
|
49
|
+
#
|
50
50
|
# Here is a simple loop scaffold for you to start from (put this file to app/loops/hello_world_loop.rb):
|
51
|
-
#
|
51
|
+
#
|
52
52
|
# class HelloWorldLoop < Lipsiadmin::Loops::Base
|
53
53
|
# def run
|
54
54
|
# debug("Hello, debug log!")
|
@@ -56,73 +56,73 @@ module Lipsiadmin
|
|
56
56
|
# debug("Hello, debug log (yes, once again)!")
|
57
57
|
# end
|
58
58
|
# end
|
59
|
-
#
|
60
|
-
# When you have your loop ready to use, add the following lines to your (maybe empty yet) config/loops.yml
|
59
|
+
#
|
60
|
+
# When you have your loop ready to use, add the following lines to your (maybe empty yet) config/loops.yml
|
61
61
|
# file:
|
62
|
-
#
|
62
|
+
#
|
63
63
|
# hello_world:
|
64
64
|
# sleep_period: 10
|
65
|
-
#
|
65
|
+
#
|
66
66
|
# This is it! To start your loop, just run one of the following commands:
|
67
|
-
#
|
67
|
+
#
|
68
68
|
# # Generates: list all configured loops:
|
69
69
|
# $ script/loops -L
|
70
|
-
#
|
70
|
+
#
|
71
71
|
# # Generates: run all enabled (actually non-disabled) loops in foreground:
|
72
72
|
# $ script/loops -a
|
73
|
-
#
|
73
|
+
#
|
74
74
|
# # Generates: run all enabled loops in background:
|
75
75
|
# $ script/loops -d -a
|
76
|
-
#
|
76
|
+
#
|
77
77
|
# # Generates: run specific loop in background:
|
78
78
|
# $ ./script/loops -d -l hello_world
|
79
|
-
#
|
79
|
+
#
|
80
80
|
# # Generates: all possible options:
|
81
81
|
# $ ./script/loops -h
|
82
|
-
#
|
83
|
-
#
|
82
|
+
#
|
83
|
+
#
|
84
84
|
# == How to run more than one worker?
|
85
|
-
#
|
86
|
-
# If you want to have more than one copy of your worker running, that is as simple as adding one
|
85
|
+
#
|
86
|
+
# If you want to have more than one copy of your worker running, that is as simple as adding one
|
87
87
|
# option to your loop configuration:
|
88
|
-
#
|
88
|
+
#
|
89
89
|
# hello_world:
|
90
90
|
# sleep_period: 10
|
91
|
-
# workers_number: 1
|
92
|
-
#
|
93
|
-
# This _workers_number_ option would say loops manager to spawn more than one copy of your loop
|
94
|
-
# and run them in parallel. The only thing you'd need to do is to think about concurrent work of
|
95
|
-
# your loops. For example, if you have some kind of database table with elements you need to
|
91
|
+
# workers_number: 1
|
92
|
+
#
|
93
|
+
# This _workers_number_ option would say loops manager to spawn more than one copy of your loop
|
94
|
+
# and run them in parallel. The only thing you'd need to do is to think about concurrent work of
|
95
|
+
# your loops. For example, if you have some kind of database table with elements you need to
|
96
96
|
# process, you can create a simple database-based locks system or use any memcache-based locks.
|
97
|
-
#
|
98
|
-
#
|
97
|
+
#
|
98
|
+
#
|
99
99
|
# == There is this <tt>workers_engine</tt> option in config file. What it could be used for?
|
100
|
-
#
|
101
|
-
# There are two so called "workers engines" in this plugin: <tt>fork</tt> and <tt>thread</tt>. They're used
|
102
|
-
# to control the way process manager would spawn new loops workers: with <tt>fork</tt> engine we'll
|
103
|
-
# load all loops classes and then fork ruby interpreter as many times as many workers we need.
|
104
|
-
# With <tt>thread</tt> engine we'd do Thread.new instead of forks. Thread engine could be useful if you
|
105
|
-
# are sure your loop won't lock ruby interpreter (it does not do native calls, etc) or if you
|
100
|
+
#
|
101
|
+
# There are two so called "workers engines" in this plugin: <tt>fork</tt> and <tt>thread</tt>. They're used
|
102
|
+
# to control the way process manager would spawn new loops workers: with <tt>fork</tt> engine we'll
|
103
|
+
# load all loops classes and then fork ruby interpreter as many times as many workers we need.
|
104
|
+
# With <tt>thread</tt> engine we'd do Thread.new instead of forks. Thread engine could be useful if you
|
105
|
+
# are sure your loop won't lock ruby interpreter (it does not do native calls, etc) or if you
|
106
106
|
# use some interpreter that does not support forks (like jruby).
|
107
|
-
#
|
107
|
+
#
|
108
108
|
# Default engine is <tt>fork</tt>.
|
109
|
-
#
|
110
|
-
#
|
109
|
+
#
|
110
|
+
#
|
111
111
|
# == What Ruby implementations does it work for?
|
112
|
-
#
|
113
|
-
# We've tested and used the plugin on MRI 1.8.6 and on JRuby 1.1.5. At this point we do not support
|
114
|
-
# demonization in JRuby and never tested the code on Ruby 1.9. Obviously because of JVM limitations
|
112
|
+
#
|
113
|
+
# We've tested and used the plugin on MRI 1.8.6 and on JRuby 1.1.5. At this point we do not support
|
114
|
+
# demonization in JRuby and never tested the code on Ruby 1.9. Obviously because of JVM limitations
|
115
115
|
# you won't be able to use +fork+ workers engine in JRuby, but threaded workers do pretty well.
|
116
116
|
#
|
117
117
|
module Loops
|
118
|
-
|
118
|
+
|
119
119
|
class << self
|
120
|
-
|
120
|
+
|
121
121
|
# Set/Return the main config
|
122
122
|
def config
|
123
123
|
@@config
|
124
124
|
end
|
125
|
-
|
125
|
+
|
126
126
|
# Set/Return the loops config
|
127
127
|
def loops_config
|
128
128
|
@@loops_config
|
@@ -132,7 +132,7 @@ module Lipsiadmin
|
|
132
132
|
def global_config
|
133
133
|
@@global_config
|
134
134
|
end
|
135
|
-
|
135
|
+
|
136
136
|
# Load the yml config file, default config/loops.yml
|
137
137
|
def load_config(file)
|
138
138
|
@@config = YAML.load_file(file)
|
@@ -141,7 +141,7 @@ module Lipsiadmin
|
|
141
141
|
|
142
142
|
@@logger = create_logger('global', global_config)
|
143
143
|
end
|
144
|
-
|
144
|
+
|
145
145
|
# Start loops, default :all
|
146
146
|
def start_loops!(loops_to_start = :all)
|
147
147
|
@@running_loops = []
|
@@ -154,7 +154,7 @@ module Lipsiadmin
|
|
154
154
|
klass = load_loop_class(name)
|
155
155
|
next unless klass
|
156
156
|
|
157
|
-
start_loop(name, klass, config)
|
157
|
+
start_loop(name, klass, config)
|
158
158
|
@@running_loops << name
|
159
159
|
end
|
160
160
|
|
@@ -184,7 +184,7 @@ module Lipsiadmin
|
|
184
184
|
|
185
185
|
def load_loop_class(name)
|
186
186
|
begin
|
187
|
-
klass_file = LOOPS_ROOT + "/app/loops/#{name}.rb"
|
187
|
+
klass_file = LOOPS_ROOT + "/app/loops/#{name}.rb"
|
188
188
|
debug "Loading class file: #{klass_file}"
|
189
189
|
require(klass_file)
|
190
190
|
rescue Exception
|
@@ -253,12 +253,12 @@ module Lipsiadmin
|
|
253
253
|
@@pm.stop_workers!
|
254
254
|
}
|
255
255
|
|
256
|
-
trap('INT') {
|
256
|
+
trap('INT') {
|
257
257
|
warn "Received an INT signal... stopping..."
|
258
258
|
@@pm.stop_workers!
|
259
259
|
}
|
260
260
|
|
261
|
-
trap('EXIT') {
|
261
|
+
trap('EXIT') {
|
262
262
|
warn "Received a EXIT 'signal'... stopping..."
|
263
263
|
@@pm.stop_workers!
|
264
264
|
}
|
@@ -268,10 +268,10 @@ module Lipsiadmin
|
|
268
268
|
ActiveRecord::Base.clear_active_connections!
|
269
269
|
ActiveRecord::Base.verify_active_connections!
|
270
270
|
end
|
271
|
-
|
271
|
+
|
272
272
|
end
|
273
273
|
end
|
274
274
|
end
|
275
275
|
|
276
276
|
require 'loops/process_manager'
|
277
|
-
require 'loops/base'
|
277
|
+
require 'loops/base'
|
data/lib/loops/base.rb
CHANGED
@@ -12,7 +12,7 @@ module Lipsiadmin
|
|
12
12
|
#
|
13
13
|
class Base#:nodoc:
|
14
14
|
attr_accessor :name, :config, :logger
|
15
|
-
|
15
|
+
|
16
16
|
# The initialize method, default we pass the logger
|
17
17
|
def initialize(logger)
|
18
18
|
self.logger = logger
|
@@ -49,4 +49,4 @@ module Lipsiadmin
|
|
49
49
|
end
|
50
50
|
end
|
51
51
|
end
|
52
|
-
end
|
52
|
+
end
|
data/lib/loops/daemonize.rb
CHANGED
@@ -2,8 +2,8 @@ module Lipsiadmin
|
|
2
2
|
module Loops
|
3
3
|
module Daemonize#:nodoc:
|
4
4
|
def self.read_pid(pid_file)
|
5
|
-
File.open(pid_file) do |f|
|
6
|
-
f.gets.to_i
|
5
|
+
File.open(pid_file) do |f|
|
6
|
+
f.gets.to_i
|
7
7
|
end
|
8
8
|
rescue Errno::ENOENT
|
9
9
|
0
|
@@ -15,7 +15,7 @@ module Lipsiadmin
|
|
15
15
|
if defined?(::JRuby)
|
16
16
|
system "kill -0 #{pid} &> /dev/null"
|
17
17
|
return $? == 0
|
18
|
-
else
|
18
|
+
else
|
19
19
|
Process.kill(0, pid)
|
20
20
|
end
|
21
21
|
true
|
@@ -66,7 +66,7 @@ module Lipsiadmin
|
|
66
66
|
File.umask(0000) # Insure sensible umask
|
67
67
|
|
68
68
|
return sess_id
|
69
|
-
end
|
69
|
+
end
|
70
70
|
end
|
71
71
|
end
|
72
|
-
end
|
72
|
+
end
|
@@ -38,7 +38,7 @@ module Lipsiadmin
|
|
38
38
|
|
39
39
|
break if @shutdown
|
40
40
|
logger.debug("Sleeping for #{@config['poll_period']} seconds...")
|
41
|
-
sleep(@config['poll_period'])
|
41
|
+
sleep(@config['poll_period'])
|
42
42
|
end
|
43
43
|
ensure
|
44
44
|
unless wait_for_workers(10)
|
@@ -70,7 +70,7 @@ module Lipsiadmin
|
|
70
70
|
|
71
71
|
logger.debug("#{running_total} workers are still running! Sleeping for a second...")
|
72
72
|
sleep(1)
|
73
|
-
end
|
73
|
+
end
|
74
74
|
|
75
75
|
return false
|
76
76
|
end
|
@@ -98,4 +98,4 @@ module Lipsiadmin
|
|
98
98
|
end
|
99
99
|
end
|
100
100
|
end
|
101
|
-
end
|
101
|
+
end
|
data/lib/loops/worker.rb
CHANGED
data/lib/loops/worker_pool.rb
CHANGED
@@ -18,14 +18,14 @@ module Lipsiadmin
|
|
18
18
|
|
19
19
|
@@email_prefix = "[ERROR] "
|
20
20
|
cattr_accessor :email_prefix
|
21
|
-
|
21
|
+
|
22
22
|
self.mailer_name = "exception"
|
23
23
|
self.template_root = "#{File.dirname(__FILE__)}"
|
24
24
|
|
25
25
|
def self.reloadable?#:nodoc:
|
26
|
-
false
|
26
|
+
false
|
27
27
|
end
|
28
|
-
|
28
|
+
|
29
29
|
# This method deliver the exception for the given controller and request
|
30
30
|
def exception(exception, controller, request)
|
31
31
|
content_type "text/plain"
|
@@ -41,6 +41,6 @@ module Lipsiadmin
|
|
41
41
|
end
|
42
42
|
|
43
43
|
end
|
44
|
-
|
44
|
+
|
45
45
|
end
|
46
|
-
end
|
46
|
+
end
|