scrap home made config system to use Sinatra::ConfigFile
authorLunar <lunar@anargeek.net>
Tue, 14 Feb 2012 11:43:17 +0000 (12:43 +0100)
committerLunar <lunar@anargeek.net>
Fri, 24 Feb 2012 18:42:53 +0000 (19:42 +0100)
This adds a dependency to sinatra-contrib (>= 1.3).

Gemfile
Gemfile.lock
lib/coquelicot.rb
lib/coquelicot/app.rb
lib/coquelicot/auth.rb
lib/coquelicot/configure.rb [deleted file]

diff --git a/Gemfile b/Gemfile
index a189787..d9f2a21 100644 (file)
--- a/Gemfile
+++ b/Gemfile
@@ -1,5 +1,6 @@
 source "http://rubygems.org"
 gem "sinatra", "~>1.3"
+gem "sinatra-contrib", "~>1.3"
 gem "rack", "~>1.1"
 gem "haml", "~>3.0.15"
 gem "lockfile", "~>1.4.3"
index f9d0bfe..48ad341 100644 (file)
@@ -1,7 +1,9 @@
 GEM
   remote: http://rubygems.org/
   specs:
+    backports (2.3.0)
     diff-lcs (1.1.3)
+    eventmachine (0.12.10)
     gettext (2.1.0)
       locale (>= 2.0.5)
     haml (3.0.25)
@@ -26,6 +28,13 @@ GEM
       rack (~> 1.3, >= 1.3.6)
       rack-protection (~> 1.2)
       tilt (~> 1.3, >= 1.3.3)
+    sinatra-contrib (1.3.1)
+      backports (>= 2.0)
+      eventmachine
+      rack-protection
+      rack-test
+      sinatra (~> 1.3.0)
+      tilt (~> 1.3)
     tilt (1.3.3)
     timecop (0.3.5)
 
@@ -42,4 +51,5 @@ DEPENDENCIES
   rack-test (~> 0.5.7)
   rspec (~> 2.0)
   sinatra (~> 1.3)
+  sinatra-contrib (~> 1.3)
   timecop (~> 0.3.5)
index 4b71294..26c73c0 100644 (file)
@@ -1,5 +1,4 @@
 require 'coquelicot/auth'
 require 'coquelicot/stored_file'
 require 'coquelicot/depot'
-require 'coquelicot/configure'
 require 'coquelicot/app'
index c66e0cf..e636971 100644 (file)
@@ -1,5 +1,6 @@
 require 'lockfile'
 require 'sinatra/base'
+require 'sinatra/config_file'
 require 'haml'
 require 'sass'
 require 'digest/sha1'
@@ -18,8 +19,22 @@ module Coquelicot
   end
 
   class Application < Sinatra::Base
+    register Sinatra::ConfigFile
+    register Coquelicot::Auth::Extension
+
     set :root, Proc.new { app_file && File.expand_path('../../..', app_file) }
-    include Coquelicot::Configure
+    set :depot_path, Proc.new { File.join(root, 'files') }
+    set :default_expire, 60
+    set :maximum_expire, 60 * 24 * 30 # 1 month
+    set :gone_period, 60 * 24 * 7 # 1 week
+    set :filename_length, 20
+    set :random_pass_length, 16
+    set :about_text, ''
+    set :additional_css, ''
+    set :authentication_method, :name => :simplepass,
+                                :upload_password => 'a94a8fe5ccb19ba61c4c0873d391e987982fbbd3'
+
+    config_file File.expand_path('../../../conf/settings.yml', __FILE__)
 
     GetText::bindtextdomain('coquelicot')
     before do
index 7bedb36..3d2298e 100644 (file)
@@ -1,5 +1,18 @@
 module Coquelicot
   module Auth
+    module Extension
+      def authentication_method=(options)
+        method = options.delete('name') || options.delete(:name)
+        method = method.to_s if method.is_a? Symbol
+
+        require "coquelicot/auth/#{method}"
+        set :authenticator, Coquelicot::Auth.
+           const_get("#{method.to_s.capitalize}Authenticator").new(self)
+
+        options.each{|k,v| set k,v }
+      end
+    end
+
     class AbstractAuthenticator
       def initialize(app)
         @app = app
diff --git a/lib/coquelicot/configure.rb b/lib/coquelicot/configure.rb
deleted file mode 100644 (file)
index 4744399..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-require 'yaml'
-
-module Coquelicot
-  module Configure
-    def self.included(c)
-      c.extend ClassMethods
-      c.configure
-    end
-
-    module ClassMethods
-      def configure
-        user_settings = load_user_settings if File.exists?(settings_path)
-        merged_settings = default_settings.merge(user_settings || {})
-        merged_settings.each { |k,v| set k,v }
-      end
-
-      def authentication_method=(options)
-        method = options.delete('name') || options.delete(:name)
-        method = method.to_s if method.is_a? Symbol
-        require "coquelicot/auth/#{method}"
-        set :authenticator, Coquelicot::Auth.
-           const_get("#{method.to_s.capitalize}Authenticator").new(self)
-        options.each{|k,v| set k,v }
-      end
-
-    private
-
-      def default_settings
-        {
-          'default_expire' => 60,
-          'maximum_expire' => 60 * 24 * 30, # 1 month
-          'gone_period' => 10080,
-          'filename_length' => 20,
-          'random_pass_length' => 16,
-          'about_text' => '',
-          'additional_css' => '',
-          'depot_path' => Proc.new { File.join(root, 'files') },
-          'authentication_method' => {
-            'name' => 'simplepass',
-            'upload_password' => 'a94a8fe5ccb19ba61c4c0873d391e987982fbbd3'
-          },
-        }
-      end
-
-      def settings_path
-        @settings_path ||= File.join(File.dirname(__FILE__),'..','..','conf','settings.yml')
-      end
-
-      def load_user_settings
-        YAML.load(File.read(settings_path))
-      end
-    end
-  end
-end