xing-dev-assets 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|