headhunter 0.1.7 → 0.1.8

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.
Files changed (110) hide show
  1. checksums.yaml +4 -4
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +3 -0
  4. data/Rakefile +28 -3
  5. data/lib/headhunter.rb +11 -5
  6. data/lib/headhunter/css_hunter.rb +4 -3
  7. data/lib/headhunter/css_validator.rb +21 -15
  8. data/lib/headhunter/engine.rb +11 -0
  9. data/lib/headhunter/html_validator.rb +8 -6
  10. data/lib/headhunter/rails.rb +10 -12
  11. data/lib/headhunter/runner.rb +1 -1
  12. data/lib/headhunter/version.rb +1 -1
  13. data/lib/tasks/headhunter_tasks.rake +4 -0
  14. data/lib/tidy/{tidy → tidy2} +0 -0
  15. data/spec/dummy/Gemfile +9 -0
  16. data/spec/dummy/Gemfile.lock +178 -0
  17. data/spec/dummy/README.rdoc +28 -0
  18. data/spec/dummy/Rakefile +13 -0
  19. data/spec/dummy/app/assets/javascripts/application.js +13 -0
  20. data/spec/dummy/app/assets/stylesheets/application.css +13 -0
  21. data/spec/dummy/app/assets/stylesheets/scaffold.css +56 -0
  22. data/spec/dummy/app/controllers/application_controller.rb +5 -0
  23. data/spec/dummy/app/controllers/posts_controller.rb +5 -0
  24. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  25. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  26. data/spec/dummy/app/views/posts/index.html.erb +21 -0
  27. data/spec/dummy/bin/bundle +3 -0
  28. data/spec/dummy/bin/rails +4 -0
  29. data/spec/dummy/bin/rake +4 -0
  30. data/spec/dummy/config.ru +4 -0
  31. data/spec/dummy/config/application.rb +26 -0
  32. data/spec/dummy/config/boot.rb +5 -0
  33. data/spec/dummy/config/database.yml +25 -0
  34. data/spec/dummy/config/environment.rb +5 -0
  35. data/spec/dummy/config/environments/development.rb +26 -0
  36. data/spec/dummy/config/environments/production.rb +80 -0
  37. data/spec/dummy/config/environments/test.rb +36 -0
  38. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  39. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  40. data/spec/dummy/config/initializers/inflections.rb +16 -0
  41. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  42. data/spec/dummy/config/initializers/secret_token.rb +12 -0
  43. data/spec/dummy/config/initializers/session_store.rb +3 -0
  44. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  45. data/spec/dummy/config/locales/en.yml +23 -0
  46. data/spec/dummy/config/routes.rb +58 -0
  47. data/spec/dummy/log/development.log +247 -0
  48. data/spec/dummy/log/test.log +452 -0
  49. data/spec/dummy/public/404.html +58 -0
  50. data/spec/dummy/public/422.html +58 -0
  51. data/spec/dummy/public/500.html +57 -0
  52. data/spec/dummy/public/favicon.ico +0 -0
  53. data/spec/dummy/spec/features/bla_spec.rb +9 -0
  54. data/spec/dummy/spec/spec_helper.rb +16 -0
  55. data/spec/dummy/tmp/cache/assets/development/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
  56. data/spec/dummy/tmp/cache/assets/development/sprockets/1e8f75a6b5b33970fb8e397347caa0a1 +0 -0
  57. data/spec/dummy/tmp/cache/assets/development/sprockets/24204f742af588c8166d3160b500d20f +0 -0
  58. data/spec/dummy/tmp/cache/assets/development/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
  59. data/spec/dummy/tmp/cache/assets/development/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
  60. data/spec/dummy/tmp/cache/assets/development/sprockets/371bf96e99717688ed7313a0c53f4212 +0 -0
  61. data/spec/dummy/tmp/cache/assets/development/sprockets/416150dc3ac35079c94273cc46e90aa6 +0 -0
  62. data/spec/dummy/tmp/cache/assets/development/sprockets/510da110ae528e2d22533be39ff696c5 +0 -0
  63. data/spec/dummy/tmp/cache/assets/development/sprockets/5384ad85f52d3272dbc64d46ef3876a4 +0 -0
  64. data/spec/dummy/tmp/cache/assets/development/sprockets/6fc757c2c8329244ca95d6909865bbc2 +0 -0
  65. data/spec/dummy/tmp/cache/assets/development/sprockets/c85016e7bbd4f3adbb7635d01f85d39b +0 -0
  66. data/spec/dummy/tmp/cache/assets/development/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
  67. data/spec/dummy/tmp/cache/assets/development/sprockets/d066c004d1fd26ae76a61303a7a18145 +0 -0
  68. data/spec/dummy/tmp/cache/assets/development/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
  69. data/spec/dummy/tmp/cache/assets/development/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
  70. data/spec/dummy/tmp/cache/assets/test/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
  71. data/spec/dummy/tmp/cache/assets/test/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
  72. data/spec/dummy/tmp/cache/assets/test/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
  73. data/spec/dummy/tmp/cache/assets/test/sprockets/371bf96e99717688ed7313a0c53f4212 +0 -0
  74. data/spec/dummy/tmp/cache/assets/test/sprockets/416150dc3ac35079c94273cc46e90aa6 +0 -0
  75. data/spec/dummy/tmp/cache/assets/test/sprockets/5384ad85f52d3272dbc64d46ef3876a4 +0 -0
  76. data/spec/dummy/tmp/cache/assets/test/sprockets/6fc757c2c8329244ca95d6909865bbc2 +0 -0
  77. data/spec/dummy/tmp/cache/assets/test/sprockets/c85016e7bbd4f3adbb7635d01f85d39b +0 -0
  78. data/spec/dummy/tmp/cache/assets/test/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
  79. data/spec/dummy/tmp/cache/assets/test/sprockets/d066c004d1fd26ae76a61303a7a18145 +0 -0
  80. data/spec/dummy/tmp/cache/assets/test/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
  81. data/spec/dummy/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
  82. data/spec/files/css_hunter/valid.html +15 -0
  83. data/spec/files/css_validator/invalid.css +42 -0
  84. data/spec/files/css_validator/invalid_response.xml +40 -0
  85. data/spec/files/css_validator/valid.css +39 -0
  86. data/spec/files/css_validator/valid_response.xml +23 -0
  87. data/spec/files/html_validator/invalid.html +15 -0
  88. data/spec/files/html_validator/invalid_response.txt +1 -0
  89. data/spec/files/html_validator/valid.html +15 -0
  90. data/spec/files/html_validator/valid_response.txt +0 -0
  91. data/spec/files/html_with_srcset.html +14 -0
  92. data/spec/files/html_without_srcset.html +14 -0
  93. data/spec/files/invalid2.html +16 -0
  94. data/spec/files/valid-1.css +31 -0
  95. data/spec/files/valid-2.css +42 -0
  96. data/spec/files/valid-3.css +48 -0
  97. data/spec/files/valid.html5 +14 -0
  98. data/spec/files/valid_with_cache_busters.html +16 -0
  99. data/spec/files/valid_without_cache_busters.html +16 -0
  100. data/spec/lib/headhunter/css_hunter_spec.rb +83 -0
  101. data/spec/lib/headhunter/css_validator_spec.rb +196 -0
  102. data/spec/lib/headhunter/html_validator_spec.rb +143 -0
  103. data/spec/spec_helper.rb +25 -0
  104. metadata +193 -86
  105. data/Gemfile +0 -4
  106. data/Gemfile.lock +0 -78
  107. data/README.md +0 -78
  108. data/docs/headhunter.png +0 -0
  109. data/docs/money.png +0 -0
  110. data/docs/screenshot.png +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4eab4440d00eba351de19361f2dac45a68db188d
4
- data.tar.gz: d8689bd2c15d0358f865653976a7f193a6bc7727
3
+ metadata.gz: dcd1b7447a9eae21498b0f5b62e947795b053c26
4
+ data.tar.gz: 86544db7a9663ce6eb499668e187f5075eb40904
5
5
  SHA512:
6
- metadata.gz: 17736bf55ce84edf7be0c74a33a8c5b8f25202d293506c7baa3bddf4a50992c436b0925f0ddd11203605ca1bcacc0724c3530bd9a8ae735127ed5966b3d69f65
7
- data.tar.gz: e9710d38bbc41753ca27d0bd4f928f68c37c1a10750c3b3b4ba7bd15a34eacf40e279af68ef9bfbc8da2d421de603be3c4ed7ed6f342e5df652ebe6dab23be9a
6
+ metadata.gz: df37b4baf64385b47036de5d71b70ae30aaa852705325be6d8cfb4a8f6ccc375fbf06211abb53847a814ea2ed21e0d8a5642c9b430bcd1979730ef529a40f620
7
+ data.tar.gz: a11aee4afdf220ef6de956908fa0a7e5f67173d474a2b0e578b777669636b502c1c2929ce0772f5b33ce817dd67f8071cc08e2795a7d1a5da55beda90e4a8ad5
@@ -0,0 +1,20 @@
1
+ Copyright 2014 YOURNAME
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.
@@ -0,0 +1,3 @@
1
+ = Headhunter
2
+
3
+ This project rocks and uses MIT-LICENSE.
data/Rakefile CHANGED
@@ -1,7 +1,32 @@
1
- require 'bundler/gem_tasks'
1
+ begin
2
+ require 'bundler/setup'
3
+ rescue LoadError
4
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
5
+ end
6
+
7
+ ENV['HEADHUNTER'] ||= 'true' # Normally, headhunter is only loaded when submitting HEADHUNTER=true on the command line. For sake of simplicity, we activate it here generally.
8
+
9
+ require 'rdoc/task'
10
+
11
+ RDoc::Task.new(:rdoc) do |rdoc|
12
+ rdoc.rdoc_dir = 'rdoc'
13
+ rdoc.title = 'Headhunter'
14
+ rdoc.options << '--line-numbers'
15
+ rdoc.rdoc_files.include('README.rdoc')
16
+ rdoc.rdoc_files.include('lib/**/*.rb')
17
+ end
18
+
19
+ APP_RAKEFILE = File.expand_path("../spec/dummy/Rakefile", __FILE__)
20
+ load 'rails/tasks/engine.rake'
21
+
22
+ Bundler::GemHelper.install_tasks
23
+
24
+ Dir[File.join(File.dirname(__FILE__), 'tasks/**/*.rake')].each { |f| load f }
25
+
26
+ require 'rspec/core'
2
27
  require 'rspec/core/rake_task'
3
28
 
4
- RSpec::Core::RakeTask.new('spec')
29
+ desc 'Run all specs in spec directory (excluding plugin specs)'
30
+ RSpec::Core::RakeTask.new(:spec)
5
31
 
6
- # Run RSpec code examples as the default rake task
7
32
  task default: :spec
@@ -1,5 +1,11 @@
1
- require 'headhunter/css_hunter'
2
- require 'headhunter/css_validator'
3
- require 'headhunter/html_validator'
4
- require 'headhunter/rails'
5
- require 'headhunter/runner'
1
+ if ENV['HEADHUNTER'] == 'true'
2
+ require 'headhunter/engine'
3
+ require 'headhunter/css_hunter'
4
+ require 'headhunter/css_validator'
5
+ require 'headhunter/html_validator'
6
+ require 'headhunter/rails'
7
+ require 'headhunter/runner'
8
+ end
9
+
10
+ module Headhunter
11
+ end
@@ -1,5 +1,6 @@
1
1
  require 'css_parser'
2
2
  require 'nokogiri'
3
+ require 'colorize'
3
4
 
4
5
  module Headhunter
5
6
  class CssHunter
@@ -27,9 +28,9 @@ module Headhunter
27
28
  lines = []
28
29
 
29
30
  lines << "Found #{used_selectors.size + unused_selectors.size + error_selectors.size} CSS selectors.".yellow
30
- lines << 'All selectors are in use.'.green if unused_selectors.size + error_selectors.size == 0
31
- lines << "#{unused_selectors.size} selectors are not in use: #{unused_selectors.sort.join(', ').red}".red if unused_selectors.size > 0
32
- lines << "#{error_selectors.size} selectors could not be parsed: #{error_selectors.sort.join(', ').red}".red if error_selectors.size > 0
31
+ lines << 'All selectors are in use.'.green unless (unused_selectors + error_selectors).any?
32
+ lines << "#{unused_selectors.size} selectors are not in use: #{unused_selectors.sort.join(', ').red}".red if unused_selectors.any?
33
+ lines << "#{error_selectors.size} selectors could not be parsed: #{error_selectors.sort.join(', ').red}".red if error_selectors.any?
33
34
 
34
35
  lines.join("\n")
35
36
  end
@@ -1,3 +1,5 @@
1
+ require 'open3'
2
+ require 'colorize'
1
3
  require 'net/http'
2
4
  require 'nokogiri/xml'
3
5
 
@@ -12,22 +14,26 @@ module Headhunter
12
14
  @profile = profile # TODO!
13
15
  @vextwarning = vextwarning # TODO!
14
16
 
15
- @responses = @stylesheets.map do |stylesheet|
16
- validate(stylesheet)
17
- end
17
+ @responses = []
18
+
19
+ @stylesheets.map do |stylesheet|
20
+ validate(stylesheet)
21
+ end
18
22
  end
19
23
 
20
24
  def validate(uri)
21
- # See http://stackoverflow.com/questions/1137884/is-there-an-open-source-css-validator-that-can-be-run-locally
22
- # More config options see http://jigsaw.w3.org/css-validator/manual.html
23
- results = if File.exists?(uri)
24
- # TODO: Better use Open3.popen3!
25
- Dir.chdir(VALIDATOR_DIR) { `java -jar css-validator.jar --output=soap12 file:#{uri}` }
26
- else
27
- raise "Couldn't locate uri #{uri}"
28
- end
29
-
30
- Response.new(results)
25
+ Dir.chdir(VALIDATOR_DIR) do
26
+ raise "Couldn't locate uri #{uri}" unless File.exists? uri
27
+
28
+ # See http://stackoverflow.com/questions/1137884/is-there-an-open-source-css-validator-that-can-be-run-locally
29
+ # More config options see http://jigsaw.w3.org/css-validator/manual.html
30
+ stdin, stdout, stderr = Open3.popen3("java -jar css-validator.jar --output=soap12 file:#{uri}")
31
+ stdin.close
32
+ stderr.close
33
+
34
+ @responses << Response.new(stdout.read)
35
+ stdout.close
36
+ end
31
37
  end
32
38
 
33
39
  def valid_responses
@@ -42,8 +48,8 @@ module Headhunter
42
48
  lines = []
43
49
 
44
50
  lines << "Validated #{responses.size} stylesheets.".yellow
45
- lines << "All stylesheets are valid.".green if invalid_responses.size == 0
46
- lines << "#{x_stylesheets_be(invalid_responses.size)} invalid.".red if invalid_responses.size > 0
51
+ lines << "All stylesheets are valid.".green unless invalid_responses.any?
52
+ lines << "#{x_stylesheets_be(invalid_responses.size)} invalid.".red if invalid_responses.any?
47
53
 
48
54
  invalid_responses.each do |response|
49
55
  lines << " #{extract_filename(response.uri)}:".red
@@ -0,0 +1,11 @@
1
+ module Headhunter
2
+ class Engine < ::Rails::Engine
3
+ isolate_namespace Headhunter
4
+
5
+ config.generators do |g|
6
+ g.test_framework :rspec, :fixture => false
7
+ g.assets false
8
+ g.helper false
9
+ end
10
+ end
11
+ end
@@ -1,8 +1,10 @@
1
- require 'html_validation'
1
+ require 'open3'
2
+ require 'colorize'
2
3
 
3
4
  module Headhunter
4
5
  class HtmlValidator
5
6
  VALIDATOR_DIR = Gem.loaded_specs['headhunter'].full_gem_path + '/lib/tidy/'
7
+ EXECUTABLE = 'tidy2'
6
8
 
7
9
  attr_reader :responses
8
10
 
@@ -12,8 +14,10 @@ module Headhunter
12
14
 
13
15
  def validate(uri, html)
14
16
  Dir.chdir(VALIDATOR_DIR) do
17
+ raise "Could not find tidy in #{Dir.pwd}" unless File.exists? EXECUTABLE
18
+
15
19
  # Docs for Tidy: http://tidy.sourceforge.net/docs/quickref.html
16
- stdin, stdout, stderr = Open3.popen3('tidy -quiet')
20
+ stdin, stdout, stderr = Open3.popen3("#{EXECUTABLE} -quiet")
17
21
  stdin.puts html
18
22
  stdin.close
19
23
  stdout.close
@@ -21,8 +25,6 @@ module Headhunter
21
25
  @responses << Response.new(stderr.read, uri)
22
26
  stderr.close
23
27
  end
24
-
25
- @responses.last
26
28
  end
27
29
 
28
30
  def valid_responses
@@ -37,8 +39,8 @@ module Headhunter
37
39
  lines = []
38
40
 
39
41
  lines << "Validated #{responses.size} pages.".yellow
40
- lines << "All pages are valid.".green if invalid_responses.size == 0
41
- lines << "#{x_pages_be(invalid_responses.size)} invalid.".red if invalid_responses.size > 0
42
+ lines << "All pages are valid.".green unless invalid_responses.any?
43
+ lines << "#{x_pages_be(invalid_responses.size)} invalid.".red if invalid_responses.any?
42
44
 
43
45
  invalid_responses.each do |response|
44
46
  lines << " #{response.uri}:".red
@@ -1,20 +1,18 @@
1
1
  require 'headhunter'
2
2
  require 'headhunter/rack/capturing_middleware'
3
3
 
4
- if ENV['HEADHUNTER'] == 'true'
5
- module Headhunter
6
- module Rails
7
- class Railtie < ::Rails::Railtie
8
- initializer "headhunter.hijack" do |app|
9
- head_hunter = Runner.new(::Rails.root)
4
+ module Headhunter
5
+ module Rails
6
+ class Railtie < ::Rails::Railtie
7
+ initializer "headhunter.hijack" do |app|
8
+ head_hunter = Runner.new(::Rails.root)
10
9
 
11
- at_exit do
12
- head_hunter.report
13
- head_hunter.clean_up!
14
- end
15
-
16
- app.middleware.insert(0, Headhunter::Rack::CapturingMiddleware, head_hunter)
10
+ at_exit do
11
+ head_hunter.report
12
+ head_hunter.clean_up!
17
13
  end
14
+
15
+ app.middleware.insert(0, Headhunter::Rack::CapturingMiddleware, head_hunter)
18
16
  end
19
17
  end
20
18
  end
@@ -20,7 +20,7 @@ module Headhunter
20
20
 
21
21
  def process(url, html)
22
22
  @html_validator.validate(url, html)
23
- @css_hunter.process(url, html)
23
+ @css_hunter.process(html)
24
24
  end
25
25
 
26
26
  def clean_up!
@@ -1,3 +1,3 @@
1
1
  module Headhunter
2
- VERSION = '0.1.7'
2
+ VERSION = '0.1.8'
3
3
  end
@@ -0,0 +1,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :headhunter do
3
+ # # Task goes here
4
+ # end
File without changes
@@ -0,0 +1,9 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # TODO: Can't this be included via ../../headhunter.gemspec?
4
+ gem 'headhunter', path: '../../'
5
+
6
+ gem 'rails'
7
+ gem 'rspec-rails'
8
+ gem 'capybara'
9
+ gem 'jazz_hands' # Use Pry and its extensions instead of IRB
@@ -0,0 +1,178 @@
1
+ PATH
2
+ remote: ../../
3
+ specs:
4
+ headhunter (0.1.7)
5
+ colorize
6
+ css_parser (>= 1.2.6)
7
+ nokogiri
8
+ rails
9
+
10
+ GEM
11
+ remote: https://rubygems.org/
12
+ specs:
13
+ actionmailer (4.0.3)
14
+ actionpack (= 4.0.3)
15
+ mail (~> 2.5.4)
16
+ actionpack (4.0.3)
17
+ activesupport (= 4.0.3)
18
+ builder (~> 3.1.0)
19
+ erubis (~> 2.7.0)
20
+ rack (~> 1.5.2)
21
+ rack-test (~> 0.6.2)
22
+ activemodel (4.0.3)
23
+ activesupport (= 4.0.3)
24
+ builder (~> 3.1.0)
25
+ activerecord (4.0.3)
26
+ activemodel (= 4.0.3)
27
+ activerecord-deprecated_finders (~> 1.0.2)
28
+ activesupport (= 4.0.3)
29
+ arel (~> 4.0.0)
30
+ activerecord-deprecated_finders (1.0.3)
31
+ activesupport (4.0.3)
32
+ i18n (~> 0.6, >= 0.6.4)
33
+ minitest (~> 4.2)
34
+ multi_json (~> 1.3)
35
+ thread_safe (~> 0.1)
36
+ tzinfo (~> 0.3.37)
37
+ addressable (2.3.5)
38
+ arel (4.0.2)
39
+ atomic (1.1.14)
40
+ awesome_print (1.2.0)
41
+ binding_of_caller (0.7.2)
42
+ debug_inspector (>= 0.0.1)
43
+ builder (3.1.4)
44
+ capybara (2.2.1)
45
+ mime-types (>= 1.16)
46
+ nokogiri (>= 1.3.3)
47
+ rack (>= 1.0.0)
48
+ rack-test (>= 0.5.4)
49
+ xpath (~> 2.0)
50
+ coderay (1.1.0)
51
+ colorize (0.6.0)
52
+ columnize (0.3.6)
53
+ coolline (0.4.3)
54
+ css_parser (1.3.5)
55
+ addressable
56
+ debug_inspector (0.0.2)
57
+ debugger (1.6.5)
58
+ columnize (>= 0.3.1)
59
+ debugger-linecache (~> 1.2.0)
60
+ debugger-ruby_core_source (~> 1.3.1)
61
+ debugger-linecache (1.2.0)
62
+ debugger-ruby_core_source (1.3.1)
63
+ diff-lcs (1.2.5)
64
+ diffy (3.0.1)
65
+ erubis (2.7.0)
66
+ grit (2.5.0)
67
+ diff-lcs (~> 1.1)
68
+ mime-types (~> 1.15)
69
+ posix-spawn (~> 0.3.6)
70
+ hike (1.2.3)
71
+ hirb (0.7.1)
72
+ i18n (0.6.9)
73
+ jazz_hands (0.5.2)
74
+ awesome_print (~> 1.2)
75
+ coolline (>= 0.4.2)
76
+ hirb (~> 0.7.1)
77
+ pry (~> 0.9.12)
78
+ pry-debugger (~> 0.2.2)
79
+ pry-doc (~> 0.4.6)
80
+ pry-git (~> 0.2.3)
81
+ pry-rails (~> 0.3.2)
82
+ pry-remote (>= 0.1.7)
83
+ pry-stack_explorer (~> 0.4.9)
84
+ railties (>= 3.0, < 5.0)
85
+ mail (2.5.4)
86
+ mime-types (~> 1.16)
87
+ treetop (~> 1.4.8)
88
+ method_source (0.8.2)
89
+ mime-types (1.25.1)
90
+ mini_portile (0.5.2)
91
+ minitest (4.7.5)
92
+ multi_json (1.8.4)
93
+ nokogiri (1.6.1)
94
+ mini_portile (~> 0.5.0)
95
+ polyglot (0.3.4)
96
+ posix-spawn (0.3.8)
97
+ pry (0.9.12.6)
98
+ coderay (~> 1.0)
99
+ method_source (~> 0.8)
100
+ slop (~> 3.4)
101
+ pry-debugger (0.2.2)
102
+ debugger (~> 1.3)
103
+ pry (~> 0.9.10)
104
+ pry-doc (0.4.6)
105
+ pry (>= 0.9)
106
+ yard (>= 0.8)
107
+ pry-git (0.2.3)
108
+ diffy
109
+ grit
110
+ pry (>= 0.9.8)
111
+ pry-rails (0.3.2)
112
+ pry (>= 0.9.10)
113
+ pry-remote (0.1.8)
114
+ pry (~> 0.9)
115
+ slop (~> 3.0)
116
+ pry-stack_explorer (0.4.9.1)
117
+ binding_of_caller (>= 0.7)
118
+ pry (>= 0.9.11)
119
+ rack (1.5.2)
120
+ rack-test (0.6.2)
121
+ rack (>= 1.0)
122
+ rails (4.0.3)
123
+ actionmailer (= 4.0.3)
124
+ actionpack (= 4.0.3)
125
+ activerecord (= 4.0.3)
126
+ activesupport (= 4.0.3)
127
+ bundler (>= 1.3.0, < 2.0)
128
+ railties (= 4.0.3)
129
+ sprockets-rails (~> 2.0.0)
130
+ railties (4.0.3)
131
+ actionpack (= 4.0.3)
132
+ activesupport (= 4.0.3)
133
+ rake (>= 0.8.7)
134
+ thor (>= 0.18.1, < 2.0)
135
+ rake (10.1.1)
136
+ rspec-core (2.14.7)
137
+ rspec-expectations (2.14.5)
138
+ diff-lcs (>= 1.1.3, < 2.0)
139
+ rspec-mocks (2.14.6)
140
+ rspec-rails (2.14.1)
141
+ actionpack (>= 3.0)
142
+ activemodel (>= 3.0)
143
+ activesupport (>= 3.0)
144
+ railties (>= 3.0)
145
+ rspec-core (~> 2.14.0)
146
+ rspec-expectations (~> 2.14.0)
147
+ rspec-mocks (~> 2.14.0)
148
+ slop (3.4.7)
149
+ sprockets (2.11.0)
150
+ hike (~> 1.2)
151
+ multi_json (~> 1.0)
152
+ rack (~> 1.0)
153
+ tilt (~> 1.1, != 1.3.0)
154
+ sprockets-rails (2.0.1)
155
+ actionpack (>= 3.0)
156
+ activesupport (>= 3.0)
157
+ sprockets (~> 2.8)
158
+ thor (0.18.1)
159
+ thread_safe (0.1.3)
160
+ atomic
161
+ tilt (1.4.1)
162
+ treetop (1.4.15)
163
+ polyglot
164
+ polyglot (>= 0.3.1)
165
+ tzinfo (0.3.38)
166
+ xpath (2.0.0)
167
+ nokogiri (~> 1.3)
168
+ yard (0.8.7.3)
169
+
170
+ PLATFORMS
171
+ ruby
172
+
173
+ DEPENDENCIES
174
+ capybara
175
+ headhunter!
176
+ jazz_hands
177
+ rails
178
+ rspec-rails