Skip to content

Commit 867ff5a

Browse files
author
Libo Cannici
committed
Add mechanism for configuring a cache store via initializer
1 parent b264f61 commit 867ff5a

File tree

3 files changed

+67
-0
lines changed

3 files changed

+67
-0
lines changed

lib/curly.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,4 +51,5 @@ def self.valid?(template, presenter_class)
5151
require 'curly/compiler'
5252
require 'curly/presenter'
5353
require 'curly/template_handler'
54+
require 'curly/configuration'
5455
require 'curly/railtie' if defined?(Rails)

lib/curly/configuration.rb

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
module Curly
2+
class << self
3+
attr_writer :configuration
4+
end
5+
6+
def self.configuration
7+
@configuration ||= Configuration.new
8+
end
9+
10+
def self.configure
11+
yield(configuration)
12+
end
13+
14+
def self.reset
15+
@configuration = Configuration.new
16+
end
17+
18+
class Configuration
19+
attr_accessor :cache_store
20+
21+
def initialize
22+
@cache_store = nil
23+
end
24+
end
25+
end

spec/configuration_spec.rb

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
describe Curly::Configuration do
2+
after do
3+
Curly.reset
4+
end
5+
6+
describe "#cache_store" do
7+
it "defaults to nil" do
8+
cache_store = Curly::Configuration.new.cache_store
9+
10+
expect(cache_store).to be_nil
11+
end
12+
end
13+
14+
describe ".configure" do
15+
before do
16+
Curly.configure do |config|
17+
config.cache_store = 'foobar'
18+
end
19+
end
20+
21+
it "returns correct value for cache_store" do
22+
presenters_namespace = Curly.configuration.cache_store
23+
24+
expect(presenters_namespace).to eq('foobar')
25+
end
26+
end
27+
28+
describe ".reset" do
29+
it "resets the configuration to default value" do
30+
Curly.configure do |config|
31+
config.cache_store = 'foobarbaz'
32+
end
33+
34+
Curly.reset
35+
36+
cache_store = Curly::Configuration.new.cache_store
37+
38+
expect(cache_store).to be_nil
39+
end
40+
end
41+
end

0 commit comments

Comments
 (0)