neverland 0.0.2
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 +6 -0
- data/.rspec +1 -0
- data/Gemfile +4 -0
- data/MIT-LICENSE +20 -0
- data/Rakefile +1 -0
- data/lib/neverland/engine.rb +7 -0
- data/lib/neverland/middleware.rb +42 -0
- data/lib/neverland/version.rb +3 -0
- data/lib/neverland.rb +6 -0
- data/neverland.gemspec +28 -0
- data/public/javascripts/neverland.js +32 -0
- data/spec/dummy/.gitignore +2 -0
- data/spec/dummy/Rakefile +7 -0
- data/spec/dummy/app/assets/javascripts/application.js +15 -0
- data/spec/dummy/app/assets/stylesheets/application.css +13 -0
- data/spec/dummy/app/controllers/application_controller.rb +3 -0
- data/spec/dummy/app/controllers/test_controller.rb +2 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/views/layouts/application.html.erb +14 -0
- data/spec/dummy/app/views/test/index.html.erb +9 -0
- data/spec/dummy/config/application.rb +43 -0
- data/spec/dummy/config/boot.rb +10 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/initializers/secret_token.rb +7 -0
- data/spec/dummy/config/initializers/session_store.rb +8 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy/config/routes.rb +3 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/public/404.html +26 -0
- data/spec/dummy/public/422.html +26 -0
- data/spec/dummy/public/500.html +25 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/script/rails +6 -0
- data/spec/requests/neverland_spec.rb +38 -0
- data/spec/spec_helper.rb +25 -0
- metadata +135 -0
data/.gitignore
ADDED
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--color
|
data/Gemfile
ADDED
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright 2012 Matthew Horan
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'nokogiri'
|
2
|
+
|
3
|
+
module Neverland
|
4
|
+
class Middleware
|
5
|
+
def initialize(app)
|
6
|
+
@app = app
|
7
|
+
end
|
8
|
+
|
9
|
+
def call(env)
|
10
|
+
cookies = Rack::Request.new(env).cookies
|
11
|
+
latitude = cookies['mock_latitude']
|
12
|
+
longitude = cookies['mock_longitude']
|
13
|
+
|
14
|
+
status, headers, response = @app.call(env)
|
15
|
+
|
16
|
+
case response
|
17
|
+
when ActionDispatch::Response
|
18
|
+
document = Nokogiri::HTML(response.body)
|
19
|
+
head = document.at('head')
|
20
|
+
|
21
|
+
script = Nokogiri::XML::Node.new('script', document)
|
22
|
+
script['type'] = 'text/javascript'
|
23
|
+
script['src'] = '/javascripts/neverland.js'
|
24
|
+
head << script
|
25
|
+
|
26
|
+
if latitude.present? && longitude.present?
|
27
|
+
script = Nokogiri::XML::Node.new('script', document)
|
28
|
+
script['type'] = 'text/javascript'
|
29
|
+
script.inner_html = <<-SCRIPT
|
30
|
+
Neverland.setLatitude(#{latitude})
|
31
|
+
Neverland.setLongitude(#{longitude})
|
32
|
+
SCRIPT
|
33
|
+
head << script
|
34
|
+
end
|
35
|
+
|
36
|
+
response.body = document.to_s
|
37
|
+
end
|
38
|
+
|
39
|
+
[status, headers, response]
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
data/lib/neverland.rb
ADDED
data/neverland.gemspec
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "neverland/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "neverland"
|
7
|
+
s.version = Neverland::VERSION
|
8
|
+
s.authors = ["Matthew Horan"]
|
9
|
+
s.email = ["matthew.horan@livestream.com"]
|
10
|
+
s.homepage = ""
|
11
|
+
s.summary = %q{Mock location provider for navigator.geolocation}
|
12
|
+
s.description = %q{Ever need to test geolocation in your Rails app? This gem makes it easy.}
|
13
|
+
|
14
|
+
s.rubyforge_project = "neverland"
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
|
21
|
+
s.add_dependency 'nokogiri'
|
22
|
+
|
23
|
+
# specify any dependencies here; for example:
|
24
|
+
s.add_development_dependency "rspec-rails"
|
25
|
+
s.add_development_dependency "tzinfo"
|
26
|
+
s.add_development_dependency "capybara"
|
27
|
+
s.add_development_dependency "jquery-rails"
|
28
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
// http://dev.w3.org/geo/api/spec-source.html
|
2
|
+
|
3
|
+
navigator.geolocation.getCurrentPosition = function(success, error) {
|
4
|
+
success({coords: Neverland.getCoords(), timestamp: Date.now()});
|
5
|
+
}
|
6
|
+
|
7
|
+
var Neverland = new function() {
|
8
|
+
var _latitude = 42.31283;
|
9
|
+
var _longitude = -71.114287;
|
10
|
+
|
11
|
+
return {
|
12
|
+
getCoords: function () {
|
13
|
+
return {
|
14
|
+
latitude: _latitude,
|
15
|
+
longitude: _longitude,
|
16
|
+
altitude: null,
|
17
|
+
accuracy: 33,
|
18
|
+
altitudeAccuracy: null,
|
19
|
+
heading: null,
|
20
|
+
speed: null
|
21
|
+
};
|
22
|
+
},
|
23
|
+
|
24
|
+
setLatitude: function(latitude) {
|
25
|
+
_latitude = latitude;
|
26
|
+
},
|
27
|
+
|
28
|
+
setLongitude: function(longitude) {
|
29
|
+
_longitude = longitude;
|
30
|
+
}
|
31
|
+
}
|
32
|
+
}
|
data/spec/dummy/Rakefile
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
# Add your own tasks in files placed in lib/tasks ending in .rake,
|
3
|
+
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
|
4
|
+
|
5
|
+
require File.expand_path('../config/application', __FILE__)
|
6
|
+
|
7
|
+
Dummy::Application.load_tasks
|
@@ -0,0 +1,15 @@
|
|
1
|
+
// This is a manifest file that'll be compiled into application.js, which will include all the files
|
2
|
+
// listed below.
|
3
|
+
//
|
4
|
+
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
|
5
|
+
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
|
6
|
+
//
|
7
|
+
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
|
8
|
+
// the compiled file.
|
9
|
+
//
|
10
|
+
// WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
|
11
|
+
// GO AFTER THE REQUIRES BELOW.
|
12
|
+
//
|
13
|
+
//= require jquery
|
14
|
+
//= require jquery_ujs
|
15
|
+
//= require_tree .
|
@@ -0,0 +1,13 @@
|
|
1
|
+
/*
|
2
|
+
* This is a manifest file that'll be compiled into application.css, which will include all the files
|
3
|
+
* listed below.
|
4
|
+
*
|
5
|
+
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
|
6
|
+
* or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
|
7
|
+
*
|
8
|
+
* You're free to add application-wide styles to this file and they'll appear at the top of the
|
9
|
+
* compiled file, but it's generally better to create a new file per style scope.
|
10
|
+
*
|
11
|
+
*= require_self
|
12
|
+
*= require_tree .
|
13
|
+
*/
|
@@ -0,0 +1,9 @@
|
|
1
|
+
<div>Latitude: <span id="latitude"></span></div>
|
2
|
+
<div>Longitude: <span id="longitude"><span></div>
|
3
|
+
|
4
|
+
<%= javascript_tag do %>
|
5
|
+
navigator.geolocation.getCurrentPosition(function(success) {
|
6
|
+
$('#latitude').text(success.coords.latitude);
|
7
|
+
$('#longitude').text(success.coords.longitude);
|
8
|
+
});
|
9
|
+
<% end %>
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require File.expand_path('../boot', __FILE__)
|
2
|
+
|
3
|
+
require "action_controller/railtie"
|
4
|
+
require 'sprockets/railtie'
|
5
|
+
require 'jquery/rails'
|
6
|
+
|
7
|
+
Bundler.require
|
8
|
+
require "neverland"
|
9
|
+
|
10
|
+
module Dummy
|
11
|
+
class Application < Rails::Application
|
12
|
+
# Configure the default encoding used in templates for Ruby 1.9.
|
13
|
+
config.encoding = "utf-8"
|
14
|
+
|
15
|
+
# Configure sensitive parameters which will be filtered from the log file.
|
16
|
+
config.filter_parameters += [:password]
|
17
|
+
|
18
|
+
# Enable the asset pipeline
|
19
|
+
config.assets.enabled = true
|
20
|
+
|
21
|
+
# Version of your assets, change this if you want to expire all your assets
|
22
|
+
config.assets.version = '1.0'
|
23
|
+
|
24
|
+
# Log error messages when you accidentally call methods on nil
|
25
|
+
config.whiny_nils = true
|
26
|
+
|
27
|
+
# Show full error reports and disable caching
|
28
|
+
config.consider_all_requests_local = true
|
29
|
+
config.action_controller.perform_caching = false
|
30
|
+
|
31
|
+
# Raise exceptions instead of rendering exception templates
|
32
|
+
config.action_dispatch.show_exceptions = false
|
33
|
+
|
34
|
+
# Disable request forgery protection in test environment
|
35
|
+
config.action_controller.allow_forgery_protection = false
|
36
|
+
|
37
|
+
# Print deprecation notices to the stderr
|
38
|
+
config.active_support.deprecation = :stderr
|
39
|
+
|
40
|
+
config.middleware.use Neverland::Middleware
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
@@ -0,0 +1,7 @@
|
|
1
|
+
# Be sure to restart your server when you modify this file.
|
2
|
+
|
3
|
+
# Your secret key for verifying the integrity of signed cookies.
|
4
|
+
# If you change this key, all old signed cookies will become invalid!
|
5
|
+
# Make sure the secret is at least 30 characters and all random,
|
6
|
+
# no regular words or you'll be exposed to dictionary attacks.
|
7
|
+
Dummy::Application.config.secret_token = '67f44b464e77d52c9a2e7a295dcf39903e5c73897e08fda94321a3a4fe7a1aff41c4228ba537866373005ff99971eb4a283c67a5dede5916228b5432060b870a'
|
@@ -0,0 +1,8 @@
|
|
1
|
+
# Be sure to restart your server when you modify this file.
|
2
|
+
|
3
|
+
Dummy::Application.config.session_store :cookie_store, key: '_dummy_session'
|
4
|
+
|
5
|
+
# Use the database for sessions instead of the cookie-based default,
|
6
|
+
# which shouldn't be used to store highly confidential information
|
7
|
+
# (create the session table with "rails generate session_migration")
|
8
|
+
# Dummy::Application.config.session_store :active_record_store
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# Be sure to restart your server when you modify this file.
|
2
|
+
#
|
3
|
+
# This file contains settings for ActionController::ParamsWrapper which
|
4
|
+
# is enabled by default.
|
5
|
+
|
6
|
+
# Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array.
|
7
|
+
ActiveSupport.on_load(:action_controller) do
|
8
|
+
wrap_parameters format: [:json]
|
9
|
+
end
|
10
|
+
|
11
|
+
# Disable root element in JSON by default.
|
12
|
+
ActiveSupport.on_load(:active_record) do
|
13
|
+
self.include_root_in_json = false
|
14
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>The page you were looking for doesn't exist (404)</title>
|
5
|
+
<style type="text/css">
|
6
|
+
body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
|
7
|
+
div.dialog {
|
8
|
+
width: 25em;
|
9
|
+
padding: 0 4em;
|
10
|
+
margin: 4em auto 0 auto;
|
11
|
+
border: 1px solid #ccc;
|
12
|
+
border-right-color: #999;
|
13
|
+
border-bottom-color: #999;
|
14
|
+
}
|
15
|
+
h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
|
16
|
+
</style>
|
17
|
+
</head>
|
18
|
+
|
19
|
+
<body>
|
20
|
+
<!-- This file lives in public/404.html -->
|
21
|
+
<div class="dialog">
|
22
|
+
<h1>The page you were looking for doesn't exist.</h1>
|
23
|
+
<p>You may have mistyped the address or the page may have moved.</p>
|
24
|
+
</div>
|
25
|
+
</body>
|
26
|
+
</html>
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>The change you wanted was rejected (422)</title>
|
5
|
+
<style type="text/css">
|
6
|
+
body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
|
7
|
+
div.dialog {
|
8
|
+
width: 25em;
|
9
|
+
padding: 0 4em;
|
10
|
+
margin: 4em auto 0 auto;
|
11
|
+
border: 1px solid #ccc;
|
12
|
+
border-right-color: #999;
|
13
|
+
border-bottom-color: #999;
|
14
|
+
}
|
15
|
+
h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
|
16
|
+
</style>
|
17
|
+
</head>
|
18
|
+
|
19
|
+
<body>
|
20
|
+
<!-- This file lives in public/422.html -->
|
21
|
+
<div class="dialog">
|
22
|
+
<h1>The change you wanted was rejected.</h1>
|
23
|
+
<p>Maybe you tried to change something you didn't have access to.</p>
|
24
|
+
</div>
|
25
|
+
</body>
|
26
|
+
</html>
|
@@ -0,0 +1,25 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>We're sorry, but something went wrong (500)</title>
|
5
|
+
<style type="text/css">
|
6
|
+
body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
|
7
|
+
div.dialog {
|
8
|
+
width: 25em;
|
9
|
+
padding: 0 4em;
|
10
|
+
margin: 4em auto 0 auto;
|
11
|
+
border: 1px solid #ccc;
|
12
|
+
border-right-color: #999;
|
13
|
+
border-bottom-color: #999;
|
14
|
+
}
|
15
|
+
h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
|
16
|
+
</style>
|
17
|
+
</head>
|
18
|
+
|
19
|
+
<body>
|
20
|
+
<!-- This file lives in public/500.html -->
|
21
|
+
<div class="dialog">
|
22
|
+
<h1>We're sorry, but something went wrong.</h1>
|
23
|
+
</div>
|
24
|
+
</body>
|
25
|
+
</html>
|
File without changes
|
@@ -0,0 +1,6 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
|
3
|
+
|
4
|
+
APP_PATH = File.expand_path('../../config/application', __FILE__)
|
5
|
+
require File.expand_path('../../config/boot', __FILE__)
|
6
|
+
require 'rails/commands'
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'neverland' do
|
4
|
+
it 'should insert the mock JavaScript on a successful response' do
|
5
|
+
visit '/'
|
6
|
+
|
7
|
+
page.should have_selector('head script[src="/javascripts/neverland.js"]')
|
8
|
+
find('head script[src="/javascripts/neverland.js"]')['type'].should == 'text/javascript'
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'should mock the default coordinates on a successful response', :js => true do
|
12
|
+
visit '/'
|
13
|
+
|
14
|
+
find('#latitude').should have_content('42.31283')
|
15
|
+
find('#longitude').should have_content('-71.114287')
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'should mock the provided coordinates on a successful response', :js => true do
|
19
|
+
visit '/'
|
20
|
+
cookie 'mock_latitude', '37.2630556'
|
21
|
+
cookie 'mock_longitude', '-115.7930198'
|
22
|
+
|
23
|
+
visit '/'
|
24
|
+
|
25
|
+
find('#latitude').should have_content('37.2630556')
|
26
|
+
find('#longitude').should have_content('-115.7930198')
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should not mock on an error response" do
|
30
|
+
lambda { visit '/nonexistent' }.should raise_error(ActionController::RoutingError)
|
31
|
+
|
32
|
+
page.should_not have_selector('head script[src="/javascripts/neverland.js"]')
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def cookie(name, value)
|
37
|
+
Capybara.current_session.driver.browser.manage.add_cookie(:name => name, :value => value)
|
38
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
# This file is copied to spec/ when you run 'rails generate rspec:install'
|
2
|
+
ENV["RAILS_ENV"] ||= 'test'
|
3
|
+
require File.expand_path("../dummy/config/environment.rb", __FILE__)
|
4
|
+
require 'rspec/rails'
|
5
|
+
require 'rspec/autorun'
|
6
|
+
require 'capybara/rspec'
|
7
|
+
|
8
|
+
# Requires supporting ruby files with custom matchers and macros, etc,
|
9
|
+
# in spec/support/ and its subdirectories.
|
10
|
+
Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}
|
11
|
+
|
12
|
+
RSpec.configure do |config|
|
13
|
+
# ## Mock Framework
|
14
|
+
#
|
15
|
+
# If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
|
16
|
+
#
|
17
|
+
# config.mock_with :mocha
|
18
|
+
# config.mock_with :flexmock
|
19
|
+
# config.mock_with :rr
|
20
|
+
|
21
|
+
# If true, the base class of anonymous controllers will be inferred
|
22
|
+
# automatically. This will be the default behavior in future versions of
|
23
|
+
# rspec-rails.
|
24
|
+
config.infer_base_class_for_anonymous_controllers = false
|
25
|
+
end
|
metadata
ADDED
@@ -0,0 +1,135 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: neverland
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Matthew Horan
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-03-24 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: nokogiri
|
16
|
+
requirement: &16437000 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *16437000
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rspec-rails
|
27
|
+
requirement: &16436500 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :development
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *16436500
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: tzinfo
|
38
|
+
requirement: &16435920 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
type: :development
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *16435920
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: capybara
|
49
|
+
requirement: &16435360 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *16435360
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: jquery-rails
|
60
|
+
requirement: &16434720 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
type: :development
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *16434720
|
69
|
+
description: Ever need to test geolocation in your Rails app? This gem makes it easy.
|
70
|
+
email:
|
71
|
+
- matthew.horan@livestream.com
|
72
|
+
executables: []
|
73
|
+
extensions: []
|
74
|
+
extra_rdoc_files: []
|
75
|
+
files:
|
76
|
+
- .gitignore
|
77
|
+
- .rspec
|
78
|
+
- Gemfile
|
79
|
+
- MIT-LICENSE
|
80
|
+
- Rakefile
|
81
|
+
- lib/neverland.rb
|
82
|
+
- lib/neverland/engine.rb
|
83
|
+
- lib/neverland/middleware.rb
|
84
|
+
- lib/neverland/version.rb
|
85
|
+
- neverland.gemspec
|
86
|
+
- public/javascripts/neverland.js
|
87
|
+
- spec/dummy/.gitignore
|
88
|
+
- spec/dummy/Rakefile
|
89
|
+
- spec/dummy/app/assets/javascripts/application.js
|
90
|
+
- spec/dummy/app/assets/stylesheets/application.css
|
91
|
+
- spec/dummy/app/controllers/application_controller.rb
|
92
|
+
- spec/dummy/app/controllers/test_controller.rb
|
93
|
+
- spec/dummy/app/helpers/application_helper.rb
|
94
|
+
- spec/dummy/app/views/layouts/application.html.erb
|
95
|
+
- spec/dummy/app/views/test/index.html.erb
|
96
|
+
- spec/dummy/config.ru
|
97
|
+
- spec/dummy/config/application.rb
|
98
|
+
- spec/dummy/config/boot.rb
|
99
|
+
- spec/dummy/config/environment.rb
|
100
|
+
- spec/dummy/config/initializers/secret_token.rb
|
101
|
+
- spec/dummy/config/initializers/session_store.rb
|
102
|
+
- spec/dummy/config/initializers/wrap_parameters.rb
|
103
|
+
- spec/dummy/config/routes.rb
|
104
|
+
- spec/dummy/public/404.html
|
105
|
+
- spec/dummy/public/422.html
|
106
|
+
- spec/dummy/public/500.html
|
107
|
+
- spec/dummy/public/favicon.ico
|
108
|
+
- spec/dummy/script/rails
|
109
|
+
- spec/requests/neverland_spec.rb
|
110
|
+
- spec/spec_helper.rb
|
111
|
+
homepage: ''
|
112
|
+
licenses: []
|
113
|
+
post_install_message:
|
114
|
+
rdoc_options: []
|
115
|
+
require_paths:
|
116
|
+
- lib
|
117
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
118
|
+
none: false
|
119
|
+
requirements:
|
120
|
+
- - ! '>='
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: '0'
|
123
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
124
|
+
none: false
|
125
|
+
requirements:
|
126
|
+
- - ! '>='
|
127
|
+
- !ruby/object:Gem::Version
|
128
|
+
version: '0'
|
129
|
+
requirements: []
|
130
|
+
rubyforge_project: neverland
|
131
|
+
rubygems_version: 1.8.15
|
132
|
+
signing_key:
|
133
|
+
specification_version: 3
|
134
|
+
summary: Mock location provider for navigator.geolocation
|
135
|
+
test_files: []
|