padrino-core 0.2.9 → 0.4.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Rakefile +2 -1
 - data/VERSION +1 -1
 - data/bin/padrino +0 -1
 - data/lib/padrino-core/application.rb +130 -64
 - data/lib/padrino-core/caller.rb +1 -1
 - data/lib/padrino-core/loader.rb +12 -21
 - data/lib/padrino-core/locale/en.yml +33 -0
 - data/lib/padrino-core/logger.rb +1 -1
 - data/lib/padrino-core/mounter.rb +2 -2
 - data/lib/padrino-core/stat.rb +2 -0
 - data/lib/padrino-core/support_lite.rb +15 -2
 - data/lib/padrino-core/support_lite/as_support.rb +3 -1
 - data/lib/padrino-core/support_lite/extlib_support.rb +76 -5
 - data/lib/padrino-core/tasks.rb +5 -0
 - data/padrino-core.gemspec +8 -4
 - data/test/fixtures/apps/complex.rb +1 -3
 - data/test/helper.rb +4 -13
 - data/test/test_application.rb +152 -1
 - data/test/{test_padrino_core.rb → test_core.rb} +1 -1
 - data/test/{test_padrino_mounter.rb → test_mounter.rb} +4 -4
 - metadata +15 -4
 
    
        data/Rakefile
    CHANGED
    
    | 
         @@ -12,6 +12,7 @@ begin 
     | 
|
| 
       12 
12 
     | 
    
         
             
                gem.authors = ["Padrino Team", "Nathan Esquenazi", "Davide D'Agostino", "Arthur Chiu"]
         
     | 
| 
       13 
13 
     | 
    
         
             
                gem.executables = ["padrino"]
         
     | 
| 
       14 
14 
     | 
    
         
             
                gem.add_runtime_dependency     "sinatra",       ">= 0.9.2"
         
     | 
| 
      
 15 
     | 
    
         
            +
                gem.add_runtime_dependency     "i18n",          ">= 0.3.2"
         
     | 
| 
       15 
16 
     | 
    
         
             
                gem.add_runtime_dependency     "thor",          ">= 0.11.8"
         
     | 
| 
       16 
17 
     | 
    
         
             
                gem.add_development_dependency "haml",          ">= 2.2.1"
         
     | 
| 
       17 
18 
     | 
    
         
             
                gem.add_runtime_dependency     "bundler",       ">= 0.5.0"
         
     | 
| 
         @@ -28,7 +29,7 @@ end 
     | 
|
| 
       28 
29 
     | 
    
         | 
| 
       29 
30 
     | 
    
         
             
            require 'rake/testtask'
         
     | 
| 
       30 
31 
     | 
    
         
             
            Rake::TestTask.new(:test) do |test|
         
     | 
| 
       31 
     | 
    
         
            -
              test.libs << ' 
     | 
| 
      
 32 
     | 
    
         
            +
              test.libs << 'test'
         
     | 
| 
       32 
33 
     | 
    
         
             
              test.pattern = 'test/**/test_*.rb'
         
     | 
| 
       33 
34 
     | 
    
         
             
              test.verbose = true
         
     | 
| 
       34 
35 
     | 
    
         
             
            end
         
     | 
    
        data/VERSION
    CHANGED
    
    | 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            0. 
     | 
| 
      
 1 
     | 
    
         
            +
            0.4.5
         
     | 
    
        data/bin/padrino
    CHANGED
    
    
| 
         @@ -28,16 +28,29 @@ module Padrino 
     | 
|
| 
       28 
28 
     | 
    
         
             
                    include(*extensions)  if extensions.any?
         
     | 
| 
       29 
29 
     | 
    
         
             
                  end
         
     | 
| 
       30 
30 
     | 
    
         | 
| 
      
 31 
     | 
    
         
            +
                  # With this method we can use layout like rails do or if a block given like sinatra
         
     | 
| 
      
 32 
     | 
    
         
            +
                  # By default we look in your/app/views/layouts/application.(haml|erb|etc)
         
     | 
| 
      
 33 
     | 
    
         
            +
                  # 
         
     | 
| 
      
 34 
     | 
    
         
            +
                  # If you define:
         
     | 
| 
      
 35 
     | 
    
         
            +
                  # 
         
     | 
| 
      
 36 
     | 
    
         
            +
                  #   layout :custom
         
     | 
| 
      
 37 
     | 
    
         
            +
                  # 
         
     | 
| 
      
 38 
     | 
    
         
            +
                  # Padrino look for your/app/views/layouts/custom.(haml|erb|etc)
         
     | 
| 
      
 39 
     | 
    
         
            +
                  def layout(name=:layout, &block)
         
     | 
| 
      
 40 
     | 
    
         
            +
                    return super if block_given?
         
     | 
| 
      
 41 
     | 
    
         
            +
                    @_layout = name
         
     | 
| 
      
 42 
     | 
    
         
            +
                  end
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
       31 
44 
     | 
    
         
             
                  # Reloads the application files from all defined load paths
         
     | 
| 
       32 
45 
     | 
    
         
             
                  def reload!
         
     | 
| 
       33 
46 
     | 
    
         
             
                    reset_routes! # remove all existing user-defined application routes
         
     | 
| 
       34 
47 
     | 
    
         
             
                    Padrino.load_dependency(self.app_file)  # reload the app file
         
     | 
| 
       35 
     | 
    
         
            -
                    load_paths.each { |path| Padrino.load_dependencies(File.join(self.root, path)) }
         
     | 
| 
      
 48 
     | 
    
         
            +
                    load_paths.each { |path| Padrino.load_dependencies(File.join(self.root, path)) } # reload dependencies
         
     | 
| 
       36 
49 
     | 
    
         
             
                  end
         
     | 
| 
       37 
50 
     | 
    
         | 
| 
       38 
51 
     | 
    
         
             
                  # Resets application routes to only routes not defined by the user
         
     | 
| 
       39 
52 
     | 
    
         
             
                  def reset_routes!
         
     | 
| 
       40 
     | 
    
         
            -
                    @routes = Padrino::Application.dupe_routes
         
     | 
| 
      
 53 
     | 
    
         
            +
                    @routes = Padrino::Application.respond_to?(:dupe_routes) ? Padrino::Application.dupe_routes : {}
         
     | 
| 
       41 
54 
     | 
    
         
             
                  end
         
     | 
| 
       42 
55 
     | 
    
         | 
| 
       43 
56 
     | 
    
         
             
                  # Setup the application by registering initializers, load paths and logger
         
     | 
| 
         @@ -49,81 +62,134 @@ module Padrino 
     | 
|
| 
       49 
62 
     | 
    
         
             
                    self.register_initializers
         
     | 
| 
       50 
63 
     | 
    
         
             
                    self.require_load_paths
         
     | 
| 
       51 
64 
     | 
    
         
             
                    self.disable :logging # We need do that as default because Sinatra use commonlogger.
         
     | 
| 
      
 65 
     | 
    
         
            +
                    I18n.locale = self.locale
         
     | 
| 
      
 66 
     | 
    
         
            +
                    I18n.load_path += self.translations
         
     | 
| 
      
 67 
     | 
    
         
            +
                    self.get(""){ redirect("#{options.uri_root}/") } if self.uri_root != "/"
         
     | 
| 
       52 
68 
     | 
    
         
             
                    @_configured = true
         
     | 
| 
       53 
69 
     | 
    
         
             
                  end
         
     | 
| 
       54 
70 
     | 
    
         | 
| 
       55 
71 
     | 
    
         
             
                  protected
         
     | 
| 
      
 72 
     | 
    
         
            +
                    # Defines default settings for Padrino application
         
     | 
| 
      
 73 
     | 
    
         
            +
                    def default_configuration!
         
     | 
| 
      
 74 
     | 
    
         
            +
                      # Overwriting Sinatra defaults
         
     | 
| 
      
 75 
     | 
    
         
            +
                      set :app_file, caller_files.first || $0 # Assume app file is first caller
         
     | 
| 
      
 76 
     | 
    
         
            +
                      set :environment, PADRINO_ENV.to_sym
         
     | 
| 
      
 77 
     | 
    
         
            +
                      set :raise_errors, true if development?
         
     | 
| 
      
 78 
     | 
    
         
            +
                      set :logging, false # !test?
         
     | 
| 
      
 79 
     | 
    
         
            +
                      set :sessions, true
         
     | 
| 
      
 80 
     | 
    
         
            +
                      # Padrino specific
         
     | 
| 
      
 81 
     | 
    
         
            +
                      set :uri_root, "/"
         
     | 
| 
      
 82 
     | 
    
         
            +
                      set :reload, development?
         
     | 
| 
      
 83 
     | 
    
         
            +
                      set :app_name, self.to_s.underscore.to_sym
         
     | 
| 
      
 84 
     | 
    
         
            +
                      set :default_builder, 'StandardFormBuilder'
         
     | 
| 
      
 85 
     | 
    
         
            +
                      set :flash, defined?(Rack::Flash)
         
     | 
| 
      
 86 
     | 
    
         
            +
                      set :authentication, false
         
     | 
| 
      
 87 
     | 
    
         
            +
                      # Padrino locale
         
     | 
| 
      
 88 
     | 
    
         
            +
                      set :locale, :en
         
     | 
| 
      
 89 
     | 
    
         
            +
                      set :translations, Proc.new { Dir[File.join(self.root, "/locale/**/*.{rb,yml}")] }
         
     | 
| 
      
 90 
     | 
    
         
            +
                      set :auto_locale, false
         
     | 
| 
      
 91 
     | 
    
         
            +
                      # Plugin specific
         
     | 
| 
      
 92 
     | 
    
         
            +
                      set :padrino_mailer, defined?(Padrino::Mailer)
         
     | 
| 
      
 93 
     | 
    
         
            +
                      set :padrino_helpers, defined?(Padrino::Helpers)
         
     | 
| 
      
 94 
     | 
    
         
            +
                    end
         
     | 
| 
       56 
95 
     | 
    
         | 
| 
       57 
     | 
    
         
            -
             
     | 
| 
       58 
     | 
    
         
            -
             
     | 
| 
       59 
     | 
    
         
            -
                     
     | 
| 
       60 
     | 
    
         
            -
             
     | 
| 
       61 
     | 
    
         
            -
             
     | 
| 
       62 
     | 
    
         
            -
             
     | 
| 
       63 
     | 
    
         
            -
                     
     | 
| 
       64 
     | 
    
         
            -
                    set :sessions, true
         
     | 
| 
       65 
     | 
    
         
            -
                    # Padrino specific
         
     | 
| 
       66 
     | 
    
         
            -
                    set :reload, development?
         
     | 
| 
       67 
     | 
    
         
            -
                    set :app_name, self.to_s.underscore.to_sym
         
     | 
| 
       68 
     | 
    
         
            -
                    set :default_builder, 'StandardFormBuilder'
         
     | 
| 
       69 
     | 
    
         
            -
                    set :flash, defined?(Rack::Flash)
         
     | 
| 
       70 
     | 
    
         
            -
                    # Plugin specific
         
     | 
| 
       71 
     | 
    
         
            -
                    set :padrino_mailer, defined?(Padrino::Mailer)
         
     | 
| 
       72 
     | 
    
         
            -
                    set :padrino_helpers, defined?(Padrino::Helpers)
         
     | 
| 
       73 
     | 
    
         
            -
                  end
         
     | 
| 
      
 96 
     | 
    
         
            +
                    # Calculates any required paths after app_file and root have been properly configured
         
     | 
| 
      
 97 
     | 
    
         
            +
                    # Executes as part of the setup_application! method
         
     | 
| 
      
 98 
     | 
    
         
            +
                    def calculate_paths
         
     | 
| 
      
 99 
     | 
    
         
            +
                      raise ApplicationSetupError.new("Please define 'app_file' option for #{self.name} app!") unless self.app_file
         
     | 
| 
      
 100 
     | 
    
         
            +
                      set :views, find_view_path if find_view_path
         
     | 
| 
      
 101 
     | 
    
         
            +
                      set :images_path, File.join(self.public, "/images") unless self.respond_to?(:images_path)
         
     | 
| 
      
 102 
     | 
    
         
            +
                    end
         
     | 
| 
       74 
103 
     | 
    
         | 
| 
       75 
     | 
    
         
            -
             
     | 
| 
       76 
     | 
    
         
            -
             
     | 
| 
       77 
     | 
    
         
            -
             
     | 
| 
       78 
     | 
    
         
            -
             
     | 
| 
       79 
     | 
    
         
            -
             
     | 
| 
       80 
     | 
    
         
            -
             
     | 
| 
       81 
     | 
    
         
            -
             
     | 
| 
      
 104 
     | 
    
         
            +
                    # Requires the middleware and initializer modules to configure components
         
     | 
| 
      
 105 
     | 
    
         
            +
                    def register_initializers
         
     | 
| 
      
 106 
     | 
    
         
            +
                      use Padrino::RackLogger
         
     | 
| 
      
 107 
     | 
    
         
            +
                      use Padrino::Reloader   if reload?
         
     | 
| 
      
 108 
     | 
    
         
            +
                      use Rack::Flash         if flash?
         
     | 
| 
      
 109 
     | 
    
         
            +
                      register DatabaseSetup  if defined?(DatabaseSetup)
         
     | 
| 
      
 110 
     | 
    
         
            +
                      @initializer_path ||= Padrino.root + '/config/initializers/*.rb'
         
     | 
| 
      
 111 
     | 
    
         
            +
                      Dir[@initializer_path].each { |file| register_initializer(file) }
         
     | 
| 
      
 112 
     | 
    
         
            +
                    end
         
     | 
| 
       82 
113 
     | 
    
         | 
| 
       83 
     | 
    
         
            -
             
     | 
| 
       84 
     | 
    
         
            -
             
     | 
| 
       85 
     | 
    
         
            -
             
     | 
| 
       86 
     | 
    
         
            -
             
     | 
| 
       87 
     | 
    
         
            -
             
     | 
| 
       88 
     | 
    
         
            -
                     
     | 
| 
       89 
     | 
    
         
            -
                    @initializer_path ||= Padrino.root + '/config/initializers/*.rb'
         
     | 
| 
       90 
     | 
    
         
            -
                    Dir[@initializer_path].each { |file| register_initializer(file) }
         
     | 
| 
       91 
     | 
    
         
            -
                  end
         
     | 
| 
      
 114 
     | 
    
         
            +
                    # Registers all desired padrino extension helpers/routing
         
     | 
| 
      
 115 
     | 
    
         
            +
                    def register_framework_extensions
         
     | 
| 
      
 116 
     | 
    
         
            +
                      register Padrino::Mailer        if padrino_mailer?
         
     | 
| 
      
 117 
     | 
    
         
            +
                      register Padrino::Helpers       if padrino_helpers?
         
     | 
| 
      
 118 
     | 
    
         
            +
                      register Padrino::AccessControl if authentication?
         
     | 
| 
      
 119 
     | 
    
         
            +
                    end
         
     | 
| 
       92 
120 
     | 
    
         | 
| 
       93 
     | 
    
         
            -
             
     | 
| 
       94 
     | 
    
         
            -
             
     | 
| 
       95 
     | 
    
         
            -
             
     | 
| 
       96 
     | 
    
         
            -
                     
     | 
| 
       97 
     | 
    
         
            -
                  end
         
     | 
| 
      
 121 
     | 
    
         
            +
                    # Returns the load_paths for the application (relative to the application root)
         
     | 
| 
      
 122 
     | 
    
         
            +
                    def load_paths
         
     | 
| 
      
 123 
     | 
    
         
            +
                      @load_paths ||= ["urls.rb", "config/urls.rb", "models/*.rb", "mailers/*.rb", "controllers/**/*.rb", "helpers/*.rb"]
         
     | 
| 
      
 124 
     | 
    
         
            +
                    end
         
     | 
| 
       98 
125 
     | 
    
         | 
| 
       99 
     | 
    
         
            -
             
     | 
| 
       100 
     | 
    
         
            -
             
     | 
| 
       101 
     | 
    
         
            -
             
     | 
| 
       102 
     | 
    
         
            -
             
     | 
| 
      
 126 
     | 
    
         
            +
                    # Requires all files within the application load paths
         
     | 
| 
      
 127 
     | 
    
         
            +
                    def require_load_paths
         
     | 
| 
      
 128 
     | 
    
         
            +
                      load_paths.each { |path| Padrino.require_dependencies(File.join(self.root, path)) }
         
     | 
| 
      
 129 
     | 
    
         
            +
                    end
         
     | 
| 
      
 130 
     | 
    
         
            +
             
     | 
| 
      
 131 
     | 
    
         
            +
                    # Returns the path to the views directory from root by returning the first that is found
         
     | 
| 
      
 132 
     | 
    
         
            +
                    def find_view_path
         
     | 
| 
      
 133 
     | 
    
         
            +
                      @view_paths = ["views"].collect { |path| File.join(self.root, path) }
         
     | 
| 
      
 134 
     | 
    
         
            +
                      @view_paths.find { |path| Dir[File.join(path, '/**/*')].any? }
         
     | 
| 
      
 135 
     | 
    
         
            +
                    end
         
     | 
| 
       103 
136 
     | 
    
         | 
| 
       104 
     | 
    
         
            -
             
     | 
| 
       105 
     | 
    
         
            -
             
     | 
| 
       106 
     | 
    
         
            -
                     
     | 
| 
       107 
     | 
    
         
            -
             
     | 
| 
       108 
     | 
    
         
            -
             
     | 
| 
      
 137 
     | 
    
         
            +
                    # Registers an initializer with the application
         
     | 
| 
      
 138 
     | 
    
         
            +
                    # register_initializer('/path/to/initializer')
         
     | 
| 
      
 139 
     | 
    
         
            +
                    def register_initializer(file_path)
         
     | 
| 
      
 140 
     | 
    
         
            +
                      Padrino.require_dependencies(file_path)
         
     | 
| 
      
 141 
     | 
    
         
            +
                      file_class = File.basename(file_path, '.rb').camelize
         
     | 
| 
      
 142 
     | 
    
         
            +
                      register "#{file_class}Initializer".constantize
         
     | 
| 
      
 143 
     | 
    
         
            +
                    rescue NameError => e
         
     | 
| 
      
 144 
     | 
    
         
            +
                      logger.error "The module '#{file_class}Initializer' (#{file_path}) didn't loaded properly!"
         
     | 
| 
      
 145 
     | 
    
         
            +
                      logger.error "   Initializer error was '#{e.message}'"
         
     | 
| 
      
 146 
     | 
    
         
            +
                    end
         
     | 
| 
       109 
147 
     | 
    
         
             
                  end
         
     | 
| 
       110 
148 
     | 
    
         | 
| 
       111 
     | 
    
         
            -
             
     | 
| 
       112 
     | 
    
         
            -
                   
     | 
| 
       113 
     | 
    
         
            -
             
     | 
| 
       114 
     | 
    
         
            -
             
     | 
| 
      
 149 
     | 
    
         
            +
                private
         
     | 
| 
      
 150 
     | 
    
         
            +
                  # Hijacking the sinatra render for do two thing:
         
     | 
| 
      
 151 
     | 
    
         
            +
                  # 
         
     | 
| 
      
 152 
     | 
    
         
            +
                  # * Use layout like rails do
         
     | 
| 
      
 153 
     | 
    
         
            +
                  # * Use render 'path/to/my/template'
         
     | 
| 
      
 154 
     | 
    
         
            +
                  # 
         
     | 
| 
      
 155 
     | 
    
         
            +
                  def render(engine, data=nil, options={}, locals={}, &block)
         
     | 
| 
      
 156 
     | 
    
         
            +
                    @template_cache.clear if Padrino.env != :production && @template_cache && @template_cache.respond_to?(:clear)
         
     | 
| 
      
 157 
     | 
    
         
            +
                    # If an engine is a string probably is a path so we try to resolve them
         
     | 
| 
      
 158 
     | 
    
         
            +
                    if data.nil?
         
     | 
| 
      
 159 
     | 
    
         
            +
                      data   = engine.to_sym
         
     | 
| 
      
 160 
     | 
    
         
            +
                      engine = resolve_template_engine(engine)
         
     | 
| 
      
 161 
     | 
    
         
            +
                    end
         
     | 
| 
      
 162 
     | 
    
         
            +
                    # Use layout as rails do
         
     | 
| 
      
 163 
     | 
    
         
            +
                    if (options[:layout].nil? || options[:layout] == true) && !self.class.templates.has_key?(:layout)
         
     | 
| 
      
 164 
     | 
    
         
            +
                      layout = self.class.instance_variable_defined?(:@_layout) ? self.class.instance_variable_get(:@_layout) : :application
         
     | 
| 
      
 165 
     | 
    
         
            +
                      if layout
         
     | 
| 
      
 166 
     | 
    
         
            +
                        options[:layout] = File.join('layouts', layout.to_s).to_sym
         
     | 
| 
      
 167 
     | 
    
         
            +
                        logger.debug "Rendering layout #{options[:layout]}"
         
     | 
| 
      
 168 
     | 
    
         
            +
                      end
         
     | 
| 
      
 169 
     | 
    
         
            +
                    end
         
     | 
| 
      
 170 
     | 
    
         
            +
                    super
         
     | 
| 
       115 
171 
     | 
    
         
             
                  end
         
     | 
| 
       116 
172 
     | 
    
         | 
| 
       117 
     | 
    
         
            -
                  #  
     | 
| 
       118 
     | 
    
         
            -
                  #  
     | 
| 
       119 
     | 
    
         
            -
                  def  
     | 
| 
       120 
     | 
    
         
            -
                     
     | 
| 
       121 
     | 
    
         
            -
                     
     | 
| 
       122 
     | 
    
         
            -
                     
     | 
| 
       123 
     | 
    
         
            -
             
     | 
| 
       124 
     | 
    
         
            -
             
     | 
| 
       125 
     | 
    
         
            -
             
     | 
| 
      
 173 
     | 
    
         
            +
                  # Returns the template engine (i.e haml) to use for a given template_path
         
     | 
| 
      
 174 
     | 
    
         
            +
                  # resolve_template_engine('users/new') => :haml
         
     | 
| 
      
 175 
     | 
    
         
            +
                  def resolve_template_engine(template_path)
         
     | 
| 
      
 176 
     | 
    
         
            +
                    resolved_template_path = File.join(self.options.views, template_path.to_s + ".*")
         
     | 
| 
      
 177 
     | 
    
         
            +
                    template_file = Dir[resolved_template_path].first
         
     | 
| 
      
 178 
     | 
    
         
            +
                    raise "Template path '#{template_path}' could not be located in views!" unless template_file
         
     | 
| 
      
 179 
     | 
    
         
            +
                    template_engine = File.extname(template_file)[1..-1].to_sym
         
     | 
| 
      
 180 
     | 
    
         
            +
                  end
         
     | 
| 
      
 181 
     | 
    
         
            +
                  
         
     | 
| 
      
 182 
     | 
    
         
            +
                  # When we set :auto_locale, true then:
         
     | 
| 
      
 183 
     | 
    
         
            +
                  # 
         
     | 
| 
      
 184 
     | 
    
         
            +
                  # * if we pass "/:locale/some/foo" we automatically set teh I18n locale to params[:locale]
         
     | 
| 
      
 185 
     | 
    
         
            +
                  # * if params[:locale] is empty we use the first HTTP_ACCEPT_LANGUAGE
         
     | 
| 
      
 186 
     | 
    
         
            +
                  def route_eval(&block)
         
     | 
| 
      
 187 
     | 
    
         
            +
                    if options.auto_locale
         
     | 
| 
      
 188 
     | 
    
         
            +
                      if params[:locale]
         
     | 
| 
      
 189 
     | 
    
         
            +
                        I18n.locale = params[:locale].to_sym rescue options.locale
         
     | 
| 
      
 190 
     | 
    
         
            +
                      end
         
     | 
| 
      
 191 
     | 
    
         
            +
                    end
         
     | 
| 
      
 192 
     | 
    
         
            +
                    super
         
     | 
| 
       126 
193 
     | 
    
         
             
                  end
         
     | 
| 
       127 
     | 
    
         
            -
                end
         
     | 
| 
       128 
194 
     | 
    
         
             
              end
         
     | 
| 
       129 
     | 
    
         
            -
            end
         
     | 
| 
      
 195 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/padrino-core/caller.rb
    CHANGED
    
    
    
        data/lib/padrino-core/loader.rb
    CHANGED
    
    | 
         @@ -28,12 +28,6 @@ module Padrino 
     | 
|
| 
       28 
28 
     | 
    
         
             
                  Thread.current[:padrino_loaded]
         
     | 
| 
       29 
29 
     | 
    
         
             
                end
         
     | 
| 
       30 
30 
     | 
    
         | 
| 
       31 
     | 
    
         
            -
                # Attempts to require all dependencies with bundler; if this fails, uses system wide gems
         
     | 
| 
       32 
     | 
    
         
            -
                def load_required_gems
         
     | 
| 
       33 
     | 
    
         
            -
                  load_bundler_manifest
         
     | 
| 
       34 
     | 
    
         
            -
                  require_vendored_gems
         
     | 
| 
       35 
     | 
    
         
            -
                end
         
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
31 
     | 
    
         
             
                # Attempts to require all dependency libs that we need.
         
     | 
| 
       38 
32 
     | 
    
         
             
                # If you use this method we can perform correctly a Padrino.reload!
         
     | 
| 
       39 
33 
     | 
    
         
             
                #
         
     | 
| 
         @@ -64,22 +58,19 @@ module Padrino 
     | 
|
| 
       64 
58 
     | 
    
         | 
| 
       65 
59 
     | 
    
         
             
                protected
         
     | 
| 
       66 
60 
     | 
    
         | 
| 
       67 
     | 
    
         
            -
                # Loads the  
     | 
| 
       68 
     | 
    
         
            -
                def  
     | 
| 
      
 61 
     | 
    
         
            +
                # Loads the vendored gems or system wide gems through Gemfile
         
     | 
| 
      
 62 
     | 
    
         
            +
                def load_required_gems
         
     | 
| 
      
 63 
     | 
    
         
            +
                  require root('vendor', 'gems', 'environment')
         
     | 
| 
      
 64 
     | 
    
         
            +
                  Bundler.require_env(Padrino.env)
         
     | 
| 
      
 65 
     | 
    
         
            +
                  say! "=> Loaded bundled gems for #{Padrino.env} with #{Padrino.support.to_s.humanize}"
         
     | 
| 
      
 66 
     | 
    
         
            +
                rescue LoadError
         
     | 
| 
       69 
67 
     | 
    
         
             
                  require 'bundler'
         
     | 
| 
       70 
     | 
    
         
            -
                   
     | 
| 
       71 
     | 
    
         
            -
             
     | 
| 
       72 
     | 
    
         
            -
             
     | 
| 
       73 
     | 
    
         
            -
             
     | 
| 
       74 
     | 
    
         
            -
             
     | 
| 
       75 
     | 
    
         
            -
             
     | 
| 
       76 
     | 
    
         
            -
             
     | 
| 
       77 
     | 
    
         
            -
                # Require bundled gems if they exist
         
     | 
| 
       78 
     | 
    
         
            -
                def require_vendored_gems
         
     | 
| 
       79 
     | 
    
         
            -
                  require_dependencies(root('/../vendor', 'gems', PADRINO_ENV))
         
     | 
| 
       80 
     | 
    
         
            -
                  say! " (Loading bundled gems)"
         
     | 
| 
       81 
     | 
    
         
            -
                rescue LoadError => e
         
     | 
| 
       82 
     | 
    
         
            -
                  say! " (Loading system gems)"
         
     | 
| 
      
 68 
     | 
    
         
            +
                  if File.exist?(root("Gemfile"))
         
     | 
| 
      
 69 
     | 
    
         
            +
                    Bundler::Dsl.load_gemfile(root("Gemfile")).require_env(Padrino.env)
         
     | 
| 
      
 70 
     | 
    
         
            +
                    say! "=> Located Gemfile for #{Padrino.env} with #{Padrino.support.to_s.humanize}"
         
     | 
| 
      
 71 
     | 
    
         
            +
                  else
         
     | 
| 
      
 72 
     | 
    
         
            +
                    say! "=> Gemfile for #{Padrino.env} not found!"
         
     | 
| 
      
 73 
     | 
    
         
            +
                  end
         
     | 
| 
       83 
74 
     | 
    
         
             
                end
         
     | 
| 
       84 
75 
     | 
    
         | 
| 
       85 
76 
     | 
    
         
             
                # Prints out a message to the stdout if not in test environment
         
     | 
| 
         @@ -0,0 +1,33 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            en:
         
     | 
| 
      
 2 
     | 
    
         
            +
              date:
         
     | 
| 
      
 3 
     | 
    
         
            +
                formats:
         
     | 
| 
      
 4 
     | 
    
         
            +
                  # Use the strftime parameters for formats.
         
     | 
| 
      
 5 
     | 
    
         
            +
                  # When no format has been given, it uses default.
         
     | 
| 
      
 6 
     | 
    
         
            +
                  # You can provide other formats here if you like!
         
     | 
| 
      
 7 
     | 
    
         
            +
                  default: "%Y-%m-%d"
         
     | 
| 
      
 8 
     | 
    
         
            +
                  short: "%b %d"
         
     | 
| 
      
 9 
     | 
    
         
            +
                  long: "%B %d, %Y"
         
     | 
| 
      
 10 
     | 
    
         
            +
                  
         
     | 
| 
      
 11 
     | 
    
         
            +
                day_names: [Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday]
         
     | 
| 
      
 12 
     | 
    
         
            +
                abbr_day_names: [Sun, Mon, Tue, Wed, Thu, Fri, Sat]
         
     | 
| 
      
 13 
     | 
    
         
            +
                  
         
     | 
| 
      
 14 
     | 
    
         
            +
                # Don't forget the nil at the beginning; there's no such thing as a 0th month
         
     | 
| 
      
 15 
     | 
    
         
            +
                month_names: [~, January, February, March, April, May, June, July, August, September, October, November, December]
         
     | 
| 
      
 16 
     | 
    
         
            +
                abbr_month_names: [~, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec]
         
     | 
| 
      
 17 
     | 
    
         
            +
                # Used in date_select and datime_select.
         
     | 
| 
      
 18 
     | 
    
         
            +
                order: [ :year, :month, :day ]
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
              time:
         
     | 
| 
      
 21 
     | 
    
         
            +
                formats:
         
     | 
| 
      
 22 
     | 
    
         
            +
                  default: "%a, %d %b %Y %H:%M:%S %z"
         
     | 
| 
      
 23 
     | 
    
         
            +
                  short: "%d %b %H:%M"
         
     | 
| 
      
 24 
     | 
    
         
            +
                  long: "%B %d, %Y %H:%M"
         
     | 
| 
      
 25 
     | 
    
         
            +
                am: "am"
         
     | 
| 
      
 26 
     | 
    
         
            +
                pm: "pm"
         
     | 
| 
      
 27 
     | 
    
         
            +
                  
         
     | 
| 
      
 28 
     | 
    
         
            +
            # Used in array.to_sentence.
         
     | 
| 
      
 29 
     | 
    
         
            +
              support:
         
     | 
| 
      
 30 
     | 
    
         
            +
                array:
         
     | 
| 
      
 31 
     | 
    
         
            +
                  words_connector: ", "
         
     | 
| 
      
 32 
     | 
    
         
            +
                  two_words_connector: " and "
         
     | 
| 
      
 33 
     | 
    
         
            +
                  last_word_connector: ", and "
         
     | 
    
        data/lib/padrino-core/logger.rb
    CHANGED
    
    | 
         @@ -102,7 +102,7 @@ module Padrino 
     | 
|
| 
       102 
102 
     | 
    
         
             
                  @log.sync          = true
         
     | 
| 
       103 
103 
     | 
    
         
             
                  @mutex             = @@mutex[@log] ||= Mutex.new
         
     | 
| 
       104 
104 
     | 
    
         
             
                  @format_datetime   = options[:format_datetime] || "%d/%b/%Y %H:%M:%S"
         
     | 
| 
       105 
     | 
    
         
            -
                  @format_message    = options[:format_message] || " 
     | 
| 
      
 105 
     | 
    
         
            +
                  @format_message    = options[:format_message] || "%-5s - [%s] \"%s\""
         
     | 
| 
       106 
106 
     | 
    
         
             
                end
         
     | 
| 
       107 
107 
     | 
    
         | 
| 
       108 
108 
     | 
    
         
             
                # Flush the entire buffer to the log object.
         
     | 
    
        data/lib/padrino-core/mounter.rb
    CHANGED
    
    | 
         @@ -59,7 +59,7 @@ module Padrino 
     | 
|
| 
       59 
59 
     | 
    
         | 
| 
       60 
60 
     | 
    
         
             
                # Returns the root to the mounted apps base directory
         
     | 
| 
       61 
61 
     | 
    
         
             
                def mounted_root(*args)
         
     | 
| 
       62 
     | 
    
         
            -
                   
     | 
| 
      
 62 
     | 
    
         
            +
                  Padrino.root(@mounted_root ||= "", *args)
         
     | 
| 
       63 
63 
     | 
    
         
             
                end
         
     | 
| 
       64 
64 
     | 
    
         | 
| 
       65 
65 
     | 
    
         
             
                # Returns the mounted padrino applications (MountedApp objects)
         
     | 
| 
         @@ -79,7 +79,7 @@ module Padrino 
     | 
|
| 
       79 
79 
     | 
    
         
             
                def mount_core(*args)
         
     | 
| 
       80 
80 
     | 
    
         
             
                  options = args.extract_options!
         
     | 
| 
       81 
81 
     | 
    
         
             
                  app_class = args.size > 0 ? args.first.to_s.camelize : nil
         
     | 
| 
       82 
     | 
    
         
            -
                  options.reverse_merge!(:app_class => app_class, :app_file => Padrino.root( 
     | 
| 
      
 82 
     | 
    
         
            +
                  options.reverse_merge!(:app_class => app_class, :app_file => Padrino.root("app", "app.rb"))
         
     | 
| 
       83 
83 
     | 
    
         
             
                  mount("core", options).to("/")
         
     | 
| 
       84 
84 
     | 
    
         
             
                end
         
     | 
| 
       85 
85 
     | 
    
         | 
    
        data/lib/padrino-core/stat.rb
    CHANGED
    
    
| 
         @@ -13,14 +13,27 @@ Required for Padrino to run: 
     | 
|
| 
       13 
13 
     | 
    
         
             
              * Object#present?
         
     | 
| 
       14 
14 
     | 
    
         
             
              * Hash#slice, Hash#slice!
         
     | 
| 
       15 
15 
     | 
    
         
             
              * Hash#to_params
         
     | 
| 
       16 
     | 
    
         
            -
              * Hash#symbolize_keys
         
     | 
| 
      
 16 
     | 
    
         
            +
              * Hash#symbolize_keys, Hash.symbolize_keys!
         
     | 
| 
       17 
17 
     | 
    
         
             
              * Hash#reverse_merge, Hash#reverse_merge!
         
     | 
| 
       18 
18 
     | 
    
         
             
              * SupportLite::OrderedHash
         
     | 
| 
       19 
19 
     | 
    
         | 
| 
       20 
20 
     | 
    
         
             
            =end
         
     | 
| 
      
 21 
     | 
    
         
            +
            require 'i18n'
         
     | 
| 
      
 22 
     | 
    
         
            +
            # Load our locales
         
     | 
| 
      
 23 
     | 
    
         
            +
            I18n.load_path += Dir["#{File.dirname(__FILE__)}/padrino-core/locale/*.yml"]
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            module Padrino
         
     | 
| 
      
 26 
     | 
    
         
            +
              # Return the current support used.
         
     | 
| 
      
 27 
     | 
    
         
            +
              # Can be one of: :extlib, :active_support
         
     | 
| 
      
 28 
     | 
    
         
            +
              def self.support
         
     | 
| 
      
 29 
     | 
    
         
            +
                @_padrino_support
         
     | 
| 
      
 30 
     | 
    
         
            +
              end
         
     | 
| 
      
 31 
     | 
    
         
            +
            end
         
     | 
| 
       21 
32 
     | 
    
         | 
| 
       22 
33 
     | 
    
         
             
            if defined?(Extlib) # load if already using extlib
         
     | 
| 
      
 34 
     | 
    
         
            +
              Padrino.instance_variable_set(:@_padrino_support, :extlib)
         
     | 
| 
       23 
35 
     | 
    
         
             
              require File.dirname(__FILE__) + '/support_lite/extlib_support'
         
     | 
| 
       24 
36 
     | 
    
         
             
            else # load active support by default
         
     | 
| 
      
 37 
     | 
    
         
            +
              Padrino.instance_variable_set(:@_padrino_support, :active_support)
         
     | 
| 
       25 
38 
     | 
    
         
             
              require File.dirname(__FILE__) + '/support_lite/as_support'
         
     | 
| 
       26 
     | 
    
         
            -
            end
         
     | 
| 
      
 39 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -12,7 +12,9 @@ require 'active_support/core_ext/class/attribute_accessors' unless Class.method_ 
     | 
|
| 
       12 
12 
     | 
    
         
             
            require 'active_support/core_ext/hash' unless Hash.method_defined?(:reverse_merge)
         
     | 
| 
       13 
13 
     | 
    
         
             
            ## Hash#to_params
         
     | 
| 
       14 
14 
     | 
    
         
             
            require 'active_support/core_ext/object' unless Object.method_defined?(:to_query)
         
     | 
| 
       15 
     | 
    
         
            -
            class Hash; alias to_params to_query; end unless Hash.method_defined?(:to_params)
         
     | 
| 
      
 15 
     | 
    
         
            +
            class Hash; alias :to_params :to_query; end unless Hash.method_defined?(:to_params)
         
     | 
| 
      
 16 
     | 
    
         
            +
            ## Object#with_options
         
     | 
| 
      
 17 
     | 
    
         
            +
            require 'active_support/option_merger'
         
     | 
| 
       16 
18 
     | 
    
         
             
            ## String#inflectors
         
     | 
| 
       17 
19 
     | 
    
         
             
            require 'active_support/inflector' unless String.method_defined?(:constantize)
         
     | 
| 
       18 
20 
     | 
    
         
             
            ## Object#blank?, Object#present?
         
     | 
| 
         @@ -21,6 +21,10 @@ unless Hash.method_defined?(:symbolize_keys) 
     | 
|
| 
       21 
21 
     | 
    
         
             
                def symbolize_keys
         
     | 
| 
       22 
22 
     | 
    
         
             
                  Mash.new(self).symbolize_keys
         
     | 
| 
       23 
23 
     | 
    
         
             
                end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                def symbolize_keys!
         
     | 
| 
      
 26 
     | 
    
         
            +
                  self.replace(symbolize_keys.to_hash)
         
     | 
| 
      
 27 
     | 
    
         
            +
                end
         
     | 
| 
       24 
28 
     | 
    
         
             
              end
         
     | 
| 
       25 
29 
     | 
    
         
             
            end
         
     | 
| 
       26 
30 
     | 
    
         | 
| 
         @@ -28,12 +32,36 @@ end 
     | 
|
| 
       28 
32 
     | 
    
         
             
            unless Hash.method_defined?(:slice)
         
     | 
| 
       29 
33 
     | 
    
         
             
              require 'extlib/hash'
         
     | 
| 
       30 
34 
     | 
    
         
             
              class Hash
         
     | 
| 
      
 35 
     | 
    
         
            +
                # Slice a hash to include only the given keys. This is useful for
         
     | 
| 
      
 36 
     | 
    
         
            +
                # limiting an options hash to valid keys before passing to a method:
         
     | 
| 
      
 37 
     | 
    
         
            +
                #
         
     | 
| 
      
 38 
     | 
    
         
            +
                #   def search(criteria = {})
         
     | 
| 
      
 39 
     | 
    
         
            +
                #     assert_valid_keys(:mass, :velocity, :time)
         
     | 
| 
      
 40 
     | 
    
         
            +
                #   end
         
     | 
| 
      
 41 
     | 
    
         
            +
                #
         
     | 
| 
      
 42 
     | 
    
         
            +
                #   search(options.slice(:mass, :velocity, :time))
         
     | 
| 
      
 43 
     | 
    
         
            +
                #
         
     | 
| 
      
 44 
     | 
    
         
            +
                # If you have an array of keys you want to limit to, you should splat them:
         
     | 
| 
      
 45 
     | 
    
         
            +
                #
         
     | 
| 
      
 46 
     | 
    
         
            +
                #   valid_keys = [:mass, :velocity, :time]
         
     | 
| 
      
 47 
     | 
    
         
            +
                #   search(options.slice(*valid_keys))
         
     | 
| 
       31 
48 
     | 
    
         
             
                def slice(*keys)
         
     | 
| 
       32 
49 
     | 
    
         
             
                  keys = keys.map! { |key| convert_key(key) } if respond_to?(:convert_key)
         
     | 
| 
       33 
50 
     | 
    
         
             
                  hash = self.class.new
         
     | 
| 
       34 
51 
     | 
    
         
             
                  keys.each { |k| hash[k] = self[k] if has_key?(k) }
         
     | 
| 
       35 
52 
     | 
    
         
             
                  hash
         
     | 
| 
       36 
53 
     | 
    
         
             
                end
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
                # Replaces the hash with only the given keys.
         
     | 
| 
      
 56 
     | 
    
         
            +
                # Returns a hash contained the removed key/value pairs
         
     | 
| 
      
 57 
     | 
    
         
            +
                #   {:a => 1, :b => 2, :c => 3, :d => 4}.slice!(:a, :b) # => {:c => 3, :d =>4}
         
     | 
| 
      
 58 
     | 
    
         
            +
                def slice!(*keys)
         
     | 
| 
      
 59 
     | 
    
         
            +
                  keys = keys.map! { |key| convert_key(key) } if respond_to?(:convert_key)
         
     | 
| 
      
 60 
     | 
    
         
            +
                  omit = slice(*self.keys - keys)
         
     | 
| 
      
 61 
     | 
    
         
            +
                  hash = slice(*keys)
         
     | 
| 
      
 62 
     | 
    
         
            +
                  replace(hash)
         
     | 
| 
      
 63 
     | 
    
         
            +
                  omit
         
     | 
| 
      
 64 
     | 
    
         
            +
                end
         
     | 
| 
       37 
65 
     | 
    
         
             
              end
         
     | 
| 
       38 
66 
     | 
    
         
             
            end
         
     | 
| 
       39 
67 
     | 
    
         | 
| 
         @@ -43,7 +71,7 @@ unless Hash.method_defined?(:to_params) 
     | 
|
| 
       43 
71 
     | 
    
         
             
            end
         
     | 
| 
       44 
72 
     | 
    
         | 
| 
       45 
73 
     | 
    
         
             
            ## Hash#reverse_merge, Hash#reverse_merge!
         
     | 
| 
       46 
     | 
    
         
            -
            unless Hash.method_defined?(: 
     | 
| 
      
 74 
     | 
    
         
            +
            unless Hash.method_defined?(:reverse_merge)
         
     | 
| 
       47 
75 
     | 
    
         
             
              class Hash
         
     | 
| 
       48 
76 
     | 
    
         
             
                def reverse_merge(other_hash)
         
     | 
| 
       49 
77 
     | 
    
         
             
                  other_hash.merge(self)
         
     | 
| 
         @@ -52,6 +80,15 @@ unless Hash.method_defined?(:present?) 
     | 
|
| 
       52 
80 
     | 
    
         
             
                def reverse_merge!(other_hash)
         
     | 
| 
       53 
81 
     | 
    
         
             
                  replace(reverse_merge(other_hash))
         
     | 
| 
       54 
82 
     | 
    
         
             
                end
         
     | 
| 
      
 83 
     | 
    
         
            +
             
     | 
| 
      
 84 
     | 
    
         
            +
                def deep_merge(other_hash)
         
     | 
| 
      
 85 
     | 
    
         
            +
                  target = dup
         
     | 
| 
      
 86 
     | 
    
         
            +
                  other_hash.each_pair do |k,v|
         
     | 
| 
      
 87 
     | 
    
         
            +
                    tv = target[k]
         
     | 
| 
      
 88 
     | 
    
         
            +
                    target[k] = tv.is_a?(Hash) && v.is_a?(Hash) ? tv.deep_merge(v) : v
         
     | 
| 
      
 89 
     | 
    
         
            +
                  end
         
     | 
| 
      
 90 
     | 
    
         
            +
                  target
         
     | 
| 
      
 91 
     | 
    
         
            +
                end
         
     | 
| 
       55 
92 
     | 
    
         
             
              end
         
     | 
| 
       56 
93 
     | 
    
         
             
            end
         
     | 
| 
       57 
94 
     | 
    
         | 
| 
         @@ -68,19 +105,22 @@ end 
     | 
|
| 
       68 
105 
     | 
    
         
             
            unless String.method_defined?(:constantize)
         
     | 
| 
       69 
106 
     | 
    
         
             
              require 'extlib/inflection'
         
     | 
| 
       70 
107 
     | 
    
         
             
              class String
         
     | 
| 
       71 
     | 
    
         
            -
                def classify; 
     | 
| 
       72 
     | 
    
         
            -
                def underscore; 
     | 
| 
      
 108 
     | 
    
         
            +
                def classify;    Extlib::Inflection.classify(self);    end
         
     | 
| 
      
 109 
     | 
    
         
            +
                def underscore;  Extlib::Inflection.underscore(self);  end
         
     | 
| 
       73 
110 
     | 
    
         
             
                def constantize; Extlib::Inflection.constantize(self); end
         
     | 
| 
      
 111 
     | 
    
         
            +
                def camelize;    Extlib::Inflection.camelize(self);    end
         
     | 
| 
      
 112 
     | 
    
         
            +
                def humanize;    Extlib::Inflection.humanize(self);    end
         
     | 
| 
      
 113 
     | 
    
         
            +
                alias :titleize :humanize
         
     | 
| 
       74 
114 
     | 
    
         
             
              end
         
     | 
| 
       75 
115 
     | 
    
         
             
            end
         
     | 
| 
       76 
116 
     | 
    
         | 
| 
       77 
117 
     | 
    
         
             
            ## Object#blank?
         
     | 
| 
       78 
     | 
    
         
            -
            unless  
     | 
| 
      
 118 
     | 
    
         
            +
            unless Object.method_defined?(:blank?)
         
     | 
| 
       79 
119 
     | 
    
         
             
              require 'extlib/blank'
         
     | 
| 
       80 
120 
     | 
    
         
             
            end
         
     | 
| 
       81 
121 
     | 
    
         | 
| 
       82 
122 
     | 
    
         
             
            ## Object#present?
         
     | 
| 
       83 
     | 
    
         
            -
            unless  
     | 
| 
      
 123 
     | 
    
         
            +
            unless Object.method_defined?(:present?)
         
     | 
| 
       84 
124 
     | 
    
         
             
              class Object
         
     | 
| 
       85 
125 
     | 
    
         
             
                def present?
         
     | 
| 
       86 
126 
     | 
    
         
             
                  !blank?
         
     | 
| 
         @@ -88,6 +128,37 @@ unless Array.method_defined?(:present?) 
     | 
|
| 
       88 
128 
     | 
    
         
             
              end
         
     | 
| 
       89 
129 
     | 
    
         
             
            end
         
     | 
| 
       90 
130 
     | 
    
         | 
| 
      
 131 
     | 
    
         
            +
            ## Object#with_options
         
     | 
| 
      
 132 
     | 
    
         
            +
            unless Object.method_defined?(:with_options)
         
     | 
| 
      
 133 
     | 
    
         
            +
              class SupportLite::OptionMerger #:nodoc:
         
     | 
| 
      
 134 
     | 
    
         
            +
                instance_methods.each do |method|
         
     | 
| 
      
 135 
     | 
    
         
            +
                  undef_method(method) if method !~ /^(__|instance_eval|class|object_id)/
         
     | 
| 
      
 136 
     | 
    
         
            +
                end
         
     | 
| 
      
 137 
     | 
    
         
            +
             
     | 
| 
      
 138 
     | 
    
         
            +
                def initialize(context, options)
         
     | 
| 
      
 139 
     | 
    
         
            +
                  @context, @options = context, options
         
     | 
| 
      
 140 
     | 
    
         
            +
                end
         
     | 
| 
      
 141 
     | 
    
         
            +
             
     | 
| 
      
 142 
     | 
    
         
            +
                private
         
     | 
| 
      
 143 
     | 
    
         
            +
                  def method_missing(method, *arguments, &block)
         
     | 
| 
      
 144 
     | 
    
         
            +
                    if arguments.last.is_a?(Proc)
         
     | 
| 
      
 145 
     | 
    
         
            +
                      proc = arguments.pop
         
     | 
| 
      
 146 
     | 
    
         
            +
                      arguments << lambda { |*args| @options.deep_merge(proc.call(*args)) }
         
     | 
| 
      
 147 
     | 
    
         
            +
                    else
         
     | 
| 
      
 148 
     | 
    
         
            +
                      arguments << (arguments.last.respond_to?(:to_hash) ? @options.deep_merge(arguments.pop) : @options.dup)
         
     | 
| 
      
 149 
     | 
    
         
            +
                    end
         
     | 
| 
      
 150 
     | 
    
         
            +
             
     | 
| 
      
 151 
     | 
    
         
            +
                    @context.__send__(method, *arguments, &block)
         
     | 
| 
      
 152 
     | 
    
         
            +
                  end
         
     | 
| 
      
 153 
     | 
    
         
            +
              end
         
     | 
| 
      
 154 
     | 
    
         
            +
             
     | 
| 
      
 155 
     | 
    
         
            +
              class Object
         
     | 
| 
      
 156 
     | 
    
         
            +
                def with_options(options)
         
     | 
| 
      
 157 
     | 
    
         
            +
                  yield SupportLite::OptionMerger.new(self, options)
         
     | 
| 
      
 158 
     | 
    
         
            +
                end
         
     | 
| 
      
 159 
     | 
    
         
            +
              end
         
     | 
| 
      
 160 
     | 
    
         
            +
            end
         
     | 
| 
      
 161 
     | 
    
         
            +
             
     | 
| 
       91 
162 
     | 
    
         
             
            ## Module#alias_method_chain
         
     | 
| 
       92 
163 
     | 
    
         
             
            unless Module.method_defined?(:alias_method_chain)
         
     | 
| 
       93 
164 
     | 
    
         
             
              def alias_method_chain(target, feature)
         
     | 
    
        data/lib/padrino-core/tasks.rb
    CHANGED
    
    
    
        data/padrino-core.gemspec
    CHANGED
    
    | 
         @@ -5,11 +5,11 @@ 
     | 
|
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
            Gem::Specification.new do |s|
         
     | 
| 
       7 
7 
     | 
    
         
             
              s.name = %q{padrino-core}
         
     | 
| 
       8 
     | 
    
         
            -
              s.version = "0. 
     | 
| 
      
 8 
     | 
    
         
            +
              s.version = "0.4.5"
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
10 
     | 
    
         
             
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         
     | 
| 
       11 
11 
     | 
    
         
             
              s.authors = ["Padrino Team", "Nathan Esquenazi", "Davide D'Agostino", "Arthur Chiu"]
         
     | 
| 
       12 
     | 
    
         
            -
              s.date = %q{ 
     | 
| 
      
 12 
     | 
    
         
            +
              s.date = %q{2010-01-06}
         
     | 
| 
       13 
13 
     | 
    
         
             
              s.default_executable = %q{padrino}
         
     | 
| 
       14 
14 
     | 
    
         
             
              s.description = %q{The Padrino core gem required for use of this framework}
         
     | 
| 
       15 
15 
     | 
    
         
             
              s.email = %q{nesquena@gmail.com}
         
     | 
| 
         @@ -29,6 +29,7 @@ Gem::Specification.new do |s| 
     | 
|
| 
       29 
29 
     | 
    
         
             
                 "lib/padrino-core/application.rb",
         
     | 
| 
       30 
30 
     | 
    
         
             
                 "lib/padrino-core/caller.rb",
         
     | 
| 
       31 
31 
     | 
    
         
             
                 "lib/padrino-core/loader.rb",
         
     | 
| 
      
 32 
     | 
    
         
            +
                 "lib/padrino-core/locale/en.yml",
         
     | 
| 
       32 
33 
     | 
    
         
             
                 "lib/padrino-core/logger.rb",
         
     | 
| 
       33 
34 
     | 
    
         
             
                 "lib/padrino-core/mounter.rb",
         
     | 
| 
       34 
35 
     | 
    
         
             
                 "lib/padrino-core/reloader.rb",
         
     | 
| 
         @@ -51,9 +52,9 @@ Gem::Specification.new do |s| 
     | 
|
| 
       51 
52 
     | 
    
         
             
                 "test/fixtures/apps/simple.rb",
         
     | 
| 
       52 
53 
     | 
    
         
             
                 "test/helper.rb",
         
     | 
| 
       53 
54 
     | 
    
         
             
                 "test/test_application.rb",
         
     | 
| 
      
 55 
     | 
    
         
            +
                 "test/test_core.rb",
         
     | 
| 
       54 
56 
     | 
    
         
             
                 "test/test_logger.rb",
         
     | 
| 
       55 
     | 
    
         
            -
                 "test/ 
     | 
| 
       56 
     | 
    
         
            -
                 "test/test_padrino_mounter.rb",
         
     | 
| 
      
 57 
     | 
    
         
            +
                 "test/test_mounter.rb",
         
     | 
| 
       57 
58 
     | 
    
         
             
                 "test/test_reloader_complex.rb",
         
     | 
| 
       58 
59 
     | 
    
         
             
                 "test/test_reloader_simple.rb",
         
     | 
| 
       59 
60 
     | 
    
         
             
                 "test/test_server.rb"
         
     | 
| 
         @@ -70,6 +71,7 @@ Gem::Specification.new do |s| 
     | 
|
| 
       70 
71 
     | 
    
         | 
| 
       71 
72 
     | 
    
         
             
                if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
         
     | 
| 
       72 
73 
     | 
    
         
             
                  s.add_runtime_dependency(%q<sinatra>, [">= 0.9.2"])
         
     | 
| 
      
 74 
     | 
    
         
            +
                  s.add_runtime_dependency(%q<i18n>, [">= 0.3.2"])
         
     | 
| 
       73 
75 
     | 
    
         
             
                  s.add_runtime_dependency(%q<thor>, [">= 0.11.8"])
         
     | 
| 
       74 
76 
     | 
    
         
             
                  s.add_development_dependency(%q<haml>, [">= 2.2.1"])
         
     | 
| 
       75 
77 
     | 
    
         
             
                  s.add_runtime_dependency(%q<bundler>, [">= 0.5.0"])
         
     | 
| 
         @@ -79,6 +81,7 @@ Gem::Specification.new do |s| 
     | 
|
| 
       79 
81 
     | 
    
         
             
                  s.add_development_dependency(%q<webrat>, [">= 0.5.1"])
         
     | 
| 
       80 
82 
     | 
    
         
             
                else
         
     | 
| 
       81 
83 
     | 
    
         
             
                  s.add_dependency(%q<sinatra>, [">= 0.9.2"])
         
     | 
| 
      
 84 
     | 
    
         
            +
                  s.add_dependency(%q<i18n>, [">= 0.3.2"])
         
     | 
| 
       82 
85 
     | 
    
         
             
                  s.add_dependency(%q<thor>, [">= 0.11.8"])
         
     | 
| 
       83 
86 
     | 
    
         
             
                  s.add_dependency(%q<haml>, [">= 2.2.1"])
         
     | 
| 
       84 
87 
     | 
    
         
             
                  s.add_dependency(%q<bundler>, [">= 0.5.0"])
         
     | 
| 
         @@ -89,6 +92,7 @@ Gem::Specification.new do |s| 
     | 
|
| 
       89 
92 
     | 
    
         
             
                end
         
     | 
| 
       90 
93 
     | 
    
         
             
              else
         
     | 
| 
       91 
94 
     | 
    
         
             
                s.add_dependency(%q<sinatra>, [">= 0.9.2"])
         
     | 
| 
      
 95 
     | 
    
         
            +
                s.add_dependency(%q<i18n>, [">= 0.3.2"])
         
     | 
| 
       92 
96 
     | 
    
         
             
                s.add_dependency(%q<thor>, [">= 0.11.8"])
         
     | 
| 
       93 
97 
     | 
    
         
             
                s.add_dependency(%q<haml>, [">= 2.2.1"])
         
     | 
| 
       94 
98 
     | 
    
         
             
                s.add_dependency(%q<bundler>, [">= 0.5.0"])
         
     | 
    
        data/test/helper.rb
    CHANGED
    
    | 
         @@ -23,7 +23,7 @@ module Kernel 
     | 
|
| 
       23 
23 
     | 
    
         
             
              alias :silence_stdout :silence_logger
         
     | 
| 
       24 
24 
     | 
    
         
             
            end
         
     | 
| 
       25 
25 
     | 
    
         | 
| 
       26 
     | 
    
         
            -
            class  
     | 
| 
      
 26 
     | 
    
         
            +
            class Class
         
     | 
| 
       27 
27 
     | 
    
         
             
              # Allow assertions in request context
         
     | 
| 
       28 
28 
     | 
    
         
             
              include Test::Unit::Assertions
         
     | 
| 
       29 
29 
     | 
    
         
             
            end
         
     | 
| 
         @@ -31,32 +31,23 @@ end 
     | 
|
| 
       31 
31 
     | 
    
         
             
            class Test::Unit::TestCase
         
     | 
| 
       32 
32 
     | 
    
         
             
              include Rack::Test::Methods
         
     | 
| 
       33 
33 
     | 
    
         | 
| 
       34 
     | 
    
         
            -
              # Test App
         
     | 
| 
       35 
     | 
    
         
            -
              class PadrinoTestApp < Padrino::Application; end
         
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
34 
     | 
    
         
             
              # Sets up a Sinatra::Base subclass defined with the block
         
     | 
| 
       38 
35 
     | 
    
         
             
              # given. Used in setup or individual spec methods to establish
         
     | 
| 
       39 
36 
     | 
    
         
             
              # the application.
         
     | 
| 
       40 
     | 
    
         
            -
              def mock_app(base= 
     | 
| 
      
 37 
     | 
    
         
            +
              def mock_app(base=Padrino::Application, &block)
         
     | 
| 
       41 
38 
     | 
    
         
             
                @app = Sinatra.new(base, &block)
         
     | 
| 
       42 
39 
     | 
    
         
             
              end
         
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
       44 
41 
     | 
    
         
             
              def app
         
     | 
| 
       45 
42 
     | 
    
         
             
                Rack::Lint.new(@app)
         
     | 
| 
       46 
43 
     | 
    
         
             
              end
         
     | 
| 
       47 
44 
     | 
    
         | 
| 
       48 
     | 
    
         
            -
              def stop_time_for_test
         
     | 
| 
       49 
     | 
    
         
            -
                time = Time.now
         
     | 
| 
       50 
     | 
    
         
            -
                Time.stubs(:now).returns(time)
         
     | 
| 
       51 
     | 
    
         
            -
                return time
         
     | 
| 
       52 
     | 
    
         
            -
              end
         
     | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
       54 
45 
     | 
    
         
             
              # Asserts that a file matches the pattern
         
     | 
| 
       55 
46 
     | 
    
         
             
              def assert_match_in_file(pattern, file)
         
     | 
| 
       56 
47 
     | 
    
         
             
                assert File.exist?(file), "File '#{file}' does not exist!"
         
     | 
| 
       57 
48 
     | 
    
         
             
                assert_match pattern, File.read(file)
         
     | 
| 
       58 
49 
     | 
    
         
             
              end
         
     | 
| 
       59 
     | 
    
         
            -
             
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
       60 
51 
     | 
    
         
             
              # Delegate other missing methods to response.
         
     | 
| 
       61 
52 
     | 
    
         
             
              def method_missing(name, *args, &block)
         
     | 
| 
       62 
53 
     | 
    
         
             
                if response && response.respond_to?(name)
         
     | 
    
        data/test/test_application.rb
    CHANGED
    
    | 
         @@ -2,10 +2,36 @@ require File.dirname(__FILE__) + '/helper' 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            class TestApplication < Test::Unit::TestCase
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
      
 5 
     | 
    
         
            +
              def with_layout(name=:application)
         
     | 
| 
      
 6 
     | 
    
         
            +
                # Build a temp layout
         
     | 
| 
      
 7 
     | 
    
         
            +
                FileUtils.mkdir_p(File.dirname(__FILE__) + "/views/layouts")
         
     | 
| 
      
 8 
     | 
    
         
            +
                layout = File.dirname(__FILE__) + "/views/layouts/#{name}.erb"
         
     | 
| 
      
 9 
     | 
    
         
            +
                File.open(layout, 'wb') { |io| io.write "this is a <%= yield %>" }
         
     | 
| 
      
 10 
     | 
    
         
            +
                yield
         
     | 
| 
      
 11 
     | 
    
         
            +
              ensure
         
     | 
| 
      
 12 
     | 
    
         
            +
                # Remove temp layout
         
     | 
| 
      
 13 
     | 
    
         
            +
                File.unlink(layout) rescue nil
         
     | 
| 
      
 14 
     | 
    
         
            +
                FileUtils.rm_rf(File.dirname(__FILE__) + "/views")
         
     | 
| 
      
 15 
     | 
    
         
            +
              end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
              def with_view(name, content)
         
     | 
| 
      
 18 
     | 
    
         
            +
                # Build a temp layout
         
     | 
| 
      
 19 
     | 
    
         
            +
                FileUtils.mkdir_p(File.dirname(__FILE__) + "/views")
         
     | 
| 
      
 20 
     | 
    
         
            +
                layout = File.dirname(__FILE__) + "/views/#{name}.erb"
         
     | 
| 
      
 21 
     | 
    
         
            +
                File.open(layout, 'wb') { |io| io.write content }
         
     | 
| 
      
 22 
     | 
    
         
            +
                yield
         
     | 
| 
      
 23 
     | 
    
         
            +
              ensure
         
     | 
| 
      
 24 
     | 
    
         
            +
                # Remove temp layout
         
     | 
| 
      
 25 
     | 
    
         
            +
                File.unlink(layout) rescue nil
         
     | 
| 
      
 26 
     | 
    
         
            +
                FileUtils.rm_rf(File.dirname(__FILE__) + "/views")
         
     | 
| 
      
 27 
     | 
    
         
            +
              end
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
              class PadrinoTestApp < Padrino::Application; end
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
       5 
31 
     | 
    
         
             
              context 'for application functionality' do
         
     | 
| 
       6 
32 
     | 
    
         | 
| 
       7 
33 
     | 
    
         
             
                should 'check default options' do
         
     | 
| 
       8 
     | 
    
         
            -
                  assert_match  
     | 
| 
      
 34 
     | 
    
         
            +
                  assert_match __FILE__, PadrinoTestApp.app_file
         
     | 
| 
       9 
35 
     | 
    
         
             
                  assert_equal :test, PadrinoTestApp.environment
         
     | 
| 
       10 
36 
     | 
    
         
             
                  assert_equal Padrino.root("views"), PadrinoTestApp.views
         
     | 
| 
       11 
37 
     | 
    
         
             
                  assert PadrinoTestApp.raise_errors
         
     | 
| 
         @@ -27,4 +53,129 @@ class TestApplication < Test::Unit::TestCase 
     | 
|
| 
       27 
53 
     | 
    
         
             
                  assert !PadrinoTestApp.padrino_helpers
         
     | 
| 
       28 
54 
     | 
    
         
             
                end
         
     | 
| 
       29 
55 
     | 
    
         
             
              end
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
              context 'for application layout functionality' do
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
      
 59 
     | 
    
         
            +
                should 'get no layout' do
         
     | 
| 
      
 60 
     | 
    
         
            +
                  mock_app do
         
     | 
| 
      
 61 
     | 
    
         
            +
                    get("/"){ "no layout" }
         
     | 
| 
      
 62 
     | 
    
         
            +
                  end
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
                  get "/"
         
     | 
| 
      
 65 
     | 
    
         
            +
                  assert_equal "no layout", body
         
     | 
| 
      
 66 
     | 
    
         
            +
                end
         
     | 
| 
      
 67 
     | 
    
         
            +
             
     | 
| 
      
 68 
     | 
    
         
            +
                should 'be compatible with sinatra layout' do
         
     | 
| 
      
 69 
     | 
    
         
            +
                  mock_app do
         
     | 
| 
      
 70 
     | 
    
         
            +
                    layout do
         
     | 
| 
      
 71 
     | 
    
         
            +
                      "this is a <%= yield %>"
         
     | 
| 
      
 72 
     | 
    
         
            +
                    end
         
     | 
| 
      
 73 
     | 
    
         
            +
                    
         
     | 
| 
      
 74 
     | 
    
         
            +
                    get("/"){ render :erb, "sinatra layout" }
         
     | 
| 
      
 75 
     | 
    
         
            +
                  end
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
      
 77 
     | 
    
         
            +
                  get "/"
         
     | 
| 
      
 78 
     | 
    
         
            +
                  assert_equal "this is a sinatra layout", body
         
     | 
| 
      
 79 
     | 
    
         
            +
                end
         
     | 
| 
      
 80 
     | 
    
         
            +
             
     | 
| 
      
 81 
     | 
    
         
            +
                should 'use rails way layout' do
         
     | 
| 
      
 82 
     | 
    
         
            +
                  with_layout do
         
     | 
| 
      
 83 
     | 
    
         
            +
                    mock_app do
         
     | 
| 
      
 84 
     | 
    
         
            +
                      get("/"){ render :erb, "rails way layout" }
         
     | 
| 
      
 85 
     | 
    
         
            +
                    end
         
     | 
| 
      
 86 
     | 
    
         
            +
             
     | 
| 
      
 87 
     | 
    
         
            +
                    get "/"
         
     | 
| 
      
 88 
     | 
    
         
            +
                    assert_equal "this is a rails way layout", body
         
     | 
| 
      
 89 
     | 
    
         
            +
                  end
         
     | 
| 
      
 90 
     | 
    
         
            +
                end
         
     | 
| 
      
 91 
     | 
    
         
            +
             
     | 
| 
      
 92 
     | 
    
         
            +
                should 'use rails way for a custom layout' do
         
     | 
| 
      
 93 
     | 
    
         
            +
                  with_layout :custom do
         
     | 
| 
      
 94 
     | 
    
         
            +
                    mock_app do
         
     | 
| 
      
 95 
     | 
    
         
            +
                      layout :custom
         
     | 
| 
      
 96 
     | 
    
         
            +
                      get("/"){ render :erb, "rails way custom layout" }
         
     | 
| 
      
 97 
     | 
    
         
            +
                    end
         
     | 
| 
      
 98 
     | 
    
         
            +
             
     | 
| 
      
 99 
     | 
    
         
            +
                    get "/"
         
     | 
| 
      
 100 
     | 
    
         
            +
                    assert_equal "this is a rails way custom layout", body
         
     | 
| 
      
 101 
     | 
    
         
            +
                  end
         
     | 
| 
      
 102 
     | 
    
         
            +
                end
         
     | 
| 
      
 103 
     | 
    
         
            +
              end
         
     | 
| 
      
 104 
     | 
    
         
            +
             
     | 
| 
      
 105 
     | 
    
         
            +
              context 'for application render functionality' do
         
     | 
| 
      
 106 
     | 
    
         
            +
             
     | 
| 
      
 107 
     | 
    
         
            +
                should 'be compatible with sinatra render' do
         
     | 
| 
      
 108 
     | 
    
         
            +
                  mock_app do
         
     | 
| 
      
 109 
     | 
    
         
            +
                    get("/"){ render :erb, "<%= 1+2 %>" }
         
     | 
| 
      
 110 
     | 
    
         
            +
                  end
         
     | 
| 
      
 111 
     | 
    
         
            +
                  get "/"
         
     | 
| 
      
 112 
     | 
    
         
            +
                  assert_equal "3", body
         
     | 
| 
      
 113 
     | 
    
         
            +
                end
         
     | 
| 
      
 114 
     | 
    
         
            +
             
     | 
| 
      
 115 
     | 
    
         
            +
                should 'be compatible with sinatra views' do
         
     | 
| 
      
 116 
     | 
    
         
            +
                  with_view :index, "<%= 1+2 %>" do
         
     | 
| 
      
 117 
     | 
    
         
            +
                    mock_app do
         
     | 
| 
      
 118 
     | 
    
         
            +
                      get("/foo") { render :erb, :index }
         
     | 
| 
      
 119 
     | 
    
         
            +
                      get("/bar") { erb :index }
         
     | 
| 
      
 120 
     | 
    
         
            +
                      get("/dir") { "3" }
         
     | 
| 
      
 121 
     | 
    
         
            +
                      get("/inj") { erb "<%= 2+1 %>" }
         
     | 
| 
      
 122 
     | 
    
         
            +
                      get("/rnj") { render :erb, "<%= 2+1 %>" }
         
     | 
| 
      
 123 
     | 
    
         
            +
                    end
         
     | 
| 
      
 124 
     | 
    
         
            +
                    get "/foo"
         
     | 
| 
      
 125 
     | 
    
         
            +
                    assert_equal "3", body
         
     | 
| 
      
 126 
     | 
    
         
            +
                    get "/bar"
         
     | 
| 
      
 127 
     | 
    
         
            +
                    assert_equal "3", body
         
     | 
| 
      
 128 
     | 
    
         
            +
                    get "/dir"
         
     | 
| 
      
 129 
     | 
    
         
            +
                    assert_equal "3", body
         
     | 
| 
      
 130 
     | 
    
         
            +
                    get "/inj"
         
     | 
| 
      
 131 
     | 
    
         
            +
                    assert_equal "3", body
         
     | 
| 
      
 132 
     | 
    
         
            +
                    get "/rnj"
         
     | 
| 
      
 133 
     | 
    
         
            +
                    assert_equal "3", body
         
     | 
| 
      
 134 
     | 
    
         
            +
                  end
         
     | 
| 
      
 135 
     | 
    
         
            +
                end
         
     | 
| 
      
 136 
     | 
    
         
            +
             
     | 
| 
      
 137 
     | 
    
         
            +
                should 'resolve template engine' do
         
     | 
| 
      
 138 
     | 
    
         
            +
                  with_view :index, "<%= 1+2 %>" do
         
     | 
| 
      
 139 
     | 
    
         
            +
                    mock_app do
         
     | 
| 
      
 140 
     | 
    
         
            +
                      get("/foo") { render :index }
         
     | 
| 
      
 141 
     | 
    
         
            +
                      get("/bar") { render "/index" }
         
     | 
| 
      
 142 
     | 
    
         
            +
                    end
         
     | 
| 
      
 143 
     | 
    
         
            +
                    get "/foo"
         
     | 
| 
      
 144 
     | 
    
         
            +
                    assert_equal "3", body
         
     | 
| 
      
 145 
     | 
    
         
            +
                    get "/bar"
         
     | 
| 
      
 146 
     | 
    
         
            +
                    assert_equal "3", body
         
     | 
| 
      
 147 
     | 
    
         
            +
                  end
         
     | 
| 
      
 148 
     | 
    
         
            +
                end
         
     | 
| 
      
 149 
     | 
    
         
            +
              end
         
     | 
| 
      
 150 
     | 
    
         
            +
             
     | 
| 
      
 151 
     | 
    
         
            +
              context 'for application i18n functionality' do
         
     | 
| 
      
 152 
     | 
    
         
            +
             
     | 
| 
      
 153 
     | 
    
         
            +
                should 'have a default locale en and auto_locale disabled' do
         
     | 
| 
      
 154 
     | 
    
         
            +
                  mock_app do
         
     | 
| 
      
 155 
     | 
    
         
            +
                    assert_equal :en, locale
         
     | 
| 
      
 156 
     | 
    
         
            +
                    assert !auto_locale
         
     | 
| 
      
 157 
     | 
    
         
            +
                  end
         
     | 
| 
      
 158 
     | 
    
         
            +
                end
         
     | 
| 
      
 159 
     | 
    
         
            +
             
     | 
| 
      
 160 
     | 
    
         
            +
                should 'change default locale from settings' do
         
     | 
| 
      
 161 
     | 
    
         
            +
                  mock_app do
         
     | 
| 
      
 162 
     | 
    
         
            +
                    set :locale, :it
         
     | 
| 
      
 163 
     | 
    
         
            +
                    enable :auto_locale
         
     | 
| 
      
 164 
     | 
    
         
            +
                    assert_equal :it, locale
         
     | 
| 
      
 165 
     | 
    
         
            +
                    assert auto_locale
         
     | 
| 
      
 166 
     | 
    
         
            +
                  end
         
     | 
| 
      
 167 
     | 
    
         
            +
                end
         
     | 
| 
      
 168 
     | 
    
         
            +
             
     | 
| 
      
 169 
     | 
    
         
            +
                should 'set locale when auto_locale is enabled' do
         
     | 
| 
      
 170 
     | 
    
         
            +
                  mock_app do
         
     | 
| 
      
 171 
     | 
    
         
            +
                    enable :auto_locale
         
     | 
| 
      
 172 
     | 
    
         
            +
                    get("/:locale"){ I18n.locale.to_s }
         
     | 
| 
      
 173 
     | 
    
         
            +
                  end
         
     | 
| 
      
 174 
     | 
    
         
            +
             
     | 
| 
      
 175 
     | 
    
         
            +
                  %w(it de fr).each do |lang|
         
     | 
| 
      
 176 
     | 
    
         
            +
                    get("/#{lang}")
         
     | 
| 
      
 177 
     | 
    
         
            +
                    assert_equal lang, body
         
     | 
| 
      
 178 
     | 
    
         
            +
                  end
         
     | 
| 
      
 179 
     | 
    
         
            +
                end
         
     | 
| 
      
 180 
     | 
    
         
            +
              end
         
     | 
| 
       30 
181 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require File.dirname(__FILE__) + '/helper'
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
            class  
     | 
| 
      
 3 
     | 
    
         
            +
            class TestMounter < Test::Unit::TestCase
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
              def setup
         
     | 
| 
       6 
6 
     | 
    
         
             
                Padrino.mounted_apps.clear
         
     | 
| 
         @@ -27,7 +27,7 @@ class TestPadrinoMounter < Test::Unit::TestCase 
     | 
|
| 
       27 
27 
     | 
    
         
             
                  mounter.to("/test")
         
     | 
| 
       28 
28 
     | 
    
         
             
                  assert_equal "test", mounter.name
         
     | 
| 
       29 
29 
     | 
    
         
             
                  assert_equal "Test", mounter.app_class
         
     | 
| 
       30 
     | 
    
         
            -
                  assert_match %r{test/ 
     | 
| 
      
 30 
     | 
    
         
            +
                  assert_match %r{test/app.rb}, mounter.app_file
         
     | 
| 
       31 
31 
     | 
    
         
             
                  assert_equal "/test", mounter.uri_root
         
     | 
| 
       32 
32 
     | 
    
         
             
                  assert_nil mounter.app_root
         
     | 
| 
       33 
33 
     | 
    
         
             
                end
         
     | 
| 
         @@ -46,7 +46,7 @@ class TestPadrinoMounter < Test::Unit::TestCase 
     | 
|
| 
       46 
46 
     | 
    
         
             
                  assert_equal Test, mounter.app_obj
         
     | 
| 
       47 
47 
     | 
    
         
             
                  assert_equal Padrino.root('app/app.rb'), mounter.app_file
         
     | 
| 
       48 
48 
     | 
    
         
             
                  assert_equal "/", mounter.uri_root
         
     | 
| 
       49 
     | 
    
         
            -
                  assert_equal  
     | 
| 
      
 49 
     | 
    
         
            +
                  assert_equal nil, mounter.app_root
         
     | 
| 
       50 
50 
     | 
    
         
             
                end
         
     | 
| 
       51 
51 
     | 
    
         | 
| 
       52 
52 
     | 
    
         
             
                should 'mount multiple apps' do
         
     | 
| 
         @@ -71,7 +71,7 @@ class TestPadrinoMounter < Test::Unit::TestCase 
     | 
|
| 
       71 
71 
     | 
    
         
             
                  Padrino.mounted_root = "apps"
         
     | 
| 
       72 
72 
     | 
    
         
             
                  assert_equal Padrino.root("apps", "test", "app.rb"), Padrino.mounted_root("test", "app.rb")
         
     | 
| 
       73 
73 
     | 
    
         
             
                  Padrino.mounted_root = nil
         
     | 
| 
       74 
     | 
    
         
            -
                  assert_equal Padrino.root(" 
     | 
| 
      
 74 
     | 
    
         
            +
                  assert_equal Padrino.root("test", "app.rb"), Padrino.mounted_root("test", "app.rb")
         
     | 
| 
       75 
75 
     | 
    
         
             
                end
         
     | 
| 
       76 
76 
     | 
    
         | 
| 
       77 
77 
     | 
    
         
             
                should 'correctly instantiate a new padrino application' do
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification 
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: padrino-core
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version 
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.4.5
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors: 
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Padrino Team
         
     | 
| 
         @@ -12,7 +12,7 @@ autorequire: 
     | 
|
| 
       12 
12 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       13 
13 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       14 
14 
     | 
    
         | 
| 
       15 
     | 
    
         
            -
            date:  
     | 
| 
      
 15 
     | 
    
         
            +
            date: 2010-01-06 00:00:00 +01:00
         
     | 
| 
       16 
16 
     | 
    
         
             
            default_executable: padrino
         
     | 
| 
       17 
17 
     | 
    
         
             
            dependencies: 
         
     | 
| 
       18 
18 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
         @@ -25,6 +25,16 @@ dependencies: 
     | 
|
| 
       25 
25 
     | 
    
         
             
                  - !ruby/object:Gem::Version 
         
     | 
| 
       26 
26 
     | 
    
         
             
                    version: 0.9.2
         
     | 
| 
       27 
27 
     | 
    
         
             
                version: 
         
     | 
| 
      
 28 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 29 
     | 
    
         
            +
              name: i18n
         
     | 
| 
      
 30 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 31 
     | 
    
         
            +
              version_requirement: 
         
     | 
| 
      
 32 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement 
         
     | 
| 
      
 33 
     | 
    
         
            +
                requirements: 
         
     | 
| 
      
 34 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 35 
     | 
    
         
            +
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 36 
     | 
    
         
            +
                    version: 0.3.2
         
     | 
| 
      
 37 
     | 
    
         
            +
                version: 
         
     | 
| 
       28 
38 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
       29 
39 
     | 
    
         
             
              name: thor
         
     | 
| 
       30 
40 
     | 
    
         
             
              type: :runtime
         
     | 
| 
         @@ -115,6 +125,7 @@ files: 
     | 
|
| 
       115 
125 
     | 
    
         
             
            - lib/padrino-core/application.rb
         
     | 
| 
       116 
126 
     | 
    
         
             
            - lib/padrino-core/caller.rb
         
     | 
| 
       117 
127 
     | 
    
         
             
            - lib/padrino-core/loader.rb
         
     | 
| 
      
 128 
     | 
    
         
            +
            - lib/padrino-core/locale/en.yml
         
     | 
| 
       118 
129 
     | 
    
         
             
            - lib/padrino-core/logger.rb
         
     | 
| 
       119 
130 
     | 
    
         
             
            - lib/padrino-core/mounter.rb
         
     | 
| 
       120 
131 
     | 
    
         
             
            - lib/padrino-core/reloader.rb
         
     | 
| 
         @@ -137,9 +148,9 @@ files: 
     | 
|
| 
       137 
148 
     | 
    
         
             
            - test/fixtures/apps/simple.rb
         
     | 
| 
       138 
149 
     | 
    
         
             
            - test/helper.rb
         
     | 
| 
       139 
150 
     | 
    
         
             
            - test/test_application.rb
         
     | 
| 
      
 151 
     | 
    
         
            +
            - test/test_core.rb
         
     | 
| 
       140 
152 
     | 
    
         
             
            - test/test_logger.rb
         
     | 
| 
       141 
     | 
    
         
            -
            - test/ 
     | 
| 
       142 
     | 
    
         
            -
            - test/test_padrino_mounter.rb
         
     | 
| 
      
 153 
     | 
    
         
            +
            - test/test_mounter.rb
         
     | 
| 
       143 
154 
     | 
    
         
             
            - test/test_reloader_complex.rb
         
     | 
| 
       144 
155 
     | 
    
         
             
            - test/test_reloader_simple.rb
         
     | 
| 
       145 
156 
     | 
    
         
             
            - test/test_server.rb
         
     |