cloudsearchable 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -23,12 +23,16 @@ Gem::Specification.new do |spec|
23
23
  "cloudsearchable.gemspec",
24
24
  "lib/cloudsearchable.rb",
25
25
  "lib/cloudsearchable/cloud_search.rb",
26
+ "lib/cloudsearchable/config.rb",
27
+ "lib/cloudsearchable/config/options.rb",
26
28
  "lib/cloudsearchable/domain.rb",
27
29
  "lib/cloudsearchable/field.rb",
28
30
  "lib/cloudsearchable/query_chain.rb",
29
31
  "lib/cloudsearchable/version.rb",
30
32
  "spec/cloudsearchable/cloud_search_spec.rb",
31
33
  "spec/cloudsearchable/cloudsearchable_spec.rb",
34
+ "spec/cloudsearchable/config/option_spec.rb",
35
+ "spec/cloudsearchable/config_spec.rb",
32
36
  "spec/cloudsearchable/domain_spec.rb",
33
37
  "spec/cloudsearchable/field_spec.rb",
34
38
  "spec/cloudsearchable/query_chain_spec.rb",
@@ -0,0 +1,51 @@
1
+ module Cloudsearchable
2
+ module Config
3
+
4
+ # Encapsulates logic for setting options.
5
+ module Options
6
+ def self.included base
7
+ base.extend ClassMethods
8
+ end
9
+
10
+ module ClassMethods
11
+ # Get the defaults or initialize a new empty hash.
12
+ def defaults
13
+ @defaults ||= {}
14
+ end
15
+
16
+ # Reset the configuration options to the defaults.
17
+ def reset
18
+ settings.replace(defaults)
19
+ end
20
+
21
+ # Get the settings or initialize a new empty hash.
22
+ def settings
23
+ @settings ||= {}
24
+ end
25
+
26
+ # Define a configuration option with a default. Example usage:
27
+ # Options.option(:persist_in_safe_mode, :default => false)
28
+ def option(name, options = {})
29
+ defaults[name] = settings[name] = options[:default]
30
+
31
+ define_method name do
32
+ settings[name]
33
+ end
34
+
35
+ define_method "#{name}=" do |value|
36
+ settings[name] = value
37
+ end
38
+
39
+ define_method "#{name}?" do
40
+ !!settings[name]
41
+ end
42
+
43
+ define_method "reset_#{name}" do
44
+ settings[name] = defaults[name]
45
+ end
46
+ end
47
+ end
48
+ end
49
+
50
+ end
51
+ end
@@ -0,0 +1,35 @@
1
+ require "cloudsearchable/config/options"
2
+
3
+ module Cloudsearchable
4
+
5
+ # basic configuration for Cloudsearchable. Most of this code was patterned from Dynamoid.
6
+ module Config
7
+ extend self
8
+ include Options
9
+
10
+ option :domain_prefix, :default => defined?(Rails) ? "#{Rails.env}" : ""
11
+ option :fatal_warnings, :default => defined?(Rails) && Rails.env.production? ? false : true
12
+ option :logger, :default => defined?(Rails)
13
+
14
+ # The default logger either the Rails logger or just stdout.
15
+ def default_logger
16
+ defined?(Rails) && Rails.respond_to?(:logger) ? Rails.logger : ::Logger.new($stdout)
17
+ end
18
+
19
+ # Returns the assigned logger instance.
20
+ def logger
21
+ @logger ||= default_logger
22
+ end
23
+
24
+ # If you want to, set the logger manually to any output you'd like. Or pass false or nil to disable logging entirely.
25
+ def logger=(logger)
26
+ case logger
27
+ when false, nil then @logger = nil
28
+ when true then @logger = default_logger
29
+ else
30
+ @logger = logger if logger.respond_to?(:info)
31
+ end
32
+ end
33
+
34
+ end
35
+ end
@@ -1,3 +1,3 @@
1
1
  module Cloudsearchable
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -0,0 +1,40 @@
1
+ require 'spec_helper'
2
+ #require 'cloudsearchable/config/options'
3
+
4
+ describe Cloudsearchable::Config::Options do
5
+
6
+ module ConfigTest
7
+ extend self
8
+ include Cloudsearchable::Config::Options
9
+
10
+ option :foo
11
+ option :timezone, :default => "PST"
12
+ option :warnings, :default => false
13
+ end
14
+
15
+ subject { ConfigTest }
16
+
17
+ it 'sets and gets' do
18
+ subject.foo = 5
19
+ subject.foo.should eq 5
20
+ end
21
+
22
+ it 'defaults' do
23
+ subject.warnings.should_not be_nil
24
+ subject.warnings.should eq subject.settings[:warnings]
25
+ end
26
+
27
+ it 'resets option' do
28
+ subject.timezone = "EST"
29
+ subject.timezone.should eq "EST"
30
+ subject.reset_timezone
31
+ subject.timezone.should eq "PST"
32
+ end
33
+
34
+ it 'resets all options' do
35
+ subject.foo = 5
36
+ subject.reset
37
+ subject.foo.should eq nil
38
+ end
39
+
40
+ end
@@ -0,0 +1,15 @@
1
+ require 'spec_helper'
2
+
3
+ describe Cloudsearchable::Config do
4
+ it 'can be set in a block' do
5
+ Cloudsearchable.configure do |config|
6
+ config.domain_prefix = 'dev-llarue-'
7
+ end
8
+
9
+ Cloudsearchable.configure.domain_prefix.should eq 'dev-llarue-'
10
+ end
11
+
12
+ it 'aliases configure to config' do
13
+ Cloudsearchable.config.domain_prefix.should eq Cloudsearchable.configure.domain_prefix
14
+ end
15
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cloudsearchable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
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: 2013-09-05 00:00:00.000000000 Z
12
+ date: 2013-09-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -106,12 +106,16 @@ files:
106
106
  - cloudsearchable.gemspec
107
107
  - lib/cloudsearchable.rb
108
108
  - lib/cloudsearchable/cloud_search.rb
109
+ - lib/cloudsearchable/config.rb
110
+ - lib/cloudsearchable/config/options.rb
109
111
  - lib/cloudsearchable/domain.rb
110
112
  - lib/cloudsearchable/field.rb
111
113
  - lib/cloudsearchable/query_chain.rb
112
114
  - lib/cloudsearchable/version.rb
113
115
  - spec/cloudsearchable/cloud_search_spec.rb
114
116
  - spec/cloudsearchable/cloudsearchable_spec.rb
117
+ - spec/cloudsearchable/config/option_spec.rb
118
+ - spec/cloudsearchable/config_spec.rb
115
119
  - spec/cloudsearchable/domain_spec.rb
116
120
  - spec/cloudsearchable/field_spec.rb
117
121
  - spec/cloudsearchable/query_chain_spec.rb
@@ -145,6 +149,8 @@ summary: ActiveRecord-like query interface for AWS Cloud Search
145
149
  test_files:
146
150
  - spec/cloudsearchable/cloud_search_spec.rb
147
151
  - spec/cloudsearchable/cloudsearchable_spec.rb
152
+ - spec/cloudsearchable/config/option_spec.rb
153
+ - spec/cloudsearchable/config_spec.rb
148
154
  - spec/cloudsearchable/domain_spec.rb
149
155
  - spec/cloudsearchable/field_spec.rb
150
156
  - spec/cloudsearchable/query_chain_spec.rb