misosoup 0.1.0
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/.gitignore +4 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +22 -0
- data/README +2 -0
- data/Rakefile +5 -0
- data/bin/miso +64 -0
- data/lib/miso/commands.rb +45 -0
- data/lib/miso/loader.rb +13 -0
- data/lib/miso/rewrite.rb +30 -0
- data/lib/miso/static.rb +39 -0
- data/lib/miso/version.rb +5 -0
- data/lib/miso.rb +6 -0
- data/misosoup.gemspec +28 -0
- data/spec/404.html +1 -0
- data/spec/config.ru +5 -0
- data/spec/index.html +1 -0
- data/spec/loader_spec.rb +11 -0
- data/spec/rewrite_spec.rb +28 -0
- data/spec/spec_helper.rb +2 -0
- data/spec/static_spec.rb +30 -0
- data/template/_app/miso/config.ru +19 -0
- data/template/_app/miso/miso.erb +17 -0
- data/template/_site/index.html +1 -0
- data/template/config.ru +18 -0
- metadata +99 -0
    
        data/.gitignore
    ADDED
    
    
    
        data/Gemfile
    ADDED
    
    
    
        data/Gemfile.lock
    ADDED
    
    | @@ -0,0 +1,22 @@ | |
| 1 | 
            +
            GEM
         | 
| 2 | 
            +
              remote: http://rubygems.org/
         | 
| 3 | 
            +
              specs:
         | 
| 4 | 
            +
                diff-lcs (1.1.2)
         | 
| 5 | 
            +
                rack (1.2.1)
         | 
| 6 | 
            +
                rake (0.8.7)
         | 
| 7 | 
            +
                rspec (2.5.0)
         | 
| 8 | 
            +
                  rspec-core (~> 2.5.0)
         | 
| 9 | 
            +
                  rspec-expectations (~> 2.5.0)
         | 
| 10 | 
            +
                  rspec-mocks (~> 2.5.0)
         | 
| 11 | 
            +
                rspec-core (2.5.1)
         | 
| 12 | 
            +
                rspec-expectations (2.5.0)
         | 
| 13 | 
            +
                  diff-lcs (~> 1.1.2)
         | 
| 14 | 
            +
                rspec-mocks (2.5.0)
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            PLATFORMS
         | 
| 17 | 
            +
              ruby
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            DEPENDENCIES
         | 
| 20 | 
            +
              rack (~> 1.2.0)
         | 
| 21 | 
            +
              rake
         | 
| 22 | 
            +
              rspec (~> 2.5.0)
         | 
    
        data/README
    ADDED
    
    
    
        data/Rakefile
    ADDED
    
    
    
        data/bin/miso
    ADDED
    
    | @@ -0,0 +1,64 @@ | |
| 1 | 
            +
            #!/usr/bin/env ruby
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'getoptlong'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            require File.expand_path('../lib/miso/commands', File.dirname(__FILE__))
         | 
| 6 | 
            +
            require File.expand_path('../lib/miso/version', File.dirname(__FILE__))
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            module Miso
         | 
| 9 | 
            +
              class Cli
         | 
| 10 | 
            +
                def self.usage
         | 
| 11 | 
            +
                  puts <<EOF
         | 
| 12 | 
            +
            USAGE: #{File.basename($0)} [GLOBAL OPTIONS] <command> [COMMAND OPTIONS]
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            GLOBAL OPTIONS
         | 
| 15 | 
            +
                --help, -h            Display this message.
         | 
| 16 | 
            +
                --version, -v         Display version number.
         | 
| 17 | 
            +
             | 
| 18 | 
            +
            COMMANDS
         | 
| 19 | 
            +
                new <path>            Create a new Miso project.
         | 
| 20 | 
            +
            EOF
         | 
| 21 | 
            +
            exit 0
         | 
| 22 | 
            +
                end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                def self.version
         | 
| 25 | 
            +
                  puts "Miso #{Miso::VERSION}"
         | 
| 26 | 
            +
                  exit 0
         | 
| 27 | 
            +
                end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                def self.parse_command_line
         | 
| 30 | 
            +
                  opts = GetoptLong.new(
         | 
| 31 | 
            +
                    ['--help', '-h', GetoptLong::NO_ARGUMENT],
         | 
| 32 | 
            +
                    ['--version', '-v', GetoptLong::NO_ARGUMENT]
         | 
| 33 | 
            +
                  )
         | 
| 34 | 
            +
                  options = {}
         | 
| 35 | 
            +
                  opts.each do |opt, arg|
         | 
| 36 | 
            +
                    case opt 
         | 
| 37 | 
            +
                    when '--help'
         | 
| 38 | 
            +
                      usage
         | 
| 39 | 
            +
                    when '--version'
         | 
| 40 | 
            +
                      version
         | 
| 41 | 
            +
                    else
         | 
| 42 | 
            +
                      options[opt.sub(/^--/, '')] = arg
         | 
| 43 | 
            +
                    end
         | 
| 44 | 
            +
                  end
         | 
| 45 | 
            +
                  options
         | 
| 46 | 
            +
                end
         | 
| 47 | 
            +
             | 
| 48 | 
            +
                def self.main(options)
         | 
| 49 | 
            +
                  command = ARGV.shift
         | 
| 50 | 
            +
                  command.nil? && usage
         | 
| 51 | 
            +
                  case command
         | 
| 52 | 
            +
                    when 'new'
         | 
| 53 | 
            +
                      Miso::Commands::New.new(ARGV[0], options).execute
         | 
| 54 | 
            +
                    else
         | 
| 55 | 
            +
                      usage
         | 
| 56 | 
            +
                  end
         | 
| 57 | 
            +
                rescue StandardError => e
         | 
| 58 | 
            +
                  $stderr.puts "ERROR: #{e}"
         | 
| 59 | 
            +
                  usage
         | 
| 60 | 
            +
                end
         | 
| 61 | 
            +
              end
         | 
| 62 | 
            +
            end
         | 
| 63 | 
            +
             | 
| 64 | 
            +
            Miso::Cli.main(Miso::Cli.parse_command_line)
         | 
| @@ -0,0 +1,45 @@ | |
| 1 | 
            +
            require 'fileutils'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Miso
         | 
| 4 | 
            +
              module Commands
         | 
| 5 | 
            +
                class UsageError < RuntimeError; end
         | 
| 6 | 
            +
                  
         | 
| 7 | 
            +
                class New
         | 
| 8 | 
            +
                  def initialize(path, options = {})
         | 
| 9 | 
            +
                    path.nil? && (raise UsageError.new('path not specified'))
         | 
| 10 | 
            +
                    fail("#{path} already exists") if File.exist?(path)
         | 
| 11 | 
            +
                    @path = path
         | 
| 12 | 
            +
                    @options = options
         | 
| 13 | 
            +
                  end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                  def template_root
         | 
| 16 | 
            +
                    File.expand_path('../../template', File.dirname(__FILE__))
         | 
| 17 | 
            +
                  end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                  def copy_template(src, dest)
         | 
| 20 | 
            +
                    FileUtils.cp(File.join(template_root, src), dest)
         | 
| 21 | 
            +
                  end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                  def copy_templates(templates)
         | 
| 24 | 
            +
                    templates.each { |src, dest| copy_template(src, dest) }
         | 
| 25 | 
            +
                  end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                  def make_directories
         | 
| 28 | 
            +
                    %w[_app/miso _site].each do |dir|
         | 
| 29 | 
            +
                      FileUtils.mkdir_p(File.join(@path, dir))
         | 
| 30 | 
            +
                    end
         | 
| 31 | 
            +
                  end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                  def execute
         | 
| 34 | 
            +
                    make_directories
         | 
| 35 | 
            +
                    templates = {
         | 
| 36 | 
            +
                      'config.ru' => "#{@path}/config.ru",
         | 
| 37 | 
            +
                      '_app/miso/config.ru' => "#{@path}/_app/miso/config.ru",
         | 
| 38 | 
            +
                      '_app/miso/miso.erb' => "#{@path}/_app/miso/miso.erb",
         | 
| 39 | 
            +
                      '_site/index.html' => "#{@path}/_site/index.html"
         | 
| 40 | 
            +
                    }
         | 
| 41 | 
            +
                    copy_templates(templates)
         | 
| 42 | 
            +
                  end
         | 
| 43 | 
            +
                end
         | 
| 44 | 
            +
              end
         | 
| 45 | 
            +
            end
         | 
    
        data/lib/miso/loader.rb
    ADDED
    
    | @@ -0,0 +1,13 @@ | |
| 1 | 
            +
            module Miso
         | 
| 2 | 
            +
              # Load a Rack application from a config.ru file.
         | 
| 3 | 
            +
              def load(app_path)
         | 
| 4 | 
            +
                currentDir = Dir.getwd
         | 
| 5 | 
            +
                Dir.chdir(currentDir+'/'+app_path)
         | 
| 6 | 
            +
                rackup_code = ::File.read('config.ru') 
         | 
| 7 | 
            +
                app = eval("Rack::Builder.new {( #{rackup_code}\n )}.to_app")
         | 
| 8 | 
            +
                Dir.chdir(currentDir)
         | 
| 9 | 
            +
                app
         | 
| 10 | 
            +
              end
         | 
| 11 | 
            +
              
         | 
| 12 | 
            +
              module_function :load
         | 
| 13 | 
            +
            end
         | 
    
        data/lib/miso/rewrite.rb
    ADDED
    
    | @@ -0,0 +1,30 @@ | |
| 1 | 
            +
            module Miso
         | 
| 2 | 
            +
              #Rack middleware that intercept request to the Rack application
         | 
| 3 | 
            +
              #rewrite the path so that is seems to target the base URL.
         | 
| 4 | 
            +
              class Rewrite
         | 
| 5 | 
            +
                #Request env variable to rewrite.
         | 
| 6 | 
            +
                @@REWRITE= ['REQUEST_PATH', 'PATH_INFO', 'REQUEST_URI']
         | 
| 7 | 
            +
                
         | 
| 8 | 
            +
                #Receive the app and the option list (for now only the :app_path).
         | 
| 9 | 
            +
                def initialize (app, option)
         | 
| 10 | 
            +
                  @app = app
         | 
| 11 | 
            +
                  @path = option[:app_path]
         | 
| 12 | 
            +
                end
         | 
| 13 | 
            +
                
         | 
| 14 | 
            +
                #Execute request.
         | 
| 15 | 
            +
                def call(env)
         | 
| 16 | 
            +
                  rewritePath(env)
         | 
| 17 | 
            +
                  status, headers, response = @app.call(env)
         | 
| 18 | 
            +
                  [status, headers, response]
         | 
| 19 | 
            +
                end
         | 
| 20 | 
            +
                
         | 
| 21 | 
            +
                private
         | 
| 22 | 
            +
                
         | 
| 23 | 
            +
                #Rewrite the path in the original request.
         | 
| 24 | 
            +
                def rewritePath(env)
         | 
| 25 | 
            +
                  @@REWRITE.each do |key|
         | 
| 26 | 
            +
                    env[key] = env[key].gsub(@path, '')
         | 
| 27 | 
            +
                  end
         | 
| 28 | 
            +
                end
         | 
| 29 | 
            +
              end
         | 
| 30 | 
            +
            end
         | 
    
        data/lib/miso/static.rb
    ADDED
    
    | @@ -0,0 +1,39 @@ | |
| 1 | 
            +
            require 'rack'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Miso
         | 
| 4 | 
            +
              #Rack application to handle static site.
         | 
| 5 | 
            +
              class StaticSite
         | 
| 6 | 
            +
                @@NOT_FOUND_PAGE = '404.html'
         | 
| 7 | 
            +
                
         | 
| 8 | 
            +
                #Receives static site base path.
         | 
| 9 | 
            +
                def initialize(static_site_path)
         | 
| 10 | 
            +
                  @root = static_site_path
         | 
| 11 | 
            +
                  @static_page_server = Rack::Directory.new(@root)
         | 
| 12 | 
            +
                end
         | 
| 13 | 
            +
                
         | 
| 14 | 
            +
                #Execute request.
         | 
| 15 | 
            +
                def call(env)
         | 
| 16 | 
            +
                  path = Rack::Utils.unescape(env['PATH_INFO'])
         | 
| 17 | 
            +
                  not_found = false
         | 
| 18 | 
            +
                  
         | 
| 19 | 
            +
                  #if / then route to index.html
         | 
| 20 | 
            +
                  if path == "/"
         | 
| 21 | 
            +
                    # Return the index
         | 
| 22 | 
            +
                    env['PATH_INFO']="/index.html"
         | 
| 23 | 
            +
                    path = path+'index.html'
         | 
| 24 | 
            +
                  end
         | 
| 25 | 
            +
                  
         | 
| 26 | 
            +
                  #if page does not exists then route to 404.html
         | 
| 27 | 
            +
                  if !::File.exists?(@root+path) and ::File.exists?(@root+'/'+@@NOT_FOUND_PAGE)
         | 
| 28 | 
            +
                    env['PATH_INFO']=@@NOT_FOUND_PAGE
         | 
| 29 | 
            +
                    not_found = true
         | 
| 30 | 
            +
                  end
         | 
| 31 | 
            +
                  
         | 
| 32 | 
            +
                  #call Directory to resolve
         | 
| 33 | 
            +
                  code, headers, body = @static_page_server.call(env)
         | 
| 34 | 
            +
                  
         | 
| 35 | 
            +
                  #override to 404 if page not found
         | 
| 36 | 
            +
                  [not_found ? 404 : code, headers, body]
         | 
| 37 | 
            +
                end
         | 
| 38 | 
            +
              end  
         | 
| 39 | 
            +
            end
         | 
    
        data/lib/miso/version.rb
    ADDED
    
    
    
        data/lib/miso.rb
    ADDED
    
    
    
        data/misosoup.gemspec
    ADDED
    
    | @@ -0,0 +1,28 @@ | |
| 1 | 
            +
            # -*- encoding: utf-8 -*-
         | 
| 2 | 
            +
            $:.push File.expand_path("../lib", __FILE__)
         | 
| 3 | 
            +
            require "miso/version"
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            Gem::Specification.new do |s|
         | 
| 6 | 
            +
              s.name        = "misosoup"
         | 
| 7 | 
            +
              s.version     = Miso::VERSION
         | 
| 8 | 
            +
              s.platform    = Gem::Platform::RUBY
         | 
| 9 | 
            +
              s.authors     = ["Felix Trepanier"]
         | 
| 10 | 
            +
              s.email       = ["felixtrepanier@gmail.com"]
         | 
| 11 | 
            +
              s.homepage    = "http://side-experiment.com"
         | 
| 12 | 
            +
              s.summary     = %q{Rack application aggregator}
         | 
| 13 | 
            +
              s.description = <<-EOF
         | 
| 14 | 
            +
            MisoSoup is a Rack application which can server any number of sub-Rack applications
         | 
| 15 | 
            +
            and a static web site.
         | 
| 16 | 
            +
            EOF
         | 
| 17 | 
            +
             | 
| 18 | 
            +
              s.files         = `git ls-files`.split("\n")
         | 
| 19 | 
            +
              s.test_files    = `git ls-files -- {test,spec,features}/*`.split("\n")
         | 
| 20 | 
            +
              s.executables   = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
         | 
| 21 | 
            +
              s.require_paths = ["lib"]
         | 
| 22 | 
            +
             | 
| 23 | 
            +
              s.add_dependency('rack', '~> 1.2.0')
         | 
| 24 | 
            +
             | 
| 25 | 
            +
              # Test libraries
         | 
| 26 | 
            +
              s.add_development_dependency('rspec', '2.5.0')
         | 
| 27 | 
            +
            end
         | 
| 28 | 
            +
             | 
    
        data/spec/404.html
    ADDED
    
    | @@ -0,0 +1 @@ | |
| 1 | 
            +
            404 Error! Notfound...
         | 
    
        data/spec/config.ru
    ADDED
    
    
    
        data/spec/index.html
    ADDED
    
    | @@ -0,0 +1 @@ | |
| 1 | 
            +
            for test
         | 
    
        data/spec/loader_spec.rb
    ADDED
    
    | @@ -0,0 +1,11 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe Miso do
         | 
| 4 | 
            +
              it 'should load config.ru' do
         | 
| 5 | 
            +
                app = Miso.load 'spec'
         | 
| 6 | 
            +
                code, headers, body = app.call({:dummy => 'dummy'})
         | 
| 7 | 
            +
                code.should == 200
         | 
| 8 | 
            +
                headers['Content-Type'].should == 'text/plain'
         | 
| 9 | 
            +
                body.should == 'test'       
         | 
| 10 | 
            +
              end 
         | 
| 11 | 
            +
            end
         | 
| @@ -0,0 +1,28 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe Miso::Rewrite do
         | 
| 4 | 
            +
              before do
         | 
| 5 | 
            +
                @initial_env = {'REQUEST_PATH' => '/spec/hello', 'PATH_INFO' => '/spec/hello', 'REQUEST_URI' => '/spec/hello'} 
         | 
| 6 | 
            +
              end
         | 
| 7 | 
            +
             | 
| 8 | 
            +
              it 'should return app return value' do
         | 
| 9 | 
            +
                mock_app = mock('mock_app')
         | 
| 10 | 
            +
                mock_app.should_receive(:call).with(@initial_env).once.and_return([200, {'header' => 'value'}, 'body'])
         | 
| 11 | 
            +
                app = Miso::Rewrite.new mock_app, :app_path => '/spec' 
         | 
| 12 | 
            +
                code, header, body = app.call(@initial_env)
         | 
| 13 | 
            +
                code.should  == 200
         | 
| 14 | 
            +
                header['header'].should == 'value'
         | 
| 15 | 
            +
                body.should  == 'body'      
         | 
| 16 | 
            +
              end
         | 
| 17 | 
            +
              
         | 
| 18 | 
            +
              it 'should rewrite path' do
         | 
| 19 | 
            +
                expected_env = {'REQUEST_PATH' => '/hello', 'PATH_INFO' => '/hello', 'REQUEST_URI' => '/hello'} 
         | 
| 20 | 
            +
                mock_app = mock('mock_app')
         | 
| 21 | 
            +
                mock_app.should_receive(:call).with(expected_env).once.and_return([200, {'header' => 'value'}, 'body'])
         | 
| 22 | 
            +
                app = Miso::Rewrite.new mock_app, :app_path => '/spec' 
         | 
| 23 | 
            +
                code, header, body = app.call(@initial_env)
         | 
| 24 | 
            +
                code.should == 200
         | 
| 25 | 
            +
                header['header'].should == 'value'
         | 
| 26 | 
            +
                body.should  == 'body'  
         | 
| 27 | 
            +
              end
         | 
| 28 | 
            +
            end
         | 
    
        data/spec/spec_helper.rb
    ADDED
    
    
    
        data/spec/static_spec.rb
    ADDED
    
    | @@ -0,0 +1,30 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe Miso::StaticSite do
         | 
| 4 | 
            +
              it 'should return serve files from directory' do
         | 
| 5 | 
            +
                initial_env = {'PATH_INFO' => '/spec_helper.rb'}
         | 
| 6 | 
            +
                app = Miso::StaticSite.new 'spec' 
         | 
| 7 | 
            +
                code, header, body = app.call(initial_env)
         | 
| 8 | 
            +
                code.should  == 200
         | 
| 9 | 
            +
                body.instance_of? Rack::File
         | 
| 10 | 
            +
                body.path.should match(/spec_helper.rb/)     
         | 
| 11 | 
            +
              end
         | 
| 12 | 
            +
              
         | 
| 13 | 
            +
              it 'should map / to index.html' do
         | 
| 14 | 
            +
                initial_env = {'PATH_INFO' => '/'}
         | 
| 15 | 
            +
                app = Miso::StaticSite.new 'spec' 
         | 
| 16 | 
            +
                code, header, body = app.call(initial_env)
         | 
| 17 | 
            +
                code.should  == 200
         | 
| 18 | 
            +
                body.instance_of? Rack::File
         | 
| 19 | 
            +
                body.path.should match(/index.html/)     
         | 
| 20 | 
            +
              end
         | 
| 21 | 
            +
              
         | 
| 22 | 
            +
              it 'should return 404.html is file do not exists' do
         | 
| 23 | 
            +
                initial_env = {'PATH_INFO' => '/dummy.dumb'}
         | 
| 24 | 
            +
                app = Miso::StaticSite.new 'spec' 
         | 
| 25 | 
            +
                code, header, body = app.call(initial_env)
         | 
| 26 | 
            +
                code.should  == 404
         | 
| 27 | 
            +
                body.instance_of? Rack::File
         | 
| 28 | 
            +
                body.path.should match(/404.html/)     
         | 
| 29 | 
            +
              end
         | 
| 30 | 
            +
            end
         | 
| @@ -0,0 +1,19 @@ | |
| 1 | 
            +
            require 'erb'
         | 
| 2 | 
            +
            require 'miso'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            $miso_app_folder = ::File.expand_path(::File.dirname(__FILE__))+'/..'
         | 
| 5 | 
            +
            $miso_app_dir_list = ::Dir[$miso_app_folder+'/*'].reject{|o| not ::File.directory?(o)}
         | 
| 6 | 
            +
            $miso_version = Miso::VERSION
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            $miso_page = ''    
         | 
| 9 | 
            +
            ::File.open("miso.erb", "r") do |infile|
         | 
| 10 | 
            +
              infile.each do |line|
         | 
| 11 | 
            +
                $miso_page<<line
         | 
| 12 | 
            +
              end
         | 
| 13 | 
            +
            end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            @app = lambda do |env|
         | 
| 16 | 
            +
              [200, {'Content-Type'=>'text/html'}, ERB.new($miso_page).result]
         | 
| 17 | 
            +
            end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            run @app
         | 
| @@ -0,0 +1,17 @@ | |
| 1 | 
            +
            <!DOCTYPE html>
         | 
| 2 | 
            +
                <html xmlns="http://www.w3.org/1999/xhtml\" xml:lang="en" lang="en-us">
         | 
| 3 | 
            +
                <head>
         | 
| 4 | 
            +
                   <meta http-equiv="content-type" content="text/html; charset=utf-8" />
         | 
| 5 | 
            +
                   <title>miso</title>
         | 
| 6 | 
            +
                   <meta name="author" content="Felix Trepanier" />
         | 
| 7 | 
            +
                </head>
         | 
| 8 | 
            +
                <body>
         | 
| 9 | 
            +
                  <center>
         | 
| 10 | 
            +
                  <h2>running on miso version <%= Miso::VERSION %></h2>
         | 
| 11 | 
            +
                  <h3>app running:</h3>
         | 
| 12 | 
            +
                  <% $miso_app_dir_list.each do |app_name|%>
         | 
| 13 | 
            +
                    <p><%= app_name.split('/')[-1] %></p>
         | 
| 14 | 
            +
                  <% end %>      
         | 
| 15 | 
            +
                  </center> 
         | 
| 16 | 
            +
                </body> 
         | 
| 17 | 
            +
                </html>
         | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            hello world
         | 
    
        data/template/config.ru
    ADDED
    
    | @@ -0,0 +1,18 @@ | |
| 1 | 
            +
            require 'miso'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            $MISO_STATIC_ROOT = "_site"
         | 
| 4 | 
            +
            $MISO_APP_ROOT = "_app"
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            app_dir_list = ::Dir[$MISO_APP_ROOT+'/*'].reject{|o| not ::File.directory?(o)}
         | 
| 7 | 
            +
            app_dir_list.each do |app_folder|
         | 
| 8 | 
            +
              app = Miso.load app_folder
         | 
| 9 | 
            +
              app_name = app_folder.split('/')[-1]
         | 
| 10 | 
            +
              map '/'+app_name do
         | 
| 11 | 
            +
                use Miso::Rewrite, {:app_path => '/'+app_folder} 
         | 
| 12 | 
            +
                run app
         | 
| 13 | 
            +
              end
         | 
| 14 | 
            +
            end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            map '/' do 
         | 
| 17 | 
            +
              run Miso::StaticSite.new $MISO_STATIC_ROOT
         | 
| 18 | 
            +
            end
         | 
    
        metadata
    ADDED
    
    | @@ -0,0 +1,99 @@ | |
| 1 | 
            +
            --- !ruby/object:Gem::Specification
         | 
| 2 | 
            +
            name: misosoup
         | 
| 3 | 
            +
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            +
              version: 0.1.0
         | 
| 5 | 
            +
              prerelease: 
         | 
| 6 | 
            +
            platform: ruby
         | 
| 7 | 
            +
            authors:
         | 
| 8 | 
            +
            - Felix Trepanier
         | 
| 9 | 
            +
            autorequire: 
         | 
| 10 | 
            +
            bindir: bin
         | 
| 11 | 
            +
            cert_chain: []
         | 
| 12 | 
            +
            date: 2011-03-19 00:00:00.000000000 -04:00
         | 
| 13 | 
            +
            default_executable: 
         | 
| 14 | 
            +
            dependencies:
         | 
| 15 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 16 | 
            +
              name: rack
         | 
| 17 | 
            +
              requirement: &78646370 !ruby/object:Gem::Requirement
         | 
| 18 | 
            +
                none: false
         | 
| 19 | 
            +
                requirements:
         | 
| 20 | 
            +
                - - ~>
         | 
| 21 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 22 | 
            +
                    version: 1.2.0
         | 
| 23 | 
            +
              type: :runtime
         | 
| 24 | 
            +
              prerelease: false
         | 
| 25 | 
            +
              version_requirements: *78646370
         | 
| 26 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 27 | 
            +
              name: rspec
         | 
| 28 | 
            +
              requirement: &78646120 !ruby/object:Gem::Requirement
         | 
| 29 | 
            +
                none: false
         | 
| 30 | 
            +
                requirements:
         | 
| 31 | 
            +
                - - =
         | 
| 32 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 33 | 
            +
                    version: 2.5.0
         | 
| 34 | 
            +
              type: :development
         | 
| 35 | 
            +
              prerelease: false
         | 
| 36 | 
            +
              version_requirements: *78646120
         | 
| 37 | 
            +
            description: ! 'MisoSoup is a Rack application which can server any number of sub-Rack
         | 
| 38 | 
            +
              applications
         | 
| 39 | 
            +
             | 
| 40 | 
            +
              and a static web site.
         | 
| 41 | 
            +
             | 
| 42 | 
            +
            '
         | 
| 43 | 
            +
            email:
         | 
| 44 | 
            +
            - felixtrepanier@gmail.com
         | 
| 45 | 
            +
            executables:
         | 
| 46 | 
            +
            - miso
         | 
| 47 | 
            +
            extensions: []
         | 
| 48 | 
            +
            extra_rdoc_files: []
         | 
| 49 | 
            +
            files:
         | 
| 50 | 
            +
            - .gitignore
         | 
| 51 | 
            +
            - Gemfile
         | 
| 52 | 
            +
            - Gemfile.lock
         | 
| 53 | 
            +
            - README
         | 
| 54 | 
            +
            - Rakefile
         | 
| 55 | 
            +
            - bin/miso
         | 
| 56 | 
            +
            - lib/miso.rb
         | 
| 57 | 
            +
            - lib/miso/commands.rb
         | 
| 58 | 
            +
            - lib/miso/loader.rb
         | 
| 59 | 
            +
            - lib/miso/rewrite.rb
         | 
| 60 | 
            +
            - lib/miso/static.rb
         | 
| 61 | 
            +
            - lib/miso/version.rb
         | 
| 62 | 
            +
            - misosoup.gemspec
         | 
| 63 | 
            +
            - spec/404.html
         | 
| 64 | 
            +
            - spec/config.ru
         | 
| 65 | 
            +
            - spec/index.html
         | 
| 66 | 
            +
            - spec/loader_spec.rb
         | 
| 67 | 
            +
            - spec/rewrite_spec.rb
         | 
| 68 | 
            +
            - spec/spec_helper.rb
         | 
| 69 | 
            +
            - spec/static_spec.rb
         | 
| 70 | 
            +
            - template/_app/miso/config.ru
         | 
| 71 | 
            +
            - template/_app/miso/miso.erb
         | 
| 72 | 
            +
            - template/_site/index.html
         | 
| 73 | 
            +
            - template/config.ru
         | 
| 74 | 
            +
            has_rdoc: true
         | 
| 75 | 
            +
            homepage: http://side-experiment.com
         | 
| 76 | 
            +
            licenses: []
         | 
| 77 | 
            +
            post_install_message: 
         | 
| 78 | 
            +
            rdoc_options: []
         | 
| 79 | 
            +
            require_paths:
         | 
| 80 | 
            +
            - lib
         | 
| 81 | 
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 82 | 
            +
              none: false
         | 
| 83 | 
            +
              requirements:
         | 
| 84 | 
            +
              - - ! '>='
         | 
| 85 | 
            +
                - !ruby/object:Gem::Version
         | 
| 86 | 
            +
                  version: '0'
         | 
| 87 | 
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 88 | 
            +
              none: false
         | 
| 89 | 
            +
              requirements:
         | 
| 90 | 
            +
              - - ! '>='
         | 
| 91 | 
            +
                - !ruby/object:Gem::Version
         | 
| 92 | 
            +
                  version: '0'
         | 
| 93 | 
            +
            requirements: []
         | 
| 94 | 
            +
            rubyforge_project: 
         | 
| 95 | 
            +
            rubygems_version: 1.6.2
         | 
| 96 | 
            +
            signing_key: 
         | 
| 97 | 
            +
            specification_version: 3
         | 
| 98 | 
            +
            summary: Rack application aggregator
         | 
| 99 | 
            +
            test_files: []
         |