visitors 0.0.8 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/config.yml CHANGED
@@ -6,11 +6,9 @@ fields:
6
6
  - similar
7
7
 
8
8
  development:
9
- redis_namespace: visitors_development
10
- redis_config:
11
- host: localhost
9
+ :redis_namespace: visitors_development
10
+ :redis_config:
11
+ :host: localhost
12
12
 
13
- uat:
14
- redis_namespace: visitors_development
15
- redis_config:
16
- host: qa.touchlocal.com
13
+ production:
14
+ :disabled: true
@@ -1,5 +1,7 @@
1
1
  $:.push File.expand_path('..', __FILE__)
2
+ require 'bundler/setup'
2
3
  require 'visitors/helpers'
4
+ require 'visitors/core_ext/hash'
3
5
 
4
6
  module Visitors
5
7
  extend self
@@ -7,15 +9,21 @@ module Visitors
7
9
  autoload :Config, 'visitors/config'
8
10
  autoload :Resource, 'visitors/resource'
9
11
 
12
+ def env
13
+ ENV['RAILS_ENV'] || ENV['VISITORS_ENV'] || 'development'
14
+ end
15
+
10
16
  def config
11
17
  @config ||= Config.load
12
18
  end
13
19
 
14
20
  def find(id)
21
+ return if Visitors.config.disabled
15
22
  Resource.find(id)
16
23
  end
17
24
 
18
25
  def increment(id, field)
26
+ return if Visitors.config.disabled
19
27
  Resource.new(id).increment(field)
20
28
  end
21
29
  end
@@ -3,6 +3,12 @@ require 'yaml'
3
3
  class Visitors::Config
4
4
  class MissingEnvironmentError < StandardError; end
5
5
 
6
+ DEFAULTS = {
7
+ :redis_namespace => "visitors_#{Visitors.env}",
8
+ :redis_connection => {:host => '127.0.0.1'},
9
+ :disabled => false
10
+ }
11
+
6
12
  def self.load
7
13
  new.tap { |instance| instance.send(:define_methods_from_yaml) }
8
14
  end
@@ -12,8 +18,8 @@ class Visitors::Config
12
18
  end
13
19
 
14
20
  def all
15
- return yaml[env] if yaml[env]
16
- raise MissingEnvironmentError, "#{env.inspect} environment not configured"
21
+ return yaml[Visitors.env] if yaml[Visitors.env]
22
+ raise MissingEnvironmentError, "#{Visitors.env.inspect} environment not configured"
17
23
  end
18
24
 
19
25
  def inspect
@@ -32,12 +38,8 @@ class Visitors::Config
32
38
  end
33
39
  end
34
40
 
35
- def env
36
- ENV['RAILS_ENV'] || ENV['VISITORS_ENV'] || 'development'
37
- end
38
-
39
41
  def define_methods_from_yaml
40
- all.each do |key, value|
42
+ DEFAULTS.deep_merge(all).each do |key, value|
41
43
  self.class.send(:define_method, key) { value }
42
44
  end
43
45
  end
@@ -0,0 +1,21 @@
1
+ class Hash
2
+ if instance_methods.include?(:deep_merge)
3
+ warn 'Hash#deep_merge already defined!'
4
+ else
5
+ def deep_merge(other_hash)
6
+ dup.deep_merge!(other_hash)
7
+ end
8
+ end
9
+
10
+ if instance_methods.include?(:deep_merge!)
11
+ warn 'Hash#deep_merge! already defined!'
12
+ else
13
+ def deep_merge!(other_hash)
14
+ other_hash.each_pair do |k,v|
15
+ tv = self[k]
16
+ self[k] = tv.is_a?(Hash) && v.is_a?(Hash) ? tv.deep_merge(v) : v
17
+ end
18
+ self
19
+ end
20
+ end
21
+ end
@@ -1,3 +1,3 @@
1
1
  module Visitors
2
- VERSION = '0.0.8'
2
+ VERSION = '0.1.0'
3
3
  end
@@ -3,15 +3,17 @@ require 'spec_helper'
3
3
  describe Visitors::Config do
4
4
  describe '#all' do
5
5
  it 'uses the config.yml file to return a hash of configuration information' do
6
+ Visitors.stub!(:env => 'development')
6
7
  File.stub!(:expand_path => '/path/to/config.yml')
8
+
7
9
  YAML.should_receive(:load_file).with('/path/to/config.yml').and_return('development' => {})
8
10
  Visitors::Config.load.all
9
11
  end
10
12
 
11
13
  it 'raises when an environment is not defined' do
12
14
  expect {
13
- YAML.stub!(:load_file => {})
14
- Visitors::Config.load.all
15
+ YAML.stub!(:load_file => {})
16
+ Visitors::Config.load.all
15
17
  }.to raise_error(Visitors::Config::MissingEnvironmentError)
16
18
  end
17
19
  end
File without changes
@@ -1,4 +1,23 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Visitors do
4
+ describe '#find' do
5
+ context 'with a disabled environment' do
6
+ it 'returns immediately' do
7
+ Visitors.config.stub!(:disabled => true)
8
+ Visitors::Resource.should_not_receive(:find)
9
+ Visitors.find(1).should be_nil
10
+ end
11
+ end
12
+ end
13
+
14
+ describe '#increment' do
15
+ context 'with a disabled environment' do
16
+ it 'returns immediately' do
17
+ Visitors.config.stub!(:disabled => true)
18
+ Visitors::Resource.should_not_receive(:new)
19
+ Visitors.increment(1, :show).should be_nil
20
+ end
21
+ end
22
+ end
4
23
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: visitors
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.8
5
+ version: 0.1.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - James Conroy-Finn
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-03-09 00:00:00 +00:00
13
+ date: 2011-03-15 00:00:00 +00:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -144,6 +144,7 @@ files:
144
144
  - config.yml
145
145
  - lib/visitors.rb
146
146
  - lib/visitors/config.rb
147
+ - lib/visitors/core_ext/hash.rb
147
148
  - lib/visitors/helpers.rb
148
149
  - lib/visitors/resource.rb
149
150
  - lib/visitors/version.rb
@@ -155,6 +156,7 @@ files:
155
156
  - server.rb
156
157
  - spec/spec_helper.rb
157
158
  - spec/visitors/config_spec.rb
159
+ - spec/visitors/helpers_spec.rb
158
160
  - spec/visitors/resource_spec.rb
159
161
  - spec/visitors_spec.rb
160
162
  - views/_form.haml
@@ -194,5 +196,6 @@ summary: All-in-one fast logging system for your Rails application
194
196
  test_files:
195
197
  - spec/spec_helper.rb
196
198
  - spec/visitors/config_spec.rb
199
+ - spec/visitors/helpers_spec.rb
197
200
  - spec/visitors/resource_spec.rb
198
201
  - spec/visitors_spec.rb