locomotivecms_builder 1.0.0.alpha2 → 1.0.0.alpha3

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -3,7 +3,6 @@
3
3
 
4
4
  require 'rubygems'
5
5
  require 'bundler/setup'
6
- require 'bundler/gem_tasks'
7
6
 
8
7
  require 'rake'
9
8
  require 'vcr'
@@ -3,9 +3,19 @@ module Locomotive
3
3
 
4
4
  class DefaultException < ::Exception
5
5
 
6
- def initialize(message = nil)
7
- # no specific treatment for now
8
- super
6
+ def initialize(message = nil, parent_exception = nil)
7
+ self.log_backtrace(parent_exception) if parent_exception
8
+
9
+ super(message)
10
+ end
11
+
12
+ protected
13
+
14
+ def log_backtrace(parent_exception)
15
+ full_error_message = "#{parent_exception.message}\n\t"
16
+ full_error_message += parent_exception.backtrace.join("\n\t")
17
+ full_error_message += "\n\n"
18
+ Locomotive::Builder::Logger.fatal full_error_message
9
19
  end
10
20
 
11
21
  end
@@ -30,7 +30,16 @@ module Locomotive::Builder
30
30
 
31
31
  def apply(definition)
32
32
  reloader = Proc.new do |modified, added, removed|
33
- reader.reload(definition.last)
33
+ resources = [*definition.last]
34
+ names = resources.map { |n| "\"#{n}\"" }.join(', ')
35
+
36
+ Locomotive::Builder::Logger.info "* Reloaded #{names} at #{Time.now}"
37
+
38
+ begin
39
+ reader.reload(resources)
40
+ rescue Exception => e
41
+ Locomotive::Builder::MounterException.new('Unable to reload', e)
42
+ end
34
43
  end
35
44
 
36
45
  filter = definition[1]
@@ -0,0 +1,54 @@
1
+ module Locomotive
2
+ module Builder
3
+
4
+ class Logger
5
+
6
+ attr_accessor :logger, :logfile_path, :stdout
7
+
8
+ def initialize
9
+ self.logger = nil
10
+ end
11
+
12
+ # Setup the single instance of the ruby logger.
13
+ #
14
+ # @param [ String ] path The path to the log file (default: log/builder.log)
15
+ # @param [ Boolean ] stdout Instead of having a file, log to the standard output
16
+ #
17
+ def setup(path, stdout = false)
18
+ require 'logger'
19
+
20
+ self.stdout = stdout
21
+
22
+ self.logfile_path = File.expand_path(File.join(path, 'log', 'builder.log'))
23
+ FileUtils.mkdir_p(File.dirname(logfile_path))
24
+
25
+ out = self.stdout ? STDOUT : self.logfile_path
26
+
27
+ self.logger = ::Logger.new(out).tap do |log|
28
+ log.level = ::Logger::DEBUG
29
+ log.formatter = proc do |severity, datetime, progname, msg|
30
+ "#{msg}\n"
31
+ end
32
+ end
33
+ end
34
+
35
+ def self.instance
36
+ @@instance ||= self.new
37
+ end
38
+
39
+ def self.setup(path, stdout = false)
40
+ self.instance.setup(path, stdout)
41
+ end
42
+
43
+ class << self
44
+ %w(debug info warn error fatal unknown).each do |name|
45
+ define_method(name) do |message|
46
+ self.instance.logger.send(name.to_sym, message)
47
+ end
48
+ end
49
+ end
50
+
51
+ end
52
+
53
+ end
54
+ end
@@ -65,15 +65,12 @@ module Locomotive
65
65
  c.url_format = '/images/dynamic/:job/:basename.:format'
66
66
  end
67
67
 
68
- puts 'Dragonfly enabled'
69
-
70
68
  self.instance.enabled = true
71
69
  rescue Exception => e
72
- puts %{
73
- \tIf you want to take full benefits of all the features in the LocomotiveEditor, we recommend you to install ImageMagick and RMagick.
74
- \tCheck out the documentation here: http://doc.locomotivecms.com/editor/installation.}
75
-
76
- puts 'Dragonfly disabled'
70
+ Locomotive::Builder::Logger.warn %{
71
+ [Dragonfly] !disabled!
72
+ [Dragonfly] If you want to take full benefits of all the features in the LocomotiveBuilder, we recommend you to install ImageMagick and RMagick. Check out the documentation here: http://doc.locomotivecms.com/editor/installation.
73
+ }
77
74
  end
78
75
  end
79
76
 
@@ -22,7 +22,7 @@ module Locomotive
22
22
 
23
23
  path ||= '/'
24
24
 
25
- # puts "[WebService] consuming #{path}, #{options.inspect}"
25
+ # Locomotive::Builder::Logger.debug "[WebService] consuming #{path}, #{options.inspect}"
26
26
 
27
27
  response = self.get(path, options)
28
28
 
@@ -34,8 +34,7 @@ module Locomotive
34
34
  _response.collect(&:underscore_keys)
35
35
  end
36
36
  else
37
- # TODO: handle errors
38
- puts "[Locomotive][Builder][Error] consuming #{path}, #{options.inspect}, response = #{response.inspect}"
37
+ Locomotive::Builder::Logger.error "[WebService] consumed #{path}, #{options.inspect}, response = #{response.inspect}"
39
38
  nil
40
39
  end
41
40
 
@@ -31,7 +31,7 @@ module Locomotive::Builder
31
31
  Locomotive::Mounter.locale = locale
32
32
  ::I18n.locale = locale
33
33
 
34
- puts "[Builder|Locale] path = #{self.path.inspect}, locale = #{locale.inspect}"
34
+ self.log "Detecting locale #{locale.upcase}"
35
35
 
36
36
  env['builder.locale'] = locale
37
37
  env['builder.path'] = self.path
@@ -0,0 +1,32 @@
1
+ module Locomotive::Builder
2
+ class Server
3
+
4
+ # Track the request into the current logger
5
+ #
6
+ class Logging < Middleware
7
+
8
+ def call(env)
9
+ now = Time.now
10
+
11
+ log "Started #{env['REQUEST_METHOD'].upcase} \"#{env['PATH_INFO']}\" at #{now}"
12
+
13
+ app.call(env).tap do |response|
14
+ done_in_ms = (Time.now - now) * 1000
15
+ log "Completed #{code_to_human(response.first)} in #{done_in_ms}ms\n\n"
16
+ end
17
+ end
18
+
19
+ protected
20
+
21
+ def code_to_human(code)
22
+ case code.to_i
23
+ when 200 then '200 OK'
24
+ when 301 then '301 Found'
25
+ when 302 then '302 Found'
26
+ when 404 then '404 Not Found'
27
+ end
28
+ end
29
+
30
+ end
31
+ end
32
+ end
@@ -44,8 +44,13 @@ module Locomotive::Builder
44
44
  self.request.content_type == 'application/json' || File.extname(self.request.path) == '.json'
45
45
  end
46
46
 
47
- def redirect_to(location)
48
- [301, { 'Content-Type' => 'text/html', 'Location' => location }, []]
47
+ def redirect_to(location, type = 301)
48
+ self.log "Redirected to #{location}"
49
+ [type, { 'Content-Type' => 'text/html', 'Location' => location }, []]
50
+ end
51
+
52
+ def log(msg)
53
+ Locomotive::Builder::Logger.info msg
49
54
  end
50
55
 
51
56
  end
@@ -7,6 +7,7 @@ module Locomotive::Builder
7
7
  self.set_accessors(env)
8
8
 
9
9
  if self.page.nil?
10
+ self.log "Page not found"
10
11
  env['builder.page'] = self.mounting_point.pages['404']
11
12
  end
12
13
 
@@ -19,7 +19,9 @@ module Locomotive::Builder
19
19
  def set_page!(env)
20
20
  page = self.fetch_page
21
21
 
22
- puts "[Builder|Page] #{page.inspect}"
22
+ if page
23
+ self.log "Found page \"#{page.title}\" [/#{page.inspect}]"
24
+ end
23
25
 
24
26
  env['builder.page'] = page
25
27
  end
@@ -6,12 +6,12 @@ module Locomotive::Builder
6
6
  def call(env)
7
7
  self.set_accessors(env)
8
8
 
9
- puts "[Builder|Renderer] page = #{page.inspect}"
10
-
11
9
  if self.page
12
10
  if self.page.redirect?
13
- [self.page.redirect_type, { 'Location' => self.page.redirect_url, 'Content-Type' => 'text/html' }, []]
11
+ self.redirect_to(self.page.redirect_url, self.page.redirect_type)
14
12
  else
13
+ self.log "Rendered liquid template"
14
+
15
15
  type = self.page.response_type || 'text/html'
16
16
  html = self.render
17
17
 
@@ -5,6 +5,7 @@ require 'locomotive/builder/listen'
5
5
  require 'locomotive/builder/server/middleware'
6
6
  require 'locomotive/builder/server/favicon'
7
7
  require 'locomotive/builder/server/dynamic_assets'
8
+ require 'locomotive/builder/server/logging'
8
9
  require 'locomotive/builder/server/entry_submission'
9
10
  require 'locomotive/builder/server/path'
10
11
  require 'locomotive/builder/server/locale'
@@ -60,6 +61,8 @@ module Locomotive::Builder
60
61
  use Favicon
61
62
  use DynamicAssets
62
63
 
64
+ use Logging
65
+
63
66
  use EntrySubmission
64
67
 
65
68
  use Path
@@ -1,5 +1,5 @@
1
1
  module Locomotive
2
2
  module Builder
3
- VERSION = '1.0.0.alpha2'
3
+ VERSION = '1.0.0.alpha3'
4
4
  end
5
5
  end
@@ -1,4 +1,5 @@
1
1
  require 'locomotive/builder/version'
2
+ require 'locomotive/builder/logger'
2
3
  require 'locomotive/builder/exceptions'
3
4
 
4
5
  module Locomotive
@@ -141,27 +142,22 @@ module Locomotive
141
142
  # @param [ Object ] An instance of the reader is the get_reader parameter has been set.
142
143
  #
143
144
  def self.require_mounter(path, get_reader = false)
144
- require 'locomotive/mounter'
145
+ Locomotive::Builder::Logger.setup(path, false)
145
146
 
146
- logfile = File.join(path, 'log', 'mounter.log')
147
- FileUtils.mkdir_p(File.dirname(logfile))
147
+ require 'locomotive/mounter'
148
148
 
149
- Locomotive::Mounter.logger = ::Logger.new(logfile).tap do |log|
150
- log.level = Logger::DEBUG
151
- end
149
+ Locomotive::Mounter.logger = Locomotive::Builder::Logger.instance.logger
152
150
 
153
- # begin
154
151
  if get_reader
155
- reader = Locomotive::Mounter::Reader::FileSystem.instance
156
- reader.run!(path: path)
157
- reader
152
+ begin
153
+ reader = Locomotive::Mounter::Reader::FileSystem.instance
154
+ reader.run!(path: path)
155
+ reader
156
+ rescue Exception => e
157
+ raise Locomotive::Builder::MounterException.new "Unable to read the local LocomotiveCMS site. Please check the logs.", e
158
+ end
158
159
  end
159
- # rescue Exception => e
160
- # Locomotive::Mounter.logger.error e.backtrace
161
- # raise Locomotive::Builder::MounterException.new "Unable to read the local LocomotiveCMS site: #{e.message}\nPlease check the logs file (#{path}/log/mounter.log)"
162
- # end if get_reader
163
160
  end
164
161
 
165
-
166
162
  end
167
163
  end
@@ -31,7 +31,7 @@ Gem::Specification.new do |gem|
31
31
  gem.add_dependency 'rmagick', '2.12.2'
32
32
  gem.add_dependency 'httmultiparty', '~> 0.3.8'
33
33
  gem.add_dependency 'will_paginate', '~> 3.0.3'
34
- gem.add_dependency 'locomotivecms_mounter', '1.0.0.alpha1'
34
+ gem.add_dependency 'locomotivecms_mounter', '1.0.0.alpha2'
35
35
 
36
36
  gem.add_dependency 'faker', '~> 0.9.5'
37
37
 
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: locomotivecms_builder
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease: 6
5
- version: 1.0.0.alpha2
5
+ version: 1.0.0.alpha3
6
6
  platform: ruby
7
7
  authors:
8
8
  - Didier Lafforgue
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-01-25 00:00:00.000000000 Z
13
+ date: 2013-01-28 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  type: :runtime
@@ -195,7 +195,7 @@ dependencies:
195
195
  requirements:
196
196
  - - '='
197
197
  - !ruby/object:Gem::Version
198
- version: 1.0.0.alpha1
198
+ version: 1.0.0.alpha2
199
199
  name: locomotivecms_mounter
200
200
  prerelease: false
201
201
  requirement: !ruby/object:Gem::Requirement
@@ -203,7 +203,7 @@ dependencies:
203
203
  requirements:
204
204
  - - '='
205
205
  - !ruby/object:Gem::Version
206
- version: 1.0.0.alpha1
206
+ version: 1.0.0.alpha2
207
207
  - !ruby/object:Gem::Dependency
208
208
  type: :runtime
209
209
  version_requirements: !ruby/object:Gem::Requirement
@@ -391,6 +391,7 @@ files:
391
391
  - lib/locomotive/builder/liquid/tags/snippet.rb
392
392
  - lib/locomotive/builder/liquid/tags/with_scope.rb
393
393
  - lib/locomotive/builder/listen.rb
394
+ - lib/locomotive/builder/logger.rb
394
395
  - lib/locomotive/builder/misc.rb
395
396
  - lib/locomotive/builder/misc/core_ext.rb
396
397
  - lib/locomotive/builder/misc/dragonfly.rb
@@ -402,6 +403,7 @@ files:
402
403
  - lib/locomotive/builder/server/entry_submission.rb
403
404
  - lib/locomotive/builder/server/favicon.rb
404
405
  - lib/locomotive/builder/server/locale.rb
406
+ - lib/locomotive/builder/server/logging.rb
405
407
  - lib/locomotive/builder/server/middleware.rb
406
408
  - lib/locomotive/builder/server/not_found.rb
407
409
  - lib/locomotive/builder/server/page.rb
@@ -442,7 +444,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
442
444
  - !ruby/object:Gem::Version
443
445
  segments:
444
446
  - 0
445
- hash: -3538862883379602338
447
+ hash: -1360444636888489867
446
448
  version: '0'
447
449
  required_rubygems_version: !ruby/object:Gem::Requirement
448
450
  none: false