1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
|
require 'bundler'
Bundler.setup
require 'sinatra'
require 'json'
require 'ruby-debug'
require File.join(File.expand_path('../../..', __FILE__), 'coffeescript/processor')
ClientSideValidations::Processor.run
class AssetPath
def initialize(app, options={})
@app = app
@urls = options[:urls] || ["/favicon.ico"]
@index = options[:index]
root = options[:root] || Dir.pwd
cache_control = options[:cache_control]
@file_server = Rack::File.new(root, cache_control)
end
def overwrite_file_path(path)
@urls.kind_of?(Hash) && @urls.key?(path) || @index && path == '/'
end
def route_file(path)
@urls.kind_of?(Array) && @urls.any? { |url| path.index(url) == 0 }
end
def can_serve(path)
route_file(path) || overwrite_file_path(path)
end
def call(env)
path = env["PATH_INFO"]
if can_serve(path)
env["PATH_INFO"] = (path == '/' ? @index : @urls[path]) if overwrite_file_path(path)
response = @file_server.call(env)
if response.first == 404
@app.call(env)
else
response
end
else
@app.call(env)
end
end
end
use AssetPath, :urls => ['/vendor/assets/javascripts'], :root => File.expand_path('../..', settings.root)
use AssetPath, :urls => ['/vendor/assets/javascripts'], :root => File.expand_path('../', $:.find { |p| p =~ /jquery-rails/ })
JQUERY_VERSIONS = %w[ 1.6 1.6.1 1.6.2 1.6.3 1.6.4 1.7 1.7.1 1.7.2].freeze
helpers do
def jquery_link version
if params[:version] == version
"[#{version}]"
else
"<a href='/?version=#{version}'>#{version}</a>"
end
end
def jquery_src
if params[:version] == 'edge' then '/vendor/jquery.js'
else "http://code.jquery.com/jquery-#{params[:version]}.js"
end
end
def test_base
names = ['/vendor/qunit.js', 'settings']
names.map { |name| script_tag name }.join("\n")
end
def test *types
types.map do |type|
Dir.glob(File.expand_path("public/test/#{type}", settings.root) + '/*.js').map { |file| File.basename(file) }.map do |file|
script_tag "/test/#{type}/#{file}"
end.join("\n")
end.join("\n")
end
def script_tag src
src = "/test/#{src}.js" unless src.index('/')
%(<script src='#{src}' type='text/javascript'></script>)
end
def jquery_versions
JQUERY_VERSIONS
end
end
get '/' do
params[:version] ||= '1.7.2'
erb :index
end
get '/validators/uniqueness' do
content_type 'application/json'
if user = params[:user2]
status 500
'error'
elsif user = params['active_record_test_module/user2']
status 200
'false'
elsif scope = params[:scope]
if scope[:name] == 'test name' || scope[:name] == 'taken name'
status 200
'false'
else
status 404
'true'
end
elsif params[:case_sensitive] == 'false' && (params[:user][:email] || params[:users][:email]) == 'taken@test.com'
status 200
'false'
else
status 404
'true'
end
end
post '/users' do
data = { :params => params }.update(request.env)
payload = data.to_json.gsub('<', '<').gsub('>', '>')
<<-HTML
<script>
if (window.top && window.top !== window)
window.top.jQuery.event.trigger('iframe:loaded', #{payload})
</script>
<p id="response">Form submitted</p>
HTML
end
|