nekonote-framework 1.0.0.pre.beta
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.
- checksums.yaml +7 -0
 - data/LICENSE +22 -0
 - data/README.md +49 -0
 - data/bin/nekonote +45 -0
 - data/data/structure/Gemfile +25 -0
 - data/data/structure/config.ru +14 -0
 - data/data/structure/handler/base.rb +21 -0
 - data/data/structure/handler/error.rb +35 -0
 - data/data/structure/handler/welcome.rb +11 -0
 - data/data/structure/lib/.gitkeep +0 -0
 - data/data/structure/preference/development/logger.yml +62 -0
 - data/data/structure/preference/development/middlewares.rb +152 -0
 - data/data/structure/preference/development/public.yml +29 -0
 - data/data/structure/preference/development/route.yml +30 -0
 - data/data/structure/preference/development/route_error.yml +28 -0
 - data/data/structure/preference/development/route_include.yml +22 -0
 - data/data/structure/preference/development/server/puma.rb +63 -0
 - data/data/structure/preference/development/setting/example.yml +40 -0
 - data/data/structure/preference/development/setting/site.yml +3 -0
 - data/data/structure/preference/development/setting/welcome.yml +7 -0
 - data/data/structure/public/css/layout/common.css +11 -0
 - data/data/structure/public/css/layout/default.css +3 -0
 - data/data/structure/public/css/layout/error.css +3 -0
 - data/data/structure/public/css/welcome.css +47 -0
 - data/data/structure/public/favicon.ico +0 -0
 - data/data/structure/public/img/.gitkeep +0 -0
 - data/data/structure/public/img/logo.png +0 -0
 - data/data/structure/public/js/.gitkeep +0 -0
 - data/data/structure/static/layout/default.tpl +19 -0
 - data/data/structure/static/layout/error.tpl +15 -0
 - data/data/structure/static/sass/welcome.scss +52 -0
 - data/data/structure/static/template/error.tpl +4 -0
 - data/data/structure/static/template/welcome/index.tpl +26 -0
 - data/data/structure/tmp/pids/.gitkeep +0 -0
 - data/lib/loader.rb +83 -0
 - data/lib/nekonote.rb +9 -0
 - data/lib/nekonote/cli.rb +702 -0
 - data/lib/nekonote/cmd_parser.rb +55 -0
 - data/lib/nekonote/core.rb +116 -0
 - data/lib/nekonote/env.rb +56 -0
 - data/lib/nekonote/exception/cli_error.rb +34 -0
 - data/lib/nekonote/exception/error.rb +75 -0
 - data/lib/nekonote/exception/handler_error.rb +5 -0
 - data/lib/nekonote/exception/logger_error.rb +8 -0
 - data/lib/nekonote/exception/page_cache_error.rb +6 -0
 - data/lib/nekonote/exception/preference_error.rb +11 -0
 - data/lib/nekonote/exception/view_error.rb +7 -0
 - data/lib/nekonote/handler.rb +274 -0
 - data/lib/nekonote/handler/protected_methods.rb +119 -0
 - data/lib/nekonote/liquid/tag_env_get.rb +12 -0
 - data/lib/nekonote/liquid/tag_setting_get.rb +12 -0
 - data/lib/nekonote/logger.rb +135 -0
 - data/lib/nekonote/page_cache.rb +111 -0
 - data/lib/nekonote/preference.rb +215 -0
 - data/lib/nekonote/puma.rb +131 -0
 - data/lib/nekonote/rack/rack_static.rb +17 -0
 - data/lib/nekonote/rack/rack_static_file.rb +19 -0
 - data/lib/nekonote/rack/url_mapper.rb +193 -0
 - data/lib/nekonote/rackup.rb +319 -0
 - data/lib/nekonote/request.rb +295 -0
 - data/lib/nekonote/setting.rb +59 -0
 - data/lib/nekonote/spec.rb +22 -0
 - data/lib/nekonote/util/filer.rb +69 -0
 - data/lib/nekonote/util/process.rb +43 -0
 - data/lib/nekonote/view.rb +398 -0
 - data/lib/nekonote/yaml_access.rb +60 -0
 - metadata +144 -0
 
| 
         @@ -0,0 +1,29 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # Publishing Static Files
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            # Sets directories to publish
         
     | 
| 
      
 4 
     | 
    
         
            +
            # Files under the directory are published recursively
         
     | 
| 
      
 5 
     | 
    
         
            +
            published_directory:
         
     | 
| 
      
 6 
     | 
    
         
            +
                - css  # public/css/* will be published recursively
         
     | 
| 
      
 7 
     | 
    
         
            +
                - js   # public/js/*  will be published recursively
         
     | 
| 
      
 8 
     | 
    
         
            +
                - img  # public/img/* will be published recursively
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            # Sets files to publish
         
     | 
| 
      
 11 
     | 
    
         
            +
            published_file:
         
     | 
| 
      
 12 
     | 
    
         
            +
                - favicon.ico # public/favicon.ico will be published
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            # Sets headers to add published static files
         
     | 
| 
      
 15 
     | 
    
         
            +
            custom_header:
         
     | 
| 
      
 16 
     | 
    
         
            +
                # Sets HTTP headers to all files located in the ‘public’ directory.
         
     | 
| 
      
 17 
     | 
    
         
            +
                all:
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                # Sets HTTP headers to files located under a specific directory.
         
     | 
| 
      
 20 
     | 
    
         
            +
                directory:
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
                # Sets HTTP headers to files with a specific file name extension
         
     | 
| 
      
 23 
     | 
    
         
            +
                extension:
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                # Sets HTTP headers to files matched a specific regular expression.
         
     | 
| 
      
 26 
     | 
    
         
            +
                regexp:
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
                # Sets HTTP headers to most common web font formats.
         
     | 
| 
      
 29 
     | 
    
         
            +
                fonts:
         
     | 
| 
         @@ -0,0 +1,30 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # Routes Configuration
         
     | 
| 
      
 2 
     | 
    
         
            +
            #
         
     | 
| 
      
 3 
     | 
    
         
            +
            # e.g.
         
     | 
| 
      
 4 
     | 
    
         
            +
            # FooHandler:
         
     | 
| 
      
 5 
     | 
    
         
            +
            #    path: /foo                                                    # This is required. The following directives are optional.
         
     | 
| 
      
 6 
     | 
    
         
            +
            #    execute: foo                                                  # It says FooHandler#foo method is called when route matches.
         
     | 
| 
      
 7 
     | 
    
         
            +
            #    method: GET, POST                                             # It says GET or POST requests are accepted.
         
     | 
| 
      
 8 
     | 
    
         
            +
            #    params: foo=int, bar=string, baz=array, qux=float, quux=bool  # The listed parameters are accepted and are coverted to its expected types.
         
     | 
| 
      
 9 
     | 
    
         
            +
            #    content: json                                                 # It says Content-Type: application/json is set to response.
         
     | 
| 
      
 10 
     | 
    
         
            +
            #    template: foo                                                 # static/template/foo.tpl is rendered.
         
     | 
| 
      
 11 
     | 
    
         
            +
            #    layout: common                                                # static/layout/common.tpl is rendered
         
     | 
| 
      
 12 
     | 
    
         
            +
            #    # page_cache_time: 3600                                       # if you need page caching this route, need to comment out it.
         
     | 
| 
      
 13 
     | 
    
         
            +
            #    custom: some value                                            # unknown fields are not directive. It will be assigned into your templates.
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            # ----------------------
         
     | 
| 
      
 16 
     | 
    
         
            +
            # Route Options
         
     | 
| 
      
 17 
     | 
    
         
            +
            # ----------------------
         
     | 
| 
      
 18 
     | 
    
         
            +
            preference:
         
     | 
| 
      
 19 
     | 
    
         
            +
                path_as_regexp: false
         
     | 
| 
      
 20 
     | 
    
         
            +
                allow_dup_slash: false
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            # ----------------------
         
     | 
| 
      
 23 
     | 
    
         
            +
            # Routes
         
     | 
| 
      
 24 
     | 
    
         
            +
            # ----------------------
         
     | 
| 
      
 25 
     | 
    
         
            +
            WelcomeHandler:
         
     | 
| 
      
 26 
     | 
    
         
            +
                path: /
         
     | 
| 
      
 27 
     | 
    
         
            +
                execute: index
         
     | 
| 
      
 28 
     | 
    
         
            +
                template: welcome/index
         
     | 
| 
      
 29 
     | 
    
         
            +
                css: /css/welcome.css
         
     | 
| 
      
 30 
     | 
    
         
            +
                page-title: Welcome
         
     | 
| 
         @@ -0,0 +1,28 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # Routing for Error Pages
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            # This route is used when any route does not match a URL.
         
     | 
| 
      
 4 
     | 
    
         
            +
            # You must set “path_as_regexp” directive to “true” which in route.yml to use this route.
         
     | 
| 
      
 5 
     | 
    
         
            +
            missing_route:
         
     | 
| 
      
 6 
     | 
    
         
            +
                handler: ErrorHandler
         
     | 
| 
      
 7 
     | 
    
         
            +
                execute: missing_route
         
     | 
| 
      
 8 
     | 
    
         
            +
                layout: error
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            # This route is used when some value is set to “method” directive in route.y
         
     | 
| 
      
 11 
     | 
    
         
            +
            #   and a request HTTP method is not declared in that value.
         
     | 
| 
      
 12 
     | 
    
         
            +
            wrong_http_method:
         
     | 
| 
      
 13 
     | 
    
         
            +
                handler: ErrorHandler
         
     | 
| 
      
 14 
     | 
    
         
            +
                execute: wrong_http_method
         
     | 
| 
      
 15 
     | 
    
         
            +
                layout: error
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            # This route is used when a fatal error raised in program.
         
     | 
| 
      
 18 
     | 
    
         
            +
            # The exception object is set to a property called @error in a Handler you specified.
         
     | 
| 
      
 19 
     | 
    
         
            +
            fatal:
         
     | 
| 
      
 20 
     | 
    
         
            +
                handler: ErrorHandler
         
     | 
| 
      
 21 
     | 
    
         
            +
                execute: fatal
         
     | 
| 
      
 22 
     | 
    
         
            +
                layout: error
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
            # This route is used when a requested file dosen’t exist under the “public” directo
         
     | 
| 
      
 25 
     | 
    
         
            +
            not_found:
         
     | 
| 
      
 26 
     | 
    
         
            +
                handler: ErrorHandler
         
     | 
| 
      
 27 
     | 
    
         
            +
                execute: not_found
         
     | 
| 
      
 28 
     | 
    
         
            +
                layout: error
         
     | 
| 
         @@ -0,0 +1,22 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # This file is supposed to configure a group of some common preferences to configure routes in route.yml.
         
     | 
| 
      
 2 
     | 
    
         
            +
            # You may specify common preferences set here by 'include' directive in route.yml.
         
     | 
| 
      
 3 
     | 
    
         
            +
            #
         
     | 
| 
      
 4 
     | 
    
         
            +
            # e.g.
         
     | 
| 
      
 5 
     | 
    
         
            +
            # common:
         
     | 
| 
      
 6 
     | 
    
         
            +
            #     method: GET
         
     | 
| 
      
 7 
     | 
    
         
            +
            #     params: id=int
         
     | 
| 
      
 8 
     | 
    
         
            +
            #     content: json
         
     | 
| 
      
 9 
     | 
    
         
            +
            #     template: false
         
     | 
| 
      
 10 
     | 
    
         
            +
            #     layoute: false
         
     | 
| 
      
 11 
     | 
    
         
            +
            #
         
     | 
| 
      
 12 
     | 
    
         
            +
            # In order to set the above preferences you must write 'include' directive like:
         
     | 
| 
      
 13 
     | 
    
         
            +
            #
         
     | 
| 
      
 14 
     | 
    
         
            +
            # FooHandler:
         
     | 
| 
      
 15 
     | 
    
         
            +
            #     path: /foo
         
     | 
| 
      
 16 
     | 
    
         
            +
            #     method: foo
         
     | 
| 
      
 17 
     | 
    
         
            +
            #     include: common 
         
     | 
| 
      
 18 
     | 
    
         
            +
            #
         
     | 
| 
      
 19 
     | 
    
         
            +
            # BarHandler:
         
     | 
| 
      
 20 
     | 
    
         
            +
            #     path: /bar
         
     | 
| 
      
 21 
     | 
    
         
            +
            #     method: bar
         
     | 
| 
      
 22 
     | 
    
         
            +
            #     include: common
         
     | 
| 
         @@ -0,0 +1,63 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #!/usr/bin/env puma
         
     | 
| 
      
 2 
     | 
    
         
            +
            # Configuration for puma web server.
         
     | 
| 
      
 3 
     | 
    
         
            +
            # Please check the reference manual of Puma to get more information.
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            # document root
         
     | 
| 
      
 6 
     | 
    
         
            +
            # It's supposed to be set absolute path to application root.
         
     | 
| 
      
 7 
     | 
    
         
            +
            _app_root = 'REPLACE_ME_TO_APP_ROOT'
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            # host address to bind
         
     | 
| 
      
 10 
     | 
    
         
            +
            _host = '0.0.0.0'
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            # listen port
         
     | 
| 
      
 13 
     | 
    
         
            +
            _port = '2002'
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            # the directory to oparate out of
         
     | 
| 
      
 16 
     | 
    
         
            +
            directory _app_root
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            # where bind to
         
     | 
| 
      
 19 
     | 
    
         
            +
            # e.g. bind 'unix:///var/run/puma.sock'
         
     | 
| 
      
 20 
     | 
    
         
            +
            # e.g. bind 'unix:///var/run/puma.sock?umask=0111'
         
     | 
| 
      
 21 
     | 
    
         
            +
            # e.g. bind "ssl://#{_host}:#{_port}?key=path_to_key&cert=path_to_cert"
         
     | 
| 
      
 22 
     | 
    
         
            +
            bind "tcp://#{_host}:#{_port}"
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
            # for SSL you may use this instead of 'bind'
         
     | 
| 
      
 25 
     | 
    
         
            +
            # ssl_bind _host, _port, {
         
     | 
| 
      
 26 
     | 
    
         
            +
            #   key: path_to_key,
         
     | 
| 
      
 27 
     | 
    
         
            +
            #   cert: path_to_cert
         
     | 
| 
      
 28 
     | 
    
         
            +
            # }
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
            # Minimum to maximum number of threads to answer.
         
     | 
| 
      
 31 
     | 
    
         
            +
            threads 0, 16
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
            # The environment in which the rack's app will run.
         
     | 
| 
      
 34 
     | 
    
         
            +
            environment 'none'
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
            # true to server is daemonize
         
     | 
| 
      
 37 
     | 
    
         
            +
            daemonize true
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
            # PID and state for puma web server
         
     | 
| 
      
 40 
     | 
    
         
            +
            pidfile "#{_app_root}/tmp/pids/puma.pid"
         
     | 
| 
      
 41 
     | 
    
         
            +
            state_path "#{_app_root}/tmp/pids/puma.state"
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
            # log messages redrect to
         
     | 
| 
      
 44 
     | 
    
         
            +
            stdout_redirect "#{_app_root}/log/puma.stdout.log", "#{_app_root}/log/puma.stderr.log"
         
     | 
| 
      
 45 
     | 
    
         
            +
            # If you prefer to that output is appended, please pass true to the third parameter.
         
     | 
| 
      
 46 
     | 
    
         
            +
            #stdout_redirect "#{_app_root}/log/puma.stdout.log", "#{_app_root}/log/puma.stderr.log", true
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
            # Commented out to disable request logging.
         
     | 
| 
      
 49 
     | 
    
         
            +
            # quiet
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
            # -------------
         
     | 
| 
      
 52 
     | 
    
         
            +
            # Cluster mode
         
     | 
| 
      
 53 
     | 
    
         
            +
            # -------------
         
     | 
| 
      
 54 
     | 
    
         
            +
            # How many worker precesses to run?
         
     | 
| 
      
 55 
     | 
    
         
            +
            # The default is 0. It's not clusterized.
         
     | 
| 
      
 56 
     | 
    
         
            +
            # workers 2
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
            # Worker processes will be restarted when worker processes couldn't resond within this time.
         
     | 
| 
      
 59 
     | 
    
         
            +
            # It's not request time out. It's used for detecting malfunctional woker processes.
         
     | 
| 
      
 60 
     | 
    
         
            +
            # worker_timeout 60
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
            # Woker processes' timeout for booting
         
     | 
| 
      
 63 
     | 
    
         
            +
            # worker_boot_timeout 60
         
     | 
| 
         @@ -0,0 +1,40 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # User Configuration Files
         
     | 
| 
      
 2 
     | 
    
         
            +
            #
         
     | 
| 
      
 3 
     | 
    
         
            +
            # You may configure some constant values here.
         
     | 
| 
      
 4 
     | 
    
         
            +
            # ====================
         
     | 
| 
      
 5 
     | 
    
         
            +
            # for example:
         
     | 
| 
      
 6 
     | 
    
         
            +
            # --------------------
         
     | 
| 
      
 7 
     | 
    
         
            +
            # foo:
         
     | 
| 
      
 8 
     | 
    
         
            +
            #     a: 1
         
     | 
| 
      
 9 
     | 
    
         
            +
            #     b: hello
         
     | 
| 
      
 10 
     | 
    
         
            +
            #     c: true
         
     | 
| 
      
 11 
     | 
    
         
            +
            #     d: 0.1
         
     | 
| 
      
 12 
     | 
    
         
            +
            #     e:
         
     | 
| 
      
 13 
     | 
    
         
            +
            #         - FOO
         
     | 
| 
      
 14 
     | 
    
         
            +
            #         - BAR
         
     | 
| 
      
 15 
     | 
    
         
            +
            #         - BAZ
         
     | 
| 
      
 16 
     | 
    
         
            +
            # --------------------
         
     | 
| 
      
 17 
     | 
    
         
            +
            # It's possible to reference them from Handler classes:
         
     | 
| 
      
 18 
     | 
    
         
            +
            #   __setting_get :foo     #=> {"a"=>1, "b"=>"hello", "c"=>true, "d"=>0.1, "e"=>["FOO", "BAR", "BAZ"]}
         
     | 
| 
      
 19 
     | 
    
         
            +
            #   __setting_get :foo, :a #=> 1
         
     | 
| 
      
 20 
     | 
    
         
            +
            #   __setting_get :foo, :b #=> "hello"
         
     | 
| 
      
 21 
     | 
    
         
            +
            #   __setting_get :foo, :c #=> true
         
     | 
| 
      
 22 
     | 
    
         
            +
            #   __setting_get :foo, :d #=> 0.1
         
     | 
| 
      
 23 
     | 
    
         
            +
            #   __setting_get :foo, :e #=> ["FOO", "BAR", "BAZ"]
         
     | 
| 
      
 24 
     | 
    
         
            +
            #
         
     | 
| 
      
 25 
     | 
    
         
            +
            # Returns nil in the following cases,
         
     | 
| 
      
 26 
     | 
    
         
            +
            #   __setting_get          #=> no given anything
         
     | 
| 
      
 27 
     | 
    
         
            +
            #   __setting_get :bar     #=> no such field
         
     | 
| 
      
 28 
     | 
    
         
            +
            #   __setting_get :foo, :f #=> no such field in foo:
         
     | 
| 
      
 29 
     | 
    
         
            +
            #
         
     | 
| 
      
 30 
     | 
    
         
            +
            # In templates, You must use 'setting_get' tag like: {% setting_get foo, a %}
         
     | 
| 
      
 31 
     | 
    
         
            +
            # ====================
         
     | 
| 
      
 32 
     | 
    
         
            +
             foo:
         
     | 
| 
      
 33 
     | 
    
         
            +
                 a: 1
         
     | 
| 
      
 34 
     | 
    
         
            +
                 b: hello
         
     | 
| 
      
 35 
     | 
    
         
            +
                 c: true
         
     | 
| 
      
 36 
     | 
    
         
            +
                 d: 0.1
         
     | 
| 
      
 37 
     | 
    
         
            +
                 e:
         
     | 
| 
      
 38 
     | 
    
         
            +
                     - FOO
         
     | 
| 
      
 39 
     | 
    
         
            +
                     - BAR
         
     | 
| 
      
 40 
     | 
    
         
            +
                     - BAZ
         
     | 
| 
         @@ -0,0 +1,7 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # constant values for the welcome page
         
     | 
| 
      
 2 
     | 
    
         
            +
            url:
         
     | 
| 
      
 3 
     | 
    
         
            +
                document: https://nekonote-framework.github.io/document
         
     | 
| 
      
 4 
     | 
    
         
            +
                gem: https://rubygems.org/gems/nekonote-framework
         
     | 
| 
      
 5 
     | 
    
         
            +
                github: https://github.com/khotta/Nekonote-Framework
         
     | 
| 
      
 6 
     | 
    
         
            +
                contribute: https://nekonote-framework.github.io/contribute
         
     | 
| 
      
 7 
     | 
    
         
            +
                license: https://github.com/khotta/Nekonote-Framework/blob/master/LICENSE
         
     | 
| 
         @@ -0,0 +1,47 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            body {
         
     | 
| 
      
 2 
     | 
    
         
            +
              background-color: #f0f0f5;
         
     | 
| 
      
 3 
     | 
    
         
            +
            }
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            #content {
         
     | 
| 
      
 6 
     | 
    
         
            +
              margin-left: 0.6em;
         
     | 
| 
      
 7 
     | 
    
         
            +
              font-family: helvetica, arial, sans-serif;
         
     | 
| 
      
 8 
     | 
    
         
            +
            }
         
     | 
| 
      
 9 
     | 
    
         
            +
            #content h3 {
         
     | 
| 
      
 10 
     | 
    
         
            +
              color: #e6005c;
         
     | 
| 
      
 11 
     | 
    
         
            +
              font-family: 'Open Sans', sans-serif;
         
     | 
| 
      
 12 
     | 
    
         
            +
              letter-spacing: 0.1em;
         
     | 
| 
      
 13 
     | 
    
         
            +
            }
         
     | 
| 
      
 14 
     | 
    
         
            +
            #content h4 {
         
     | 
| 
      
 15 
     | 
    
         
            +
              color: #ff1a1a;
         
     | 
| 
      
 16 
     | 
    
         
            +
              font-family: 'Open Sans', sans-serif;
         
     | 
| 
      
 17 
     | 
    
         
            +
              letter-spacing: 0.1em;
         
     | 
| 
      
 18 
     | 
    
         
            +
              font-weight: normal;
         
     | 
| 
      
 19 
     | 
    
         
            +
              margin-top: 2em;
         
     | 
| 
      
 20 
     | 
    
         
            +
              margin-bottom: 0.6em;
         
     | 
| 
      
 21 
     | 
    
         
            +
            }
         
     | 
| 
      
 22 
     | 
    
         
            +
            #content .description {
         
     | 
| 
      
 23 
     | 
    
         
            +
              text-indent: 2em;
         
     | 
| 
      
 24 
     | 
    
         
            +
            }
         
     | 
| 
      
 25 
     | 
    
         
            +
            #content em {
         
     | 
| 
      
 26 
     | 
    
         
            +
              color: #ff0066;
         
     | 
| 
      
 27 
     | 
    
         
            +
            }
         
     | 
| 
      
 28 
     | 
    
         
            +
            #content a {
         
     | 
| 
      
 29 
     | 
    
         
            +
              color: #737373;
         
     | 
| 
      
 30 
     | 
    
         
            +
              text-decoration: none;
         
     | 
| 
      
 31 
     | 
    
         
            +
            }
         
     | 
| 
      
 32 
     | 
    
         
            +
            #content a:hover {
         
     | 
| 
      
 33 
     | 
    
         
            +
              color: #ff8566;
         
     | 
| 
      
 34 
     | 
    
         
            +
              text-decoration: underline;
         
     | 
| 
      
 35 
     | 
    
         
            +
            }
         
     | 
| 
      
 36 
     | 
    
         
            +
            #content #footer-logo {
         
     | 
| 
      
 37 
     | 
    
         
            +
              position: fixed;
         
     | 
| 
      
 38 
     | 
    
         
            +
              bottom: 5%;
         
     | 
| 
      
 39 
     | 
    
         
            +
              right: 5%;
         
     | 
| 
      
 40 
     | 
    
         
            +
              background-image: url("/img/logo.png");
         
     | 
| 
      
 41 
     | 
    
         
            +
              background-repeat: no-repeat;
         
     | 
| 
      
 42 
     | 
    
         
            +
              background-size: 15em 5em;
         
     | 
| 
      
 43 
     | 
    
         
            +
              height: 5em;
         
     | 
| 
      
 44 
     | 
    
         
            +
              width: 15em;
         
     | 
| 
      
 45 
     | 
    
         
            +
            }
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
            /*# sourceMappingURL=welcome.css.map */
         
     | 
| 
         Binary file 
     | 
| 
         
            File without changes
         
     | 
| 
         Binary file 
     | 
| 
         
            File without changes
         
     | 
| 
         @@ -0,0 +1,19 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <!DOCTYPE html>
         
     | 
| 
      
 2 
     | 
    
         
            +
            <head>
         
     | 
| 
      
 3 
     | 
    
         
            +
                <meta charset="UTF-8" />
         
     | 
| 
      
 4 
     | 
    
         
            +
                <link rel="stylesheet" type="text/css" href="/css/layout/common.css?1.0.0" />
         
     | 
| 
      
 5 
     | 
    
         
            +
                <link rel="stylesheet" type="text/css" href="/css/layout/default.css?1.0.0" />
         
     | 
| 
      
 6 
     | 
    
         
            +
                {% if css %}<link rel="stylesheet" type="text/css" href="{{css}}" />{% endif %}
         
     | 
| 
      
 7 
     | 
    
         
            +
                {% if title %}<title>{{title}}</title>{% endif %}
         
     | 
| 
      
 8 
     | 
    
         
            +
            </head>
         
     | 
| 
      
 9 
     | 
    
         
            +
            <body>
         
     | 
| 
      
 10 
     | 
    
         
            +
              <div id="header-line"></div>
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
              <div id="content">
         
     | 
| 
      
 13 
     | 
    
         
            +
                {{content}}
         
     | 
| 
      
 14 
     | 
    
         
            +
              </div>
         
     | 
| 
      
 15 
     | 
    
         
            +
            {% comment %}
         
     | 
| 
      
 16 
     | 
    
         
            +
            Note: {{content}} is magical. Your template is rendered there.
         
     | 
| 
      
 17 
     | 
    
         
            +
            {% endcomment %}
         
     | 
| 
      
 18 
     | 
    
         
            +
            </body>
         
     | 
| 
      
 19 
     | 
    
         
            +
            </html>
         
     | 
| 
         @@ -0,0 +1,15 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <!DOCTYPE html>
         
     | 
| 
      
 2 
     | 
    
         
            +
            <head>
         
     | 
| 
      
 3 
     | 
    
         
            +
                <meta charset="UTF-8" />
         
     | 
| 
      
 4 
     | 
    
         
            +
                <link rel="stylesheet" type="text/css" href="/css/layout/common.css?1.0.0" />
         
     | 
| 
      
 5 
     | 
    
         
            +
                <link rel="stylesheet" type="text/css" href="/css/layout/error.css?1.0.0" />
         
     | 
| 
      
 6 
     | 
    
         
            +
                {% if css %}<link rel="stylesheet" type="text/css" href="{{css}}" />{% endif %}
         
     | 
| 
      
 7 
     | 
    
         
            +
            </head>
         
     | 
| 
      
 8 
     | 
    
         
            +
            <body>
         
     | 
| 
      
 9 
     | 
    
         
            +
            <div id="header-line"></div>
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            <div id="content">
         
     | 
| 
      
 12 
     | 
    
         
            +
            {{content}}
         
     | 
| 
      
 13 
     | 
    
         
            +
            </div>
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            </html>
         
     | 
| 
         @@ -0,0 +1,52 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            @mixin stylish-font {
         
     | 
| 
      
 2 
     | 
    
         
            +
              font-family: 'Open Sans', sans-serif;
         
     | 
| 
      
 3 
     | 
    
         
            +
              letter-spacing: 0.1em;
         
     | 
| 
      
 4 
     | 
    
         
            +
            }
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            body {
         
     | 
| 
      
 7 
     | 
    
         
            +
              background-color: #f0f0f5;
         
     | 
| 
      
 8 
     | 
    
         
            +
            }
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            #content {
         
     | 
| 
      
 11 
     | 
    
         
            +
              margin-left: 0.6em;
         
     | 
| 
      
 12 
     | 
    
         
            +
              font-family: helvetica, arial, sans-serif;
         
     | 
| 
      
 13 
     | 
    
         
            +
              h3 {
         
     | 
| 
      
 14 
     | 
    
         
            +
                color: #e6005c;
         
     | 
| 
      
 15 
     | 
    
         
            +
                @include stylish-font;
         
     | 
| 
      
 16 
     | 
    
         
            +
              }
         
     | 
| 
      
 17 
     | 
    
         
            +
              h4 {
         
     | 
| 
      
 18 
     | 
    
         
            +
                color: #ff1a1a;
         
     | 
| 
      
 19 
     | 
    
         
            +
                @include stylish-font;
         
     | 
| 
      
 20 
     | 
    
         
            +
                font-weight: normal;
         
     | 
| 
      
 21 
     | 
    
         
            +
                margin-top: 2em;
         
     | 
| 
      
 22 
     | 
    
         
            +
                margin-bottom: 0.6em;
         
     | 
| 
      
 23 
     | 
    
         
            +
              }
         
     | 
| 
      
 24 
     | 
    
         
            +
              .description {
         
     | 
| 
      
 25 
     | 
    
         
            +
                text-indent: 2em;
         
     | 
| 
      
 26 
     | 
    
         
            +
              }
         
     | 
| 
      
 27 
     | 
    
         
            +
              em {
         
     | 
| 
      
 28 
     | 
    
         
            +
                color: #ff0066;
         
     | 
| 
      
 29 
     | 
    
         
            +
              }
         
     | 
| 
      
 30 
     | 
    
         
            +
              a {
         
     | 
| 
      
 31 
     | 
    
         
            +
                color: #737373;
         
     | 
| 
      
 32 
     | 
    
         
            +
                text-decoration: none;
         
     | 
| 
      
 33 
     | 
    
         
            +
                &:link {
         
     | 
| 
      
 34 
     | 
    
         
            +
                }
         
     | 
| 
      
 35 
     | 
    
         
            +
                &:visited {
         
     | 
| 
      
 36 
     | 
    
         
            +
                }
         
     | 
| 
      
 37 
     | 
    
         
            +
                &:hover {
         
     | 
| 
      
 38 
     | 
    
         
            +
                  color: #ff8566;
         
     | 
| 
      
 39 
     | 
    
         
            +
                  text-decoration: underline;
         
     | 
| 
      
 40 
     | 
    
         
            +
                }
         
     | 
| 
      
 41 
     | 
    
         
            +
              }
         
     | 
| 
      
 42 
     | 
    
         
            +
              #footer-logo {
         
     | 
| 
      
 43 
     | 
    
         
            +
                position: fixed;
         
     | 
| 
      
 44 
     | 
    
         
            +
                bottom: 5%;
         
     | 
| 
      
 45 
     | 
    
         
            +
                right: 5%;
         
     | 
| 
      
 46 
     | 
    
         
            +
                background-image: url("/img/logo.png");
         
     | 
| 
      
 47 
     | 
    
         
            +
                background-repeat: no-repeat;
         
     | 
| 
      
 48 
     | 
    
         
            +
                background-size: 15em 5em;
         
     | 
| 
      
 49 
     | 
    
         
            +
                height: 5em;
         
     | 
| 
      
 50 
     | 
    
         
            +
                width: 15em;
         
     | 
| 
      
 51 
     | 
    
         
            +
              }
         
     | 
| 
      
 52 
     | 
    
         
            +
            }
         
     | 
| 
         @@ -0,0 +1,26 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <div id="content">
         
     | 
| 
      
 2 
     | 
    
         
            +
                <h3>Welcome to Nekonote Framework!</h3>
         
     | 
| 
      
 3 
     | 
    
         
            +
                <p class="description">{{description}}</p>
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
                <h4>Information</h4>
         
     | 
| 
      
 6 
     | 
    
         
            +
                <ul>
         
     | 
| 
      
 7 
     | 
    
         
            +
                    <li>The version is <em>{{version}}</em></li>
         
     | 
| 
      
 8 
     | 
    
         
            +
                    <li>Current Environment: <em>{{env}}</em></li>
         
     | 
| 
      
 9 
     | 
    
         
            +
                    <li>The Application Root: <em>{{root}}</em></li>
         
     | 
| 
      
 10 
     | 
    
         
            +
                </ul>
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                <h4>Do you need help?</h4>
         
     | 
| 
      
 13 
     | 
    
         
            +
                <ul>
         
     | 
| 
      
 14 
     | 
    
         
            +
                    <li>Reference Manual <a href="{% setting_get url, document %}">{% setting_get url, document %}</a></li>
         
     | 
| 
      
 15 
     | 
    
         
            +
                    <li>Contribute <a href="{% setting_get url, contribute %}">{% setting_get url, contribute %}</a></li>
         
     | 
| 
      
 16 
     | 
    
         
            +
                </ul>
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                <h4>Nekonote Framework is open-source software</h4>
         
     | 
| 
      
 19 
     | 
    
         
            +
                <ul>
         
     | 
| 
      
 20 
     | 
    
         
            +
                    <li>License <a href="{% setting_get url, license %}">{% setting_get url, license %}</a></li>
         
     | 
| 
      
 21 
     | 
    
         
            +
                    <li>GitHub <a href="{% setting_get url, github %}">{% setting_get url, github %}</a></li>
         
     | 
| 
      
 22 
     | 
    
         
            +
                    <li>Repository <a href="{% setting_get url, gem %}">{% setting_get url, gem %}</a></li>
         
     | 
| 
      
 23 
     | 
    
         
            +
                </ul>
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                <div id="footer-logo"></div>
         
     | 
| 
      
 26 
     | 
    
         
            +
            </div>
         
     | 
| 
         
            File without changes
         
     | 
    
        data/lib/loader.rb
    ADDED
    
    | 
         @@ -0,0 +1,83 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # for bundler
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'bundler'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'bundler/setup'
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            # ========================================
         
     | 
| 
      
 6 
     | 
    
         
            +
            # auto loading standard and gem libraries
         
     | 
| 
      
 7 
     | 
    
         
            +
            # ========================================
         
     | 
| 
      
 8 
     | 
    
         
            +
            # standard libraries
         
     | 
| 
      
 9 
     | 
    
         
            +
            # TODO need namespace for avoiding declaration
         
     | 
| 
      
 10 
     | 
    
         
            +
            autoload :Psych, 'yaml'
         
     | 
| 
      
 11 
     | 
    
         
            +
            autoload :YAML, 'yaml'
         
     | 
| 
      
 12 
     | 
    
         
            +
            autoload :Singleton, 'singleton'
         
     | 
| 
      
 13 
     | 
    
         
            +
            autoload :FileUtils, 'fileutils'
         
     | 
| 
      
 14 
     | 
    
         
            +
            autoload :URI, 'uri'
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            # dependent gem libraries
         
     | 
| 
      
 17 
     | 
    
         
            +
            autoload :Rack, 'rack'
         
     | 
| 
      
 18 
     | 
    
         
            +
            autoload :Liquid, 'liquid'
         
     | 
| 
      
 19 
     | 
    
         
            +
            autoload :Puma, 'puma/control_cli'
         
     | 
| 
      
 20 
     | 
    
         
            +
            autoload :SimpleRotate, 'simple_rotate'
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            # optional gem libraries
         
     | 
| 
      
 23 
     | 
    
         
            +
            autoload :ConnectionPool, 'connection_pool'
         
     | 
| 
      
 24 
     | 
    
         
            +
            # for Dalli
         
     | 
| 
      
 25 
     | 
    
         
            +
            autoload :Dalli, 'dalli'
         
     | 
| 
      
 26 
     | 
    
         
            +
            begin
         
     | 
| 
      
 27 
     | 
    
         
            +
                module Rack
         
     | 
| 
      
 28 
     | 
    
         
            +
                    module Session
         
     | 
| 
      
 29 
     | 
    
         
            +
                        autoload :Dalli, 'rack/session/dalli'
         
     | 
| 
      
 30 
     | 
    
         
            +
                    end
         
     | 
| 
      
 31 
     | 
    
         
            +
                end
         
     | 
| 
      
 32 
     | 
    
         
            +
            rescue LoadError
         
     | 
| 
      
 33 
     | 
    
         
            +
                # ignore LoadError in case the set-up hasn't completed yet
         
     | 
| 
      
 34 
     | 
    
         
            +
            end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
            # ==============================
         
     | 
| 
      
 37 
     | 
    
         
            +
            # auto loading internal files
         
     | 
| 
      
 38 
     | 
    
         
            +
            # ==============================
         
     | 
| 
      
 39 
     | 
    
         
            +
            module Nekonote
         
     | 
| 
      
 40 
     | 
    
         
            +
                @@lib_root_path = File.expand_path(File.dirname(__FILE__)) + '/nekonote/'
         
     | 
| 
      
 41 
     | 
    
         
            +
                def self.get_lib_root_path
         
     | 
| 
      
 42 
     | 
    
         
            +
                    return @@lib_root_path
         
     | 
| 
      
 43 
     | 
    
         
            +
                end
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
                # extends Nekonote module
         
     | 
| 
      
 46 
     | 
    
         
            +
                require Nekonote.get_lib_root_path + 'spec'
         
     | 
| 
      
 47 
     | 
    
         
            +
                require Nekonote.get_lib_root_path + 'core'
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
                module Util
         
     | 
| 
      
 50 
     | 
    
         
            +
                    autoload :Filer, Nekonote.get_lib_root_path + 'util/filer'
         
     | 
| 
      
 51 
     | 
    
         
            +
                    autoload :Process, Nekonote.get_lib_root_path + 'util/process'
         
     | 
| 
      
 52 
     | 
    
         
            +
                end
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
                [
         
     | 
| 
      
 55 
     | 
    
         
            +
                    {:class => :Error,           :file => 'exception/error'},
         
     | 
| 
      
 56 
     | 
    
         
            +
                    {:class => :PageCacheError,  :file => 'exception/page_cache_error'},
         
     | 
| 
      
 57 
     | 
    
         
            +
                    {:class => :PreferenceError, :file => 'exception/preference_error'},
         
     | 
| 
      
 58 
     | 
    
         
            +
                    {:class => :ViewError,       :file => 'exception/view_error'},
         
     | 
| 
      
 59 
     | 
    
         
            +
                    {:class => :CLIError,        :file => 'exception/cli_error'},
         
     | 
| 
      
 60 
     | 
    
         
            +
                    {:class => :HandlerError,    :file => 'exception/handler_error'},
         
     | 
| 
      
 61 
     | 
    
         
            +
                    {:class => :LoggerError,     :file => 'exception/logger_error'},
         
     | 
| 
      
 62 
     | 
    
         
            +
                    {:class => :YamlAccess,      :file => 'yaml_access'},
         
     | 
| 
      
 63 
     | 
    
         
            +
                    {:class => :Env,             :file => 'env'},
         
     | 
| 
      
 64 
     | 
    
         
            +
                    {:class => :Preference,      :file => 'preference'},
         
     | 
| 
      
 65 
     | 
    
         
            +
                    {:class => :Setting,         :file => 'setting'},
         
     | 
| 
      
 66 
     | 
    
         
            +
                    {:class => :PageCache,       :file => 'page_cache'},
         
     | 
| 
      
 67 
     | 
    
         
            +
                    {:class => :View,            :file => 'view'},
         
     | 
| 
      
 68 
     | 
    
         
            +
                    {:class => :TagEnvGet,       :file => 'liquid/tag_env_get'},
         
     | 
| 
      
 69 
     | 
    
         
            +
                    {:class => :TagSettingGet,   :file => 'liquid/tag_setting_get'},
         
     | 
| 
      
 70 
     | 
    
         
            +
                    {:class => :Request,         :file => 'request'},
         
     | 
| 
      
 71 
     | 
    
         
            +
                    {:class => :Handler,         :file => 'handler.rb'},
         
     | 
| 
      
 72 
     | 
    
         
            +
                    {:class => :Rackup,          :file => 'rackup'},
         
     | 
| 
      
 73 
     | 
    
         
            +
                    {:class => :Cli,             :file => 'cli'},
         
     | 
| 
      
 74 
     | 
    
         
            +
                    {:class => :CmdParser,       :file => 'cmd_parser'},
         
     | 
| 
      
 75 
     | 
    
         
            +
                    {:class => :Puma,            :file => 'puma'},
         
     | 
| 
      
 76 
     | 
    
         
            +
                    {:class => :RackStaticFile , :file => 'rack/rack_static_file'},
         
     | 
| 
      
 77 
     | 
    
         
            +
                    {:class => :RackStatic,      :file => 'rack/rack_static'},
         
     | 
| 
      
 78 
     | 
    
         
            +
                    {:class => :URLMapper,       :file => 'rack/url_mapper'},
         
     | 
| 
      
 79 
     | 
    
         
            +
                    {:class => :Logger,          :file => 'logger'}
         
     | 
| 
      
 80 
     | 
    
         
            +
                ].each do |data|
         
     | 
| 
      
 81 
     | 
    
         
            +
                    autoload data[:class], Nekonote.get_lib_root_path + data[:file]
         
     | 
| 
      
 82 
     | 
    
         
            +
                end
         
     | 
| 
      
 83 
     | 
    
         
            +
            end
         
     |