vcr 2.9.3 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (109) hide show
  1. checksums.yaml +4 -4
  2. data/features/about_these_examples.md +1 -1
  3. data/features/cassettes/automatic_re_recording.feature +4 -4
  4. data/features/cassettes/decompress.feature +3 -3
  5. data/features/cassettes/exclusive.feature +11 -8
  6. data/features/cassettes/format.feature +135 -32
  7. data/features/cassettes/naming.feature +2 -2
  8. data/features/cassettes/no_cassette.feature +4 -4
  9. data/features/configuration/allow_http_connections_when_no_cassette.feature +6 -3
  10. data/features/configuration/cassette_library_dir.feature +2 -2
  11. data/features/configuration/debug_logging.feature +15 -8
  12. data/features/configuration/filter_sensitive_data.feature +8 -7
  13. data/features/configuration/hook_into.feature +8 -8
  14. data/features/configuration/ignore_request.feature +13 -14
  15. data/features/configuration/preserve_exact_body_bytes.feature +5 -5
  16. data/features/configuration/uri_parser.feature +15 -11
  17. data/features/hooks/after_http_request.feature +5 -4
  18. data/features/hooks/around_http_request.feature +3 -3
  19. data/features/hooks/before_http_request.feature +4 -2
  20. data/features/hooks/before_playback.feature +14 -15
  21. data/features/hooks/before_record.feature +10 -10
  22. data/features/http_libraries/em_http_request.feature +6 -3
  23. data/features/http_libraries/net_http.feature +15 -5
  24. data/features/middleware/faraday.feature +2 -2
  25. data/features/middleware/rack.feature +4 -4
  26. data/features/record_modes/all.feature +5 -5
  27. data/features/record_modes/new_episodes.feature +2 -2
  28. data/features/record_modes/once.feature +3 -3
  29. data/features/step_definitions/cli_steps.rb +37 -39
  30. data/features/support/env.rb +29 -26
  31. data/features/support/http_lib_filters.rb +0 -7
  32. data/features/test_frameworks/cucumber.feature +11 -10
  33. data/features/test_frameworks/rspec_macro.feature +5 -30
  34. data/features/test_frameworks/rspec_metadata.feature +9 -8
  35. data/features/test_frameworks/test_unit.feature +5 -2
  36. data/lib/vcr.rb +86 -14
  37. data/lib/vcr/cassette.rb +4 -2
  38. data/lib/vcr/cassette/serializers.rb +10 -8
  39. data/lib/vcr/cassette/serializers/compressed.rb +45 -0
  40. data/lib/vcr/configuration.rb +38 -17
  41. data/lib/vcr/library_hooks/fakeweb.rb +1 -0
  42. data/lib/vcr/library_hooks/faraday.rb +5 -1
  43. data/lib/vcr/middleware/faraday.rb +13 -9
  44. data/lib/vcr/test_frameworks/cucumber.rb +39 -5
  45. data/lib/vcr/version.rb +1 -1
  46. data/spec/acceptance/concurrency_spec.rb +51 -0
  47. data/spec/{vcr → lib/vcr}/cassette/erb_renderer_spec.rb +0 -0
  48. data/spec/{vcr → lib/vcr}/cassette/http_interaction_list_spec.rb +0 -0
  49. data/spec/{vcr → lib/vcr}/cassette/migrator_spec.rb +10 -9
  50. data/spec/{vcr → lib/vcr}/cassette/persisters/file_system_spec.rb +0 -0
  51. data/spec/{vcr → lib/vcr}/cassette/persisters_spec.rb +0 -0
  52. data/spec/{vcr → lib/vcr}/cassette/serializers_spec.rb +8 -2
  53. data/spec/{vcr → lib/vcr}/cassette_spec.rb +0 -0
  54. data/spec/{vcr → lib/vcr}/configuration_spec.rb +0 -0
  55. data/spec/{vcr → lib/vcr}/deprecations_spec.rb +0 -0
  56. data/spec/{vcr → lib/vcr}/errors_spec.rb +0 -0
  57. data/spec/{vcr → lib/vcr}/extensions/net_http_response_spec.rb +0 -0
  58. data/spec/{vcr → lib/vcr}/library_hooks/excon_spec.rb +0 -0
  59. data/spec/{vcr → lib/vcr}/library_hooks/fakeweb_spec.rb +0 -0
  60. data/spec/{vcr → lib/vcr}/library_hooks/faraday_spec.rb +0 -0
  61. data/spec/{vcr → lib/vcr}/library_hooks/typhoeus_0.4_spec.rb +0 -0
  62. data/spec/{vcr → lib/vcr}/library_hooks/typhoeus_spec.rb +0 -0
  63. data/spec/{vcr → lib/vcr}/library_hooks/webmock_spec.rb +2 -2
  64. data/spec/{vcr → lib/vcr}/library_hooks_spec.rb +0 -0
  65. data/spec/{vcr → lib/vcr}/middleware/faraday_spec.rb +0 -0
  66. data/spec/{vcr → lib/vcr}/middleware/rack_spec.rb +0 -0
  67. data/spec/{vcr → lib/vcr}/request_ignorer_spec.rb +0 -0
  68. data/spec/{vcr → lib/vcr}/request_matcher_registry_spec.rb +0 -0
  69. data/spec/{vcr → lib/vcr}/structs_spec.rb +0 -0
  70. data/spec/{vcr → lib/vcr}/test_frameworks/cucumber_spec.rb +0 -0
  71. data/spec/{vcr → lib/vcr}/test_frameworks/rspec_spec.rb +0 -0
  72. data/spec/{vcr → lib/vcr}/util/hooks_spec.rb +0 -0
  73. data/spec/{vcr → lib/vcr}/util/internet_connection_spec.rb +0 -0
  74. data/spec/{vcr → lib/vcr}/util/version_checker_spec.rb +0 -0
  75. data/spec/{vcr → lib/vcr}/version_spec.rb +0 -0
  76. data/spec/{vcr_spec.rb → lib/vcr_spec.rb} +2 -2
  77. data/spec/spec_helper.rb +21 -50
  78. data/spec/support/cucumber_helpers.rb +39 -0
  79. data/spec/support/limited_uri.rb +1 -11
  80. data/spec/support/shared_example_groups/hook_into_http_library.rb +2 -1
  81. data/spec/support/vcr_localhost_server.rb +2 -3
  82. metadata +475 -123
  83. data/.gemtest +0 -0
  84. data/.gitignore +0 -52
  85. data/.gitmodules +0 -3
  86. data/.rspec +0 -2
  87. data/.travis.yml +0 -27
  88. data/.yardopts +0 -9
  89. data/Appraisals +0 -5
  90. data/CHANGELOG.md +0 -987
  91. data/CONTRIBUTING.md +0 -26
  92. data/Gemfile +0 -54
  93. data/Gemfile.lock +0 -159
  94. data/LICENSE +0 -20
  95. data/README.md +0 -243
  96. data/Rakefile +0 -197
  97. data/Upgrade.md +0 -289
  98. data/benchmarks/http_stubbing_libraries.rb +0 -59
  99. data/benchmarks/null_logging.rb +0 -62
  100. data/cucumber.yml +0 -16
  101. data/features/.nav +0 -62
  102. data/features/cassettes/persistence.feature +0 -63
  103. data/features/support/vcr_cucumber_helpers.rb +0 -46
  104. data/gemfiles/typhoeus_old.gemfile +0 -34
  105. data/gemfiles/typhoeus_old.gemfile.lock +0 -133
  106. data/script/ci.sh +0 -27
  107. data/spec/capture_warnings.rb +0 -73
  108. data/spec/quality_spec.rb +0 -51
  109. data/vcr.gemspec +0 -23
@@ -1,59 +0,0 @@
1
- require 'rubygems'
2
- require 'benchmark'
3
- require 'net/http'
4
-
5
- def http_request
6
- res = Net::HTTP.get_response(URI.parse('http://example.com'))
7
- raise "Body should be 'Hello'" unless res.body == 'Hello'
8
- end
9
-
10
- def fakeweb
11
- FakeWeb.register_uri(:get, 'http://example.com', :body => 'Hello')
12
- yield
13
- ensure
14
- FakeWeb.clean_registry
15
- end
16
-
17
- def webmock
18
- WebMock.stub_request(:get, 'http://example.com').to_return(:body => 'Hello')
19
- yield
20
- ensure
21
- WebMock.reset!
22
- end
23
-
24
- def perform_benchmark(name)
25
- puts "\n\nBenchmarking #{name}:"
26
- Benchmark.benchmark do |b|
27
- %w(webmock fakeweb).each do |type|
28
- b.report(type) do
29
- # this is a bit convoluted, but we want to ensure that each benchmark runs without the other library loaded,
30
- # so we fork off a sub-process before requiring the libraries.
31
- Process.fork do
32
- require type
33
- yield type
34
- end
35
- Process.wait
36
- end
37
- end
38
- end
39
- end
40
-
41
- n = 5000
42
- perform_benchmark("Single setup/teardown") do |type|
43
- send(type) { n.times { http_request } }
44
- end
45
-
46
- perform_benchmark("Setup/teardown for each http request") do |type|
47
- n.times { send(type) { http_request } }
48
- end
49
-
50
- # Output on my machine:
51
- #
52
- # Benchmarking Single setup/teardown:
53
- # webmock 0.000000 0.000000 6.950000 ( 6.981525)
54
- # fakeweb 0.000000 0.010000 1.750000 ( 1.740679)
55
- #
56
- #
57
- # Benchmarking Setup/teardown for each http request:
58
- # webmock 0.000000 0.000000 7.970000 ( 7.981383)
59
- # fakeweb 0.000000 0.000000 2.210000 ( 2.203478)
@@ -1,62 +0,0 @@
1
- $LOAD_PATH.unshift "./lib"
2
- require 'vcr'
3
- require 'yaml'
4
- require 'open-uri'
5
- require 'benchmark'
6
-
7
- VCR.configure do |vcr|
8
- vcr.cassette_library_dir = './tmp'
9
- vcr.hook_into :webmock
10
- end
11
-
12
- def prepare_cassette
13
- interactions = 1.upto(100).map do |i|
14
- VCR::HTTPInteraction.new(
15
- VCR::Request.new(:get, "http://foo.com/#{i}", "", {}),
16
- VCR::Response.new(
17
- VCR::ResponseStatus.new(200, "OK"),
18
- {}, "Response #{i}", "1.1"
19
- ),
20
- Time.now
21
- ).to_hash
22
- end
23
-
24
- hash = { "http_interactions" => interactions, "recorded_with" => "VCR #{VCR.version}" }
25
- VCR.cassette_persisters[:file_system]["logging.yml"] = YAML.dump(hash)
26
- end
27
-
28
- prepare_cassette
29
-
30
- puts "Ruby #{RUBY_DESCRIPTION}"
31
-
32
- 3.times do
33
- puts Benchmark.measure {
34
- 100.downto(50) do |i|
35
- VCR.use_cassette("logging", :record => :none) do
36
- open("http://foo.com/#{i}")
37
- end
38
- end
39
- }
40
- end
41
-
42
- # Before optimizing null logging:
43
- #
44
- # Ruby ruby 1.9.3p448 (2013-06-27 revision 41675) [x86_64-darwin12.4.0]
45
- # 1.510000 0.010000 1.520000 ( 1.523553)
46
- # 1.500000 0.010000 1.510000 ( 1.510036)
47
- # 1.500000 0.010000 1.510000 ( 1.507076)
48
- #
49
- # After applying the patch from #311 (and forcing `debug_logger` to `nil`:
50
- #
51
- # Ruby ruby 1.9.3p448 (2013-06-27 revision 41675) [x86_64-darwin12.4.0]
52
- # 1.480000 0.020000 1.500000 ( 1.500136)
53
- # 1.390000 0.000000 1.390000 ( 1.395503)
54
- # 1.400000 0.010000 1.410000 ( 1.403931)
55
- #
56
- # After applying my alternate fix:
57
- #
58
- # Ruby ruby 1.9.3p448 (2013-06-27 revision 41675) [x86_64-darwin12.4.0]
59
- # 1.400000 0.010000 1.410000 ( 1.410103)
60
- # 1.380000 0.010000 1.390000 ( 1.388467)
61
- # 1.360000 0.010000 1.370000 ( 1.364418)
62
-
@@ -1,16 +0,0 @@
1
- <%
2
- base_opts = '--require features/step_definitions --require features/support'
3
- std_opts = "--format progress --strict"
4
- rerun = File.file?('rerun.txt') ? IO.read('rerun.txt') : ""
5
- rerun_opts = rerun.to_s.strip.empty? ? "--format progress features" : "--format #{ENV['CUCUMBER_FORMAT'] || 'pretty'} #{rerun}"
6
-
7
- exclusions = []
8
- exclusions << "--tags ~@exclude-#{RUBY_VERSION.split('.').first(2).join}"
9
- exclusions << "--tags ~@exclude-#{RUBY_VERSION}p#{RUBY_PATCHLEVEL}"
10
- exclusions << "--tags ~@exclude-#{RUBY_ENGINE}" if defined?(RUBY_ENGINE)
11
- exclusions = exclusions.join(' ')
12
- %>
13
- default: <%= base_opts %> <%= std_opts %> --tags ~@wip <%= exclusions %> features
14
- wip: <%= base_opts %> --tags @wip <%= exclusions %> features
15
- rerun: <%= base_opts %> <%= rerun_opts %> --format rerun --out rerun.txt --strict --tags ~@wip <%= exclusions %>
16
-
@@ -1,62 +0,0 @@
1
- - getting_started.md (Getting Started)
2
- - Upgrade.md (Upgrade)
3
- - CHANGELOG.md (Changelog)
4
- - about_these_examples.md (About These Examples)
5
- - LICENSE.md (License)
6
- - CONTRIBUTING.md (Contributing)
7
- - cassettes:
8
- - format.feature
9
- - naming.feature
10
- - no_cassette.feature
11
- - dynamic_erb.feature
12
- - automatic_re_recording.feature
13
- - exclusive.feature
14
- - update_content_length_header.feature
15
- - decompress.feature
16
- - persistence.feature
17
- - allow_unused_http_interactions.feature
18
- - record_modes:
19
- - once.feature
20
- - new_episodes.feature
21
- - none.feature
22
- - all.feature
23
- - configuration:
24
- - cassette_library_dir.feature
25
- - hook_into.feature
26
- - default_cassette_options.feature
27
- - ignore_request.feature
28
- - filter_sensitive_data.feature
29
- - allow_http_connections_when_no_cassette.feature
30
- - debug_logging.feature
31
- - preserve_exact_body_bytes.feature
32
- - uri_parser.feature
33
- - query_parser.feature
34
- - hooks:
35
- - before_record.feature
36
- - before_playback.feature
37
- - before_http_request.feature
38
- - after_http_request.feature
39
- - around_http_request.feature
40
- - request_matching:
41
- - method.feature
42
- - uri.feature
43
- - host.feature
44
- - path.feature
45
- - query.feature
46
- - body.feature
47
- - headers.feature
48
- - identical_request_sequence.feature
49
- - custom_matcher.feature
50
- - uri_without_param.feature
51
- - playback_repeats.feature
52
- - test_frameworks:
53
- - test_unit.feature
54
- - rspec_metadata.feature
55
- - rspec_macro.feature
56
- - cucumber.feature
57
- - middleware:
58
- - rack.feature
59
- - faraday.feature
60
- - http_libraries:
61
- - net_http.feature
62
- - em_http_request.feature
@@ -1,63 +0,0 @@
1
- Feature: Cassette Persistence
2
-
3
- By default, cassettes will be persisted to the file system. However, you
4
- can easily configure VCR to persist the cassettes to a database, a key-value
5
- store, or anywhere you like.
6
-
7
- To use something besides the file system, you must provide an object
8
- that provides a hash-like interface:
9
-
10
- * `persister[name]` should return the content previously persisted for the
11
- given cassette name.
12
- * `persister[name] = content` should persist the content for the
13
- given cassette name.
14
-
15
- Register this object with VCR, and then you can configure all cassettes
16
- to use it (using the `default_cassette_options`) or just some cassettes
17
- to use it (by passing it as an option to individual cassettes).
18
-
19
- Scenario: Persist cassettes in Redis
20
- Given the redis DB has no data
21
- And a file named "use_redis.rb" with:
22
- """ruby
23
- if ARGV.include?('--with-server')
24
- start_sinatra_app(:port => 7777) do
25
- get('/') { "Hello" }
26
- end
27
- end
28
-
29
- require 'redis'
30
-
31
- class RedisCassettePersister
32
- def initialize(redis)
33
- @redis = redis
34
- end
35
-
36
- def [](name)
37
- @redis.get(name)
38
- end
39
-
40
- def []=(name, content)
41
- @redis.set(name, content)
42
- end
43
- end
44
-
45
- require 'vcr'
46
-
47
- VCR.configure do |c|
48
- c.hook_into :webmock
49
- c.cassette_persisters[:redis] = RedisCassettePersister.new(Redis.connect)
50
- c.default_cassette_options = { :persist_with => :redis }
51
- end
52
-
53
- VCR.use_cassette("redis_example") do
54
- response = Net::HTTP.get_response('localhost', '/', 7777)
55
- puts "Response: #{response.body}"
56
- end
57
- """
58
- When I run `ruby use_redis.rb --with-server`
59
- Then it should pass with "Hello"
60
- And the value stored at the redis key "redis_example.yml" should include "Hello"
61
-
62
- When I run `ruby use_redis.rb`
63
- Then it should pass with "Hello"
@@ -1,46 +0,0 @@
1
- require 'date'
2
-
3
- # This file gets symlinked into the tmp/aruba directory before
4
- # each scenario so that it is available to be required in them.
5
- $LOAD_PATH << '../../spec' unless $LOAD_PATH.include?('../../spec')
6
- $LOAD_PATH.unshift '../../lib' unless $LOAD_PATH.include?('../../lib')
7
-
8
- running_under_aruba = File.expand_path('.').include?('aruba')
9
- if running_under_aruba
10
- require 'support/fixnum_extension'
11
- require 'vcr/util/internet_connection'
12
-
13
- # pretend we're always on the internet (so that we don't have an
14
- # internet connection dependency for our cukes)
15
- VCR::InternetConnection.class_eval do
16
- def available?; true; end
17
- end
18
- end
19
-
20
- if ENV['DATE_STRING']
21
- require 'timecop'
22
- Timecop.travel(Date.parse(ENV['DATE_STRING']))
23
- end
24
-
25
- def include_http_adapter_for(lib)
26
- require (lib =~ /faraday/ ? 'faraday' : lib)
27
- require 'typhoeus' if lib.include?('typhoeus') # for faraday-typhoeus
28
- require 'support/http_library_adapters'
29
- include HTTP_LIBRARY_ADAPTERS[lib]
30
- end
31
-
32
- def response_body_for(*args)
33
- get_body_string(make_http_request(*args))
34
- end
35
-
36
- def start_sinatra_app(options, &block)
37
- raise ArgumentError.new("You must pass a port") unless options[:port]
38
-
39
- require 'sinatra'
40
- require 'support/vcr_localhost_server'
41
- klass = Class.new(Sinatra::Base)
42
- klass.disable :protection
43
- klass.class_eval(&block)
44
-
45
- VCR::LocalhostServer.new(klass.new, options[:port])
46
- end
@@ -1,34 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "appraisal"
6
- gem "jruby-openssl", :platforms=>:jruby
7
- gem "yard"
8
- gem "relish", "~> 0.6"
9
- gem "redcarpet", "~> 1.17.2", :platforms=>:ruby
10
- gem "github-markup"
11
- gem "bundler"
12
- gem "rake", ">= 0.9.2"
13
- gem "cucumber", ">= 1.1.4"
14
- gem "aruba", ">= 0.5"
15
- gem "rspec", ">= 3.0.0.beta1"
16
- gem "fakeweb", ">= 1.3.0"
17
- gem "faraday", ">= 0.8"
18
- gem "httpclient", ">= 2.2"
19
- gem "excon", ">= 0.22"
20
- gem "timecop", "0.6.1"
21
- gem "rack", ">= 1.3.6"
22
- gem "sinatra", ">= 1.3.2"
23
- gem "multi_json", ">= 1.0.3"
24
- gem "json", ">= 1.6.5"
25
- gem "simplecov", ">= 0.5.3"
26
- gem "redis", ">= 2.2.2"
27
- gem "patron", ">= 0.4.15", :platform=>:ruby
28
- gem "em-http-request", ">= 1.0.2", :platform=>:ruby
29
- gem "curb", ">= 0.8.0", :platform=>:ruby
30
- gem "yajl-ruby", ">= 1.1.0", :platform=>:ruby
31
- gem "typhoeus", "~> 0.4.2"
32
- gem "webmock", "1.8.11"
33
-
34
- gemspec :path=>"../"
@@ -1,133 +0,0 @@
1
- PATH
2
- remote: /Users/myron/code/vcr
3
- specs:
4
- vcr (2.7.0)
5
-
6
- GEM
7
- remote: https://rubygems.org/
8
- specs:
9
- addressable (2.3.5)
10
- appraisal (0.5.2)
11
- bundler
12
- rake
13
- archive-tar-minitar (0.5.2)
14
- aruba (0.5.3)
15
- childprocess (>= 0.3.6)
16
- cucumber (>= 1.1.1)
17
- rspec-expectations (>= 2.7.0)
18
- builder (3.2.2)
19
- childprocess (0.3.9)
20
- ffi (~> 1.0, >= 1.0.11)
21
- cookiejar (0.3.0)
22
- crack (0.4.1)
23
- safe_yaml (~> 0.9.0)
24
- cucumber (1.3.10)
25
- builder (>= 2.1.2)
26
- diff-lcs (>= 1.1.3)
27
- gherkin (~> 2.12)
28
- multi_json (>= 1.7.5, < 2.0)
29
- multi_test (>= 0.0.2)
30
- curb (0.8.5)
31
- diff-lcs (1.2.5)
32
- docile (1.1.0)
33
- em-http-request (1.1.1)
34
- addressable (>= 2.3.4)
35
- cookiejar
36
- em-socksify (>= 0.3)
37
- eventmachine (>= 1.0.3)
38
- http_parser.rb (>= 0.6.0.beta.2)
39
- em-socksify (0.3.0)
40
- eventmachine (>= 1.0.0.beta.4)
41
- eventmachine (1.0.3)
42
- excon (0.29.0)
43
- fakeweb (1.3.0)
44
- faraday (0.8.8)
45
- multipart-post (~> 1.2.0)
46
- ffi (1.9.3)
47
- gherkin (2.12.2)
48
- multi_json (~> 1.3)
49
- github-markup (0.7.5)
50
- http_parser.rb (0.6.0.beta.2)
51
- httpclient (2.3.4.1)
52
- json (1.8.1)
53
- mime-types (1.25)
54
- multi_json (1.8.2)
55
- multi_test (0.0.2)
56
- multipart-post (1.2.0)
57
- patron (0.4.18)
58
- rack (1.5.2)
59
- rack-protection (1.5.1)
60
- rack
61
- rake (10.1.0)
62
- redcarpet (1.17.2)
63
- redis (3.0.6)
64
- relish (0.7)
65
- archive-tar-minitar (>= 0.5.2)
66
- json (>= 1.4.6)
67
- rest-client (>= 1.6.1)
68
- rest-client (1.6.7)
69
- mime-types (>= 1.16)
70
- rspec (3.0.0.beta1)
71
- rspec-core (= 3.0.0.beta1)
72
- rspec-expectations (= 3.0.0.beta1)
73
- rspec-mocks (= 3.0.0.beta1)
74
- rspec-core (3.0.0.beta1)
75
- rspec-expectations (3.0.0.beta1)
76
- diff-lcs (>= 1.1.3, < 2.0)
77
- rspec-support (= 3.0.0.beta1)
78
- rspec-mocks (3.0.0.beta1)
79
- rspec-support (3.0.0.beta1)
80
- safe_yaml (0.9.7)
81
- simplecov (0.8.2)
82
- docile (~> 1.1.0)
83
- multi_json
84
- simplecov-html (~> 0.8.0)
85
- simplecov-html (0.8.0)
86
- sinatra (1.4.4)
87
- rack (~> 1.4)
88
- rack-protection (~> 1.4)
89
- tilt (~> 1.3, >= 1.3.4)
90
- tilt (1.4.1)
91
- timecop (0.6.1)
92
- typhoeus (0.4.2)
93
- ffi (~> 1.0)
94
- mime-types (~> 1.18)
95
- webmock (1.8.11)
96
- addressable (>= 2.2.7)
97
- crack (>= 0.1.7)
98
- yajl-ruby (1.1.0)
99
- yard (0.8.7.3)
100
-
101
- PLATFORMS
102
- ruby
103
-
104
- DEPENDENCIES
105
- appraisal
106
- aruba (>= 0.5)
107
- bundler
108
- cucumber (>= 1.1.4)
109
- curb (>= 0.8.0)
110
- em-http-request (>= 1.0.2)
111
- excon (>= 0.22)
112
- fakeweb (>= 1.3.0)
113
- faraday (>= 0.8)
114
- github-markup
115
- httpclient (>= 2.2)
116
- jruby-openssl
117
- json (>= 1.6.5)
118
- multi_json (>= 1.0.3)
119
- patron (>= 0.4.15)
120
- rack (>= 1.3.6)
121
- rake (>= 0.9.2)
122
- redcarpet (~> 1.17.2)
123
- redis (>= 2.2.2)
124
- relish (~> 0.6)
125
- rspec (>= 3.0.0.beta1)
126
- simplecov (>= 0.5.3)
127
- sinatra (>= 1.3.2)
128
- timecop (= 0.6.1)
129
- typhoeus (~> 0.4.2)
130
- vcr!
131
- webmock (= 1.8.11)
132
- yajl-ruby (>= 1.1.0)
133
- yard