scribbler 0.1.3 → 0.2.3

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.
@@ -64,7 +64,6 @@ module Scribbler
64
64
  class_eval(&block)
65
65
  Base.include_in_application
66
66
  BaseIncluder.include_includeables
67
- build_methods
68
67
  end
69
68
 
70
69
  # Simply returns the configurator class.
@@ -162,7 +161,7 @@ module Scribbler
162
161
  # Returns Nothing
163
162
  def self.apply_to_log(location, options={})
164
163
  if can_apply_to_log? location, options
165
- File.open(find_file_at(location), 'a') do |f|
164
+ File.open log_at(location), 'a' do |f|
166
165
  f.puts build_with_template(options)
167
166
  end
168
167
  end
@@ -176,33 +175,6 @@ module Scribbler
176
175
  options[:custom_fields].present?)
177
176
  end
178
177
 
179
- # Attempts to turn a symbol or string into the *_log_location method that
180
- # was auto-build based on Configurator.logs and finds the file path
181
- #
182
- # location - a string or symbol that will be turned into a *_log_location
183
- # method
184
- #
185
- # Examples
186
- #
187
- # Base.find_file_at :a_file
188
- # # => <#Path:...> # The method `a_file_log_location` exists
189
- #
190
- # Base.find_file_at :another_file
191
- # # => :another_file # The method `another_file_log_location` does not exist
192
- #
193
- # Returns Nothing
194
- def self.find_file_at(location)
195
- if location.is_a?(Symbol) or location.is_a?(String)
196
- real_method = location.to_s + "_log_location"
197
- if respond_to?(real_method)
198
- location = send(real_method)
199
- else
200
- location = "#{config.log_directory.to_s}/#{location.to_s}"
201
- end
202
- end
203
- location
204
- end
205
-
206
178
  # If the config agrees, attempt to include our special methods
207
179
  # in the main application object.
208
180
  #
@@ -22,20 +22,6 @@ module Scribbler
22
22
  end
23
23
  end
24
24
 
25
- # List of strings or symbols that represent logs we want methods
26
- # generated for
27
- #
28
- # Default: []
29
- #
30
- # Examples
31
- #
32
- # Scribbler::Configurator.logs
33
- # # => ['copy', 'destroy']
34
- #
35
- # Returns list of logs
36
- def self.logs
37
- @logs ||= []
38
- end
39
25
 
40
26
  # Boolean used for deciding whether or not Scribbler should
41
27
  # define #*_log_location methods and a .log method in a rails application
@@ -17,29 +17,32 @@ module Scribbler
17
17
 
18
18
  module Includeables
19
19
  extend ActiveSupport::Concern
20
+ module ClassMethods
21
+ def log_location_regex
22
+ /(?<file>.*)_log_location$/
23
+ end
20
24
 
21
- included do
22
- build_methods
23
- end
25
+ # Public: defines methods for log location. The first element
26
+ # defines the prefix for the method so "subseason" = subseason_log_location.
27
+ # The second element defines the name of the logfile so "subseason" =
28
+ # root_of_app/log/subseason.log
29
+ #
30
+ # Examples
31
+ #
32
+ # subseason_log_location
33
+ # # => #<Pathname:/path_to_ngin/log/subseason_copy_structure.log>
34
+ #
35
+ # Returns Pathname to log
36
+ def method_missing(name, *args, &block)
37
+ (match = name.to_s.match log_location_regex) ? log_at(match[:file]) : super
38
+ end
24
39
 
25
- module ClassMethods
26
- def build_methods
27
- # Public: defines methods for log location. The first element
28
- # defines the prefix for the method so "subseason" = subseason_log_location.
29
- # The second element defines the name of the logfile so "subseason" =
30
- # root_of_app/log/subseason.log
31
- #
32
- # Examples
33
- #
34
- # subseason_log_location
35
- # # => #<Pathname:/path_to_ngin/log/subseason_copy_structure.log>
36
- #
37
- # Returns Pathname to log
38
- Scribbler::Base.config.logs.each do |value|
39
- define_singleton_method "#{value}_log_location" do
40
- File.join Scribbler::Configurator.log_directory, "#{value}.log"
41
- end
42
- end
40
+ def respond_to?(name)
41
+ (m = name.to_s.match log_location_regex) ? !!m : super
42
+ end
43
+
44
+ def log_at(file_name)
45
+ File.join Scribbler::Configurator.log_directory, "#{file_name}.log"
43
46
  end
44
47
 
45
48
  # Public: Save ourselves some repetition. Notifies error to NewRelic
@@ -1,3 +1,3 @@
1
1
  module Scribbler
2
- VERSION = '0.1.3'
2
+ VERSION = '0.2.3'
3
3
  end
@@ -35,7 +35,6 @@ module Scribbler
35
35
  describe "configure" do
36
36
  it "kicks off the module and sends includes" do
37
37
  subject.should_receive(:include_in_application).once
38
- subject.should_receive(:build_methods).once # Twice if we didn't stub below method
39
38
  BaseIncluder.should_receive(:include_includeables).once
40
39
  subject.configure do
41
40
  end
@@ -124,32 +123,17 @@ module Scribbler
124
123
  options = { :message => "..." }
125
124
  file = mock(:puts => true)
126
125
  subject.should_receive(:build_with_template).with options
127
- subject.should_receive(:send).with "test_log_log_location"
126
+ subject.should_receive(:log_at).with :test_log
128
127
  File.should_receive(:open).and_yield(file)
129
128
  subject.apply_to_log :test_log, options
130
129
  end
131
- end
132
130
 
133
- describe "find file at" do
134
131
  it "doesn't find a file method" do
135
132
  # in case we have bad config data lingering
136
133
  subject.stub(:respond_to?).with('test_log_log_location').and_return false
137
134
  subject.should_not_receive(:test_log_log_location)
138
135
  Rails.should_receive(:root).and_raise(NameError)
139
- subject.find_file_at(:test_log).should == "#{subject.config.log_directory}/test_log"
140
- end
141
-
142
- it "finds a file method defined" do
143
- subject.configure do
144
- config.logs = %w[test_log]
145
- end
146
- subject.should_receive(:test_log_log_location).once
147
- subject.find_file_at :test_log
148
- end
149
-
150
- it "isn't a string or a symbol and just returns the input" do
151
- path = Pathname.new '/'
152
- subject.find_file_at(path).should be(path)
136
+ subject.log_at(:test_log).should == "#{subject.config.log_directory}/test_log.log"
153
137
  end
154
138
  end
155
139
  end
@@ -15,20 +15,6 @@ Scribbler::Base.configure do
15
15
  #
16
16
  # config.log_directory = File.new '/a/better/path'
17
17
  #
18
- #
19
- # A list of the logs you'd like location methods for. if the logs list
20
- # has:
21
- #
22
- # ['log1']
23
- #
24
- # You are afforded a Base.log1_log_location method and you may do:
25
- #
26
- # Base.log :log1, ....
27
- #
28
- # REQUIRED
29
- #
30
- # config.logs = %w[log1 log2]
31
- #
32
18
  # This option enables log templating. Each time you log a message you
33
19
  # can have it automatically wrapped in some sugar. The default is something
34
20
  # like:
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scribbler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-07-19 00:00:00.000000000 Z
12
+ date: 2012-08-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -140,7 +140,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
140
140
  version: '0'
141
141
  segments:
142
142
  - 0
143
- hash: -2034944693787141554
143
+ hash: -3735178954186904383
144
144
  required_rubygems_version: !ruby/object:Gem::Requirement
145
145
  none: false
146
146
  requirements:
@@ -149,7 +149,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
149
149
  version: '0'
150
150
  segments:
151
151
  - 0
152
- hash: -2034944693787141554
152
+ hash: -3735178954186904383
153
153
  requirements: []
154
154
  rubyforge_project:
155
155
  rubygems_version: 1.8.24