diff --git a/lib/copy/server.rb b/lib/copy/server.rb index 8f7de1e..debd3cb 100644 --- a/lib/copy/server.rb +++ b/lib/copy/server.rb @@ -31,12 +31,18 @@ def self.config(&block) class_eval(&block) end + before do + if settings.respond_to?(:storage) && !Copy::Storage.connected? + Copy::Storage.connect!(settings.storage) + end + end + get '/admin/?' do "admin" end get '*' do - route = Copy::Router.new(params[:splat].to_s, settings.views) + route = Copy::Router.new(params[:splat].first, settings.views) if route.success? set_cache_control_header content_type(route.format) diff --git a/lib/copy/storage.rb b/lib/copy/storage.rb index 2b718c4..cbf953c 100644 --- a/lib/copy/storage.rb +++ b/lib/copy/storage.rb @@ -16,7 +16,7 @@ def self.connect!(connection_url) end def self.connected? - ! @@storage.nil? + !defined?(@@storage).nil? end def self.get(name) diff --git a/test/server_test.rb b/test/server_test.rb index 9ae004d..533e2b5 100644 --- a/test/server_test.rb +++ b/test/server_test.rb @@ -5,7 +5,11 @@ class ServerTest < Test::Unit::TestCase include Rack::Test::Methods def app - Copy::Server.config do + Copy::Server + end + + setup do + app.config do set :views, File.dirname(File.expand_path(__FILE__)) + '/sample_app/views' end end @@ -70,8 +74,16 @@ def app assert_equal File.read(app.settings.views + '/data/people.xml.erb'), last_response.body end + test "connects to storage when setting present" do + connection_url = 'redis://localhost:1234' + app.config { set :storage, connection_url } + Copy::Storage.expects(:connect!).with(connection_url).once.returns(true) + get '/' + assert last_response.ok? + end + test "copy helper displays content from storage" do - Copy::Storage.expects(:connected?).returns(true) + Copy::Storage.expects(:connected?).twice.returns(true) Copy::Storage.expects(:get).with(:facts).returns("truth") get 'with_copy_helper' @@ -80,7 +92,7 @@ def app end test "copy helper shows default text when content is not in storage" do - Copy::Storage.expects(:connected?).returns(true) + Copy::Storage.expects(:connected?).twice.returns(true) Copy::Storage.expects(:get).with(:facts).returns(nil) get 'with_copy_helper' @@ -89,7 +101,7 @@ def app end test "copy helper shows default text when not connected" do - Copy::Storage.expects(:connected?).returns(false) + Copy::Storage.expects(:connected?).twice.returns(false) get 'with_copy_helper' assert last_response.ok?