xing-dev-assets 0.0.1
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/lib/xing/dev-assets.rb +1 -0
- data/lib/xing/dev-assets/cookie_setter.rb +17 -0
- data/lib/xing/dev-assets/dumper.rb +17 -0
- data/lib/xing/dev-assets/empty_file.rb +11 -0
- data/lib/xing/dev-assets/goto_param.rb +28 -0
- data/lib/xing/dev-assets/logger.rb +11 -0
- data/lib/xing/dev-assets/rack_app.rb +119 -0
- data/lib/xing/dev-assets/strip_incoming_cache_headers.rb +14 -0
- data/spec_help/gem_test_suite.rb +17 -0
- data/spec_help/spec_helper.rb +0 -0
- metadata +74 -0
    
        checksums.yaml
    ADDED
    
    | @@ -0,0 +1,7 @@ | |
| 1 | 
            +
            ---
         | 
| 2 | 
            +
            SHA1:
         | 
| 3 | 
            +
              metadata.gz: 8bdac05d590be2ce04b7efd3fa7c8db59a071bad
         | 
| 4 | 
            +
              data.tar.gz: a773c283f92f0270b5b8662664ef6c3dc1c01363
         | 
| 5 | 
            +
            SHA512:
         | 
| 6 | 
            +
              metadata.gz: 558d585aeb9dd486efe18d5100f507a6a5127e6445f08d50aa6f5036b85e42df599655e3af6da01fc7cf3768b0edd0e785822c4f705e911054994f9d42265e9f
         | 
| 7 | 
            +
              data.tar.gz: 6837a86dd89c7ede343d5e2b667ff5d05367d6b01375f572e687a7cebc909370553583fec6a124b7f12aa75a7e37b6ed5adfc0ec1f7a059b2a7691a4a3694e01
         | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            require 'xing/dev-assets/rack_app'
         | 
| @@ -0,0 +1,17 @@ | |
| 1 | 
            +
            module Xing
         | 
| 2 | 
            +
              module DevAssets
         | 
| 3 | 
            +
                class CookieSetter
         | 
| 4 | 
            +
                  def initialize(app, name, value)
         | 
| 5 | 
            +
                    @name = name
         | 
| 6 | 
            +
                    @value = value
         | 
| 7 | 
            +
                    @app = app
         | 
| 8 | 
            +
                  end
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                  def call(env)
         | 
| 11 | 
            +
                    status, headers, body = @app.call(env)
         | 
| 12 | 
            +
                    headers["Set-Cookie"] = [(headers["Set-Cookie"]), "#@name=#@value"].compact.join("\n") unless @name.nil? or @value.nil?
         | 
| 13 | 
            +
                    [ status, headers, body ]
         | 
| 14 | 
            +
                  end
         | 
| 15 | 
            +
                end
         | 
| 16 | 
            +
              end
         | 
| 17 | 
            +
            end
         | 
| @@ -0,0 +1,28 @@ | |
| 1 | 
            +
            module Xing
         | 
| 2 | 
            +
              module DevAssets
         | 
| 3 | 
            +
                class GotoParam
         | 
| 4 | 
            +
                  def initialize(app)
         | 
| 5 | 
            +
                    @app = app
         | 
| 6 | 
            +
                  end
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                  def call(env)
         | 
| 9 | 
            +
                    status, headers, body = @app.call(env)
         | 
| 10 | 
            +
                    default = [ status, headers, body ]
         | 
| 11 | 
            +
                    request_path = env["SCRIPT_NAME"] + env["PATH_INFO"]
         | 
| 12 | 
            +
                    unless env["QUERY_STRING"].nil? or env["QUERY_STRING"].empty?
         | 
| 13 | 
            +
                      request_path += "&#{env["QUERY_STRING"]}"
         | 
| 14 | 
            +
                    end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                    return default unless status == 404
         | 
| 17 | 
            +
                    return default if %r(\A/(assets|fonts|system)) =~ request_path
         | 
| 18 | 
            +
                    return default if /\.(xml|html|ico|txt)\z/ =~ request_path
         | 
| 19 | 
            +
                    return default if /goto=/ =~ env["QUERY_STRING"]
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                    return [ 301, headers.merge("Location" => "/?goto=#{request_path}", "Content-Length" => "0"), [] ]
         | 
| 22 | 
            +
                  rescue => ex
         | 
| 23 | 
            +
                    require 'pp'
         | 
| 24 | 
            +
                    pp ex
         | 
| 25 | 
            +
                  end
         | 
| 26 | 
            +
                end
         | 
| 27 | 
            +
              end
         | 
| 28 | 
            +
            end
         | 
| @@ -0,0 +1,119 @@ | |
| 1 | 
            +
            require 'xing/dev-assets/cookie_setter'
         | 
| 2 | 
            +
            require 'xing/dev-assets/goto_param'
         | 
| 3 | 
            +
            require 'xing/dev-assets/logger'
         | 
| 4 | 
            +
            require 'xing/dev-assets/empty_file'
         | 
| 5 | 
            +
            require 'xing/dev-assets/strip_incoming_cache_headers'
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            module Xing
         | 
| 8 | 
            +
              module DevAssets
         | 
| 9 | 
            +
                class RackApp
         | 
| 10 | 
            +
                  def self.build(root_path, backend_port)
         | 
| 11 | 
            +
                    rack_app = new
         | 
| 12 | 
            +
                    rack_app.root_path = root_path
         | 
| 13 | 
            +
                    rack_app.backend_port = backend_port
         | 
| 14 | 
            +
                    yield rack_app if block_given?
         | 
| 15 | 
            +
                    rack_app.build
         | 
| 16 | 
            +
                  end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                  attr_accessor :root_path, :backend_port, :builder
         | 
| 19 | 
            +
                  attr_writer :builder, :backend_url, :env, :logger, :out_stream
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                  # Should be override by client app. Ironically, override with exactly
         | 
| 22 | 
            +
                  # this definition will usually work.
         | 
| 23 | 
            +
                  # (because this will log into a dir in the gem, but copied into subclass
         | 
| 24 | 
            +
                  # will be relative to that file and therefore into the project)
         | 
| 25 | 
            +
                  def log_root
         | 
| 26 | 
            +
                    File.expand_path("../../log", __FILE__)
         | 
| 27 | 
            +
                  end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                  def logpath_for_env
         | 
| 30 | 
            +
                    File.join( log_root, "#{env}_static.log")
         | 
| 31 | 
            +
                  end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                  def out_stream
         | 
| 34 | 
            +
                    @out_stream ||= $stdout
         | 
| 35 | 
            +
                  end
         | 
| 36 | 
            +
             | 
| 37 | 
            +
                  def backend_url
         | 
| 38 | 
            +
                    @backend_url ||= ENV["XING_BACKEND_URL"] || ENV["LRD_BACKEND_URL"] || "http://localhost:#{backend_port}/"
         | 
| 39 | 
            +
                  end
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                  def env
         | 
| 42 | 
            +
                    @env ||= ENV['RAILS_ENV'] || 'development'
         | 
| 43 | 
            +
                  end
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                  def logger
         | 
| 46 | 
            +
                    @logger ||= Logger.new(logpath_for_env)
         | 
| 47 | 
            +
                  end
         | 
| 48 | 
            +
             | 
| 49 | 
            +
                  def report_startup
         | 
| 50 | 
            +
                    out_stream.puts "Setting up static app:"
         | 
| 51 | 
            +
                    out_stream.puts "  serving files from #{root_path}"
         | 
| 52 | 
            +
                    out_stream.puts "  using #{backend_url} for API"
         | 
| 53 | 
            +
                    out_stream.puts "  logging to #{logpath_for_env}"
         | 
| 54 | 
            +
                  end
         | 
| 55 | 
            +
             | 
| 56 | 
            +
                  def goto_redirect
         | 
| 57 | 
            +
                    builder.use GotoParam
         | 
| 58 | 
            +
                  end
         | 
| 59 | 
            +
             | 
| 60 | 
            +
                  def cookies
         | 
| 61 | 
            +
                    builder.use CookieSetter, "lrdBackendUrl", backend_url
         | 
| 62 | 
            +
                    builder.use CookieSetter, "xingBackendUrl", backend_url
         | 
| 63 | 
            +
                  end
         | 
| 64 | 
            +
             | 
| 65 | 
            +
                  def disable_caching
         | 
| 66 | 
            +
                    builder.use StripIncomingCacheHeaders
         | 
| 67 | 
            +
                  end
         | 
| 68 | 
            +
             | 
| 69 | 
            +
                  def logging
         | 
| 70 | 
            +
                    builder.use Rack::CommonLogger, logger
         | 
| 71 | 
            +
                  end
         | 
| 72 | 
            +
             | 
| 73 | 
            +
                  def shortcut_livereload
         | 
| 74 | 
            +
                    if env != "development"
         | 
| 75 | 
            +
                      builder.map "/assets/livereload.js" do
         | 
| 76 | 
            +
                        run EmptyFile.new
         | 
| 77 | 
            +
                      end
         | 
| 78 | 
            +
                    end
         | 
| 79 | 
            +
                  end
         | 
| 80 | 
            +
             | 
| 81 | 
            +
                  def static_assets
         | 
| 82 | 
            +
                    builder.use Rack::Static, {
         | 
| 83 | 
            +
                      :urls => [""],
         | 
| 84 | 
            +
                      :root => root_path,
         | 
| 85 | 
            +
                      :index => "index.html",
         | 
| 86 | 
            +
                      :header_rules => {
         | 
| 87 | 
            +
                        :all => {"Cache-Control" => "no-cache, max-age=0" } #no caching development assets
         | 
| 88 | 
            +
                      }
         | 
| 89 | 
            +
                    }
         | 
| 90 | 
            +
                  end
         | 
| 91 | 
            +
             | 
| 92 | 
            +
                  def stub_application
         | 
| 93 | 
            +
                    builder.run proc{ [500, {}, ["Something went wrong"]] }
         | 
| 94 | 
            +
                  end
         | 
| 95 | 
            +
             | 
| 96 | 
            +
                  def setup_middleware
         | 
| 97 | 
            +
                    goto_redirect
         | 
| 98 | 
            +
                    cookies
         | 
| 99 | 
            +
                    disable_caching
         | 
| 100 | 
            +
                    logging
         | 
| 101 | 
            +
                    shortcut_livereload
         | 
| 102 | 
            +
                    static_assets
         | 
| 103 | 
            +
                  end
         | 
| 104 | 
            +
             | 
| 105 | 
            +
                  def builder
         | 
| 106 | 
            +
                    @builder ||= Rack::Builder.new
         | 
| 107 | 
            +
                  end
         | 
| 108 | 
            +
             | 
| 109 | 
            +
                  def build
         | 
| 110 | 
            +
                    report_startup
         | 
| 111 | 
            +
             | 
| 112 | 
            +
                    setup_middleware
         | 
| 113 | 
            +
                    stub_application
         | 
| 114 | 
            +
             | 
| 115 | 
            +
                    builder
         | 
| 116 | 
            +
                  end
         | 
| 117 | 
            +
                end
         | 
| 118 | 
            +
              end
         | 
| 119 | 
            +
            end
         | 
| @@ -0,0 +1,17 @@ | |
| 1 | 
            +
            puts Dir::pwd
         | 
| 2 | 
            +
            require 'test/unit'
         | 
| 3 | 
            +
            begin
         | 
| 4 | 
            +
              require 'spec'
         | 
| 5 | 
            +
            rescue LoadError
         | 
| 6 | 
            +
              false
         | 
| 7 | 
            +
            end
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            class RSpecTest < Test::Unit::TestCase
         | 
| 10 | 
            +
              def test_that_rspec_is_available
         | 
| 11 | 
            +
                assert_nothing_raised("\n\n *  RSpec isn't available - please run: gem install rspec  *\n\n"){ ::Spec }
         | 
| 12 | 
            +
              end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
              def test_that_specs_pass
         | 
| 15 | 
            +
                assert(system(*%w{spec -f e -p **/*.rb spec}),"\n\n *  Specs failed  *\n\n")
         | 
| 16 | 
            +
              end
         | 
| 17 | 
            +
            end
         | 
| 
            File without changes
         | 
    
        metadata
    ADDED
    
    | @@ -0,0 +1,74 @@ | |
| 1 | 
            +
            --- !ruby/object:Gem::Specification
         | 
| 2 | 
            +
            name: xing-dev-assets
         | 
| 3 | 
            +
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            +
              version: 0.0.1
         | 
| 5 | 
            +
            platform: ruby
         | 
| 6 | 
            +
            authors:
         | 
| 7 | 
            +
            - Judson Lester
         | 
| 8 | 
            +
            autorequire: 
         | 
| 9 | 
            +
            bindir: bin
         | 
| 10 | 
            +
            cert_chain: []
         | 
| 11 | 
            +
            date: 2016-01-14 00:00:00.000000000 Z
         | 
| 12 | 
            +
            dependencies:
         | 
| 13 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 14 | 
            +
              name: rack
         | 
| 15 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 16 | 
            +
                requirements:
         | 
| 17 | 
            +
                - - "~>"
         | 
| 18 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            +
                    version: '1.6'
         | 
| 20 | 
            +
              type: :runtime
         | 
| 21 | 
            +
              prerelease: false
         | 
| 22 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 23 | 
            +
                requirements:
         | 
| 24 | 
            +
                - - "~>"
         | 
| 25 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 26 | 
            +
                    version: '1.6'
         | 
| 27 | 
            +
            description: ''
         | 
| 28 | 
            +
            email:
         | 
| 29 | 
            +
            - nyarly@gmail.com
         | 
| 30 | 
            +
            executables: []
         | 
| 31 | 
            +
            extensions: []
         | 
| 32 | 
            +
            extra_rdoc_files: []
         | 
| 33 | 
            +
            files:
         | 
| 34 | 
            +
            - lib/xing/dev-assets.rb
         | 
| 35 | 
            +
            - lib/xing/dev-assets/cookie_setter.rb
         | 
| 36 | 
            +
            - lib/xing/dev-assets/dumper.rb
         | 
| 37 | 
            +
            - lib/xing/dev-assets/empty_file.rb
         | 
| 38 | 
            +
            - lib/xing/dev-assets/goto_param.rb
         | 
| 39 | 
            +
            - lib/xing/dev-assets/logger.rb
         | 
| 40 | 
            +
            - lib/xing/dev-assets/rack_app.rb
         | 
| 41 | 
            +
            - lib/xing/dev-assets/strip_incoming_cache_headers.rb
         | 
| 42 | 
            +
            - spec_help/gem_test_suite.rb
         | 
| 43 | 
            +
            - spec_help/spec_helper.rb
         | 
| 44 | 
            +
            homepage: http://nyarly.github.com/xing-dev-assets
         | 
| 45 | 
            +
            licenses:
         | 
| 46 | 
            +
            - MIT
         | 
| 47 | 
            +
            metadata: {}
         | 
| 48 | 
            +
            post_install_message: 
         | 
| 49 | 
            +
            rdoc_options:
         | 
| 50 | 
            +
            - "--inline-source"
         | 
| 51 | 
            +
            - "--main"
         | 
| 52 | 
            +
            - doc/README
         | 
| 53 | 
            +
            - "--title"
         | 
| 54 | 
            +
            - xing-dev-assets-0.0.1 Documentation
         | 
| 55 | 
            +
            require_paths:
         | 
| 56 | 
            +
            - lib/
         | 
| 57 | 
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 58 | 
            +
              requirements:
         | 
| 59 | 
            +
              - - ">="
         | 
| 60 | 
            +
                - !ruby/object:Gem::Version
         | 
| 61 | 
            +
                  version: '0'
         | 
| 62 | 
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 63 | 
            +
              requirements:
         | 
| 64 | 
            +
              - - ">="
         | 
| 65 | 
            +
                - !ruby/object:Gem::Version
         | 
| 66 | 
            +
                  version: '0'
         | 
| 67 | 
            +
            requirements: []
         | 
| 68 | 
            +
            rubyforge_project: xing-dev-assets
         | 
| 69 | 
            +
            rubygems_version: 2.4.8
         | 
| 70 | 
            +
            signing_key: 
         | 
| 71 | 
            +
            specification_version: 4
         | 
| 72 | 
            +
            summary: ''
         | 
| 73 | 
            +
            test_files:
         | 
| 74 | 
            +
            - spec_help/gem_test_suite.rb
         |