Get back to use Sinatra settings
authorLunar <lunar@anargeek.net>
Wed, 1 Sep 2010 18:35:12 +0000 (20:35 +0200)
committerLunar <lunar@anargeek.net>
Wed, 1 Sep 2010 18:35:12 +0000 (20:35 +0200)
And this time, do it right!

config.ru
coquelicot_app.rb
lib/coquelicot.rb
test_coquelicot.rb
tools/migrate_jyraphe.rb

index 430f74b..fe7989e 100644 (file)
--- a/config.ru
+++ b/config.ru
@@ -1,10 +1,7 @@
 require 'coquelicot_app'
 
-Coquelicot.setup :depot_path => File.join(File.dirname(__FILE__), 'files')
-
 app = Coquelicot::Application
 
-app.set :public, File.join(File.dirname(__FILE__), 'public')
 app.set :environment, :development
 app.set :raise_errors, true
 app.disable :run
index b32e526..88e114d 100644 (file)
@@ -38,8 +38,25 @@ module Coquelicot
     end
   end
 
+  class << self
+    def settings
+      (class << self; Application; end)
+    end
+    def depot
+      @depot = Depot.new(settings.depot_path) if @depot.nil? || settings.depot_path != @depot.path
+      @depot
+    end
+  end
+
   class Application < Sinatra::Base
+    set :app_file, __FILE__
     set :upload_password, '0e5f7d398e6f9cd1f6bac5cc823e363aec636495'
+    set :default_expire, 60
+    set :maximum_expire, 60 * 24 * 30 # 1 month
+    set :gone_period, 10080
+    set :filename_length, 20
+    set :random_pass_length, 16
+    set :depot_path, Proc.new { File.join(root, 'files') }
 
     def password_match?(password)
       return TRUE if settings.upload_password.nil?
@@ -103,8 +120,8 @@ module Coquelicot
         return haml(:index)
       end
       if params[:expire].nil? or params[:expire].to_i == 0 then
-        params[:expire] = Coquelicot.settings.default_expire
-      elsif params[:expire].to_i > Coquelicot.settings.maximum_expire then
+        params[:expire] = settings.default_expire
+      elsif params[:expire].to_i > settings.maximum_expire then
         error 403
       end
       expire_at = Time.now + 60 * params[:expire].to_i
index 3cc714b..93e6401 100644 (file)
@@ -266,35 +266,10 @@ module Coquelicot
     end
   end
 
-  DEFAULT_SETTINGS = { :default_expire => 60,
-                       :maximum_expire => 60 * 24 * 30, # 1 month
-                       :gone_period => 10080,
-                       :filename_length => 20,
-                       :random_pass_length => 16,
-                    }
-
   # Like RFC 4648 (Base32)
   FILENAME_CHARS = %w(a b c d e f g h i j k l m n o p q r s t u v w x y z 2 3 4 5 6 7)
 
   class << self
-
-    def setup(settings)
-      @settings = DEFAULT_SETTINGS.merge(settings)
-      @settings.each_key do |k|
-        @settings.class.send(:define_method, k) { self[k] }
-      end
-      @depot = nil
-      @settings
-    end
-
-    def settings
-      @settings ||= setup({})
-    end
-
-    def depot
-      @depot ||= Depot.new(settings.depot_path)
-    end
-
     def gen_random_base32(length)
       name = ''
       OpenSSL::Random::random_bytes(length).each_byte do |i|
index 70ebbef..f58515e 100644 (file)
@@ -33,8 +33,7 @@ describe 'Coquelicot' do
   before do
     app.set :environment, :test
     app.set :upload_password, Digest::SHA1.hexdigest(UPLOAD_PASSWORD)
-
-    Coquelicot.setup :depot_path => Dir.mktmpdir('coquelicot') #"#{Time.now.to_f}"
+    app.set :depot_path, Dir.mktmpdir('coquelicot')
   end
 
   after do
index 4e88efd..a0834d0 100755 (executable)
@@ -88,7 +88,7 @@ def main
     exit 1
   end
 
-  Coquelicot.setup :depot_path => coquelicot_depot
+  Coquelicot::Application.set :depot_path, coquelicot_depot
   JyrapheMigrator.new(jyraphe_var).process
 end