headhunter 0.1.7 → 0.1.8

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