sinatra-fix_951 1.0.0

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 7de5a3271eb11d6cee35247559e34b2e90523a5f
4
+ data.tar.gz: 51ff29c937fe5828d1d2af2cbbf56d8df4a2d052
5
+ SHA512:
6
+ metadata.gz: 55bdde9fffde3b2b1bf20d0eed2da96c105a94d505994b54799363aeaa608a9ec7acfda5585328a0b16c335d08573fd4e3a4d5fc78d33cd646a600784e49f976
7
+ data.tar.gz: 5046102e6ae621b2e70578ff246801c5b2bf566debd87101a699952e6d94831839449c54b7bcfd3bff770c21f64a43b0e375fa32e0b0b2131dd8bd3a7156e386
data/.gitignore ADDED
@@ -0,0 +1,13 @@
1
+ # THIS IS COPY / PASTED STRAIGHT OUT OF THE SINATRA GEMFILE:
2
+ # https://github.com/sinatra/sinatra/blob/v1.4.5/.gitignore
3
+
4
+ # please add general patterns to your global ignore list
5
+ # see https://github.com/github/gitignore#readme
6
+ .DS_STORE
7
+ *.swp
8
+ *.rbc
9
+ *.sass-cache
10
+ /pkg
11
+ /doc/api
12
+ /Gemfile.lock
13
+ *.gem
data/.travis.yml ADDED
@@ -0,0 +1,24 @@
1
+ # THIS IS COPY / PASTED STRAIGHT OUT OF THE SINATRA GEMFILE:
2
+ # https://github.com/sinatra/sinatra/blob/v1.4.5/.travis.yml
3
+ ---
4
+ rvm:
5
+ - 1.8.7
6
+ - 1.9.2
7
+ - 1.9.3
8
+ - 2.0.0
9
+ - 2.1.0
10
+ - rbx
11
+ - jruby
12
+ - jruby-head
13
+ - ruby-head
14
+ matrix:
15
+ include:
16
+ - { rvm: 1.9.3, env: rack=1.4.0 }
17
+ - { rvm: 1.8.7, env: tilt=master }
18
+ - { rvm: 1.9.3, env: rack=master }
19
+ - { rvm: 1.9.3, env: tilt=master }
20
+ allow_failures:
21
+ - env: tilt=master
22
+ - rvm: rbx
23
+ - rvm: ruby-head
24
+ - rvm: jruby-head
data/Gemfile ADDED
@@ -0,0 +1,82 @@
1
+ # THIS IS COPY / PASTED STRAIGHT OUT OF THE SINATRA GEMFILE:
2
+ # https://github.com/sinatra/sinatra/blob/v1.4.5/Gemfile
3
+
4
+ # Why use bundler?
5
+ # Well, not all development dependencies install on all rubies. Moreover, `gem
6
+ # install sinatra --development` doesn't work, as it will also try to install
7
+ # development dependencies of our dependencies, and those are not conflict free.
8
+ # So, here we are, `bundle install`.
9
+ #
10
+ # If you have issues with a gem: `bundle install --without-coffee-script`.
11
+
12
+ RUBY_ENGINE = 'ruby' unless defined? RUBY_ENGINE
13
+ source 'https://rubygems.org' unless ENV['QUICK']
14
+ gemspec
15
+
16
+ gem 'rake'
17
+ gem 'rack-test', '>= 0.5.6'
18
+ gem 'minitest', '= 5.5.1'
19
+
20
+ # Allows stuff like `tilt=1.2.2 bundle install` or `tilt=master ...`.
21
+ # Used by the CI.
22
+ github = "git://github.com/%s.git"
23
+ repos = {'tilt' => github % "rtomayko/tilt", 'rack' => github % "rack/rack"}
24
+
25
+ %w[tilt rack].each do |lib|
26
+ dep = case ENV[lib]
27
+ when 'stable', nil then nil
28
+ when /(\d+\.)+\d+/ then "~> " + ENV[lib].sub("#{lib}-", '')
29
+ else {:git => repos[lib], :branch => dep}
30
+ end
31
+ gem lib, dep
32
+ end
33
+
34
+ if RUBY_ENGINE == 'jruby'
35
+ gem 'nokogiri', '!= 1.5.0'
36
+ gem 'jruby-openssl'
37
+ gem 'trinidad'
38
+ end
39
+
40
+ if RUBY_ENGINE == "ruby" and RUBY_VERSION > '1.9.2'
41
+ gem 'less', '~> 2.0'
42
+ gem 'therubyracer'
43
+ gem 'redcarpet'
44
+ gem 'wlang', '>= 2.0.1'
45
+ gem 'bluecloth'
46
+ gem 'rdiscount'
47
+ gem 'RedCloth'
48
+ gem 'puma'
49
+ gem 'net-http-server'
50
+ gem 'yajl-ruby'
51
+ gem 'nokogiri'
52
+ gem 'thin'
53
+ gem 'slim', '~> 1.0'
54
+ gem 'coffee-script', '>= 2.0'
55
+ gem 'rdoc'
56
+ gem 'kramdown'
57
+ gem 'maruku'
58
+ gem 'creole'
59
+ gem 'wikicloth'
60
+ gem 'markaby'
61
+ gem 'radius'
62
+ gem 'asciidoctor'
63
+ gem 'liquid'
64
+ gem 'stylus'
65
+ gem 'rabl'
66
+ gem 'builder'
67
+ gem 'erubis'
68
+ gem 'haml', '>= 3.0'
69
+ gem 'sass'
70
+ end
71
+
72
+ gem 'pry'
73
+
74
+ if RUBY_ENGINE == "rbx"
75
+ gem 'json'
76
+ gem 'rubysl'
77
+ gem 'rubysl-test-unit'
78
+ end
79
+
80
+ platforms :ruby_18, :jruby do
81
+ gem 'json' unless RUBY_VERSION > '1.9' # is there a jruby but 1.8 only selector?
82
+ end
data/Rakefile ADDED
@@ -0,0 +1,7 @@
1
+ desc 'Run the tests'
2
+ task :test do
3
+ require File.expand_path('../test', __FILE__)
4
+ end
5
+
6
+ task :default => :test
7
+
data/Readme.md ADDED
@@ -0,0 +1,55 @@
1
+ [![Build Status](https://secure.travis-ci.org/JoshCheek/sinatra-fix_951.png?branch=master)](https://travis-ci.org/JoshCheek/sinatra-fix_951)
2
+
3
+ Fix for Sinatra 1.4.5's [issue #951](https://github.com/sinatra/sinatra/issues/951)
4
+ ===================================================================================
5
+
6
+ Fixes a bug that my students have been hitting while working on their projects.
7
+
8
+ How to know if you hit this
9
+ ---------------------------
10
+
11
+ You will know if you hit this, because you'll get an error message like
12
+
13
+ ```
14
+ NoMethodError: undefined method `join' for #<String:0x007f62c3e6fb90>
15
+ ```
16
+
17
+ Or maybe one like this:
18
+
19
+ ```
20
+ Unexpected error while processing request: undefined method `join' for #<String:0x007fa3d244d1f8>
21
+ ```
22
+
23
+ If you want to understand it better, the issue is [here](https://github.com/sinatra/sinatra/issues/951),
24
+ and I traced its history and explained what happened and why [here](https://github.com/sinatra/sinatra/issues/951#issuecomment-73140540).
25
+
26
+ If you want to understand why this fixes the issue,
27
+ then you'll need to learn the Ruby Object Model.
28
+ This is a class that [I teach](object-model-2httpsgithubcomjoshcheekruby-object-model),
29
+ come and learn with us at the [Turing School of Software and Design](http://turing.io/)!
30
+
31
+ Installing
32
+ ----------
33
+
34
+ If you're using Bundler, then add this to your Gemfile:
35
+
36
+ ```ruby
37
+ gem 'sinatra-fix_951', require: 'sinatra/fix_951'
38
+ ```
39
+
40
+ If you aren't using Bundler, then install it from the command-line:
41
+
42
+ ```sh
43
+ $ gem install sinatra-fix_951
44
+ ```
45
+
46
+ And then require it wherever you're currently requiring Sinatra:
47
+
48
+ ```ruby
49
+ require 'sinatra/fix_951'
50
+ ```
51
+
52
+ LICENSE
53
+ -------
54
+
55
+ MIT, to mirror [Sinatra's license](https://github.com/sinatra/sinatra/blob/master/LICENSE).
@@ -0,0 +1,3 @@
1
+ # fix the Sinatra 1.4.5 bug
2
+ require 'sinatra/show_exceptions'
3
+ Sinatra::ShowExceptions.module_eval { def pretty(*) Array super end }
@@ -0,0 +1,14 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = 'sinatra-fix_951'
3
+ s.version = '1.0.0'
4
+ s.description = "Fix bug #951 in Sinatra version 1.4.5"
5
+ s.summary = "My students at the Turing School of Software and Design have been hitting this bug for three or four months now. Finally decided to just fix it."
6
+ s.authors = ["Josh Cheek"]
7
+ s.email = "josh.cheek@gmail.com"
8
+ s.homepage = "https://github.com/JoshCheek/sinatra-fix_951"
9
+ s.license = 'MIT'
10
+ s.files = `git ls-files`.split("\n")
11
+ s.test_files = ['test.rb']
12
+
13
+ s.add_dependency 'sinatra', '= 1.4.5'
14
+ end
data/test.rb ADDED
@@ -0,0 +1,57 @@
1
+ # Initially tested with this shell script (syntax is fish, not bash)
2
+ # $ ruby -I . (find test -type f -name '*_test.rb' | awk '{ print "-r" $0 }') -e 'Sinatra::ShowExceptions.module_eval { def pretty(*) Array super end }'
3
+
4
+ # this needs to support 1.8.7, which doesn't load rubygems by default -- actually, on my Ruby, it doesn't even ship with rubygems!
5
+ require 'rubygems'
6
+
7
+ # Fake it out to require the new minitest instead of the old minitest
8
+ # The dependency wasn't formally specified, and it depends on ActiveSupport, which mandates the new Minitest,
9
+ # but it was written against the old minitest, so we're just making it think the old one was loaded,
10
+ # while forcing it to actually load the new one, and then faking the interface enough to appease the tests
11
+ gem 'minitest', '~> 5.1'
12
+ $LOADED_FEATURES << `gem which test/unit`.chomp # so it won't try to re-require files that don't exist anymore
13
+ $LOADED_FEATURES << 'test/unit.rb' # 1.8.7 version of the previous line
14
+ require 'minitest/autorun' # the new equivalent
15
+ require 'minitest/unit' # the new equivalent
16
+ Test = Minitest
17
+ module Minitest::Unit::Assertions
18
+ include Minitest::Assertions
19
+ alias assert_raise assert_raises
20
+ alias assert_not_nil assert
21
+ attr_writer :assertions
22
+ def assertions
23
+ @assertions ||= 0
24
+ end
25
+ def assert_nothing_raised(*)
26
+ yield
27
+ end
28
+ end
29
+ class Test::Unit::TestCase
30
+ include Minitest::Unit::Assertions
31
+ class << self
32
+ remove_method :inherited # this method will spam us with like a hundred deprecations for using the old interface
33
+ end
34
+ end
35
+
36
+
37
+ # relevant dirs
38
+ sinatra_gemspec = Gem::Specification.find_by_path 'sinatra'
39
+ test_path = File.join sinatra_gemspec.full_gem_path, 'test'
40
+
41
+ # fix load path :/
42
+ $LOAD_PATH.unshift sinatra_gemspec.full_gem_path
43
+
44
+ # load tests
45
+ Dir[File.join test_path, '*_test.rb'].
46
+ reject { |file| File.basename(file) == 'rdoc_test.rb' }. # rdoc_test is broken b/c assertion matches a regex against its content
47
+ each { |file| require file }
48
+
49
+ # Fix test that fails due to conflation of `respond_to?` in test helper with the one in Kernel
50
+ # Nothing seems to actually depend on this method
51
+ class Test::Unit::TestCase
52
+ remove_method :respond_to?
53
+ end
54
+
55
+ # load our code to make the tests pass
56
+ $LOAD_PATH.unshift File.expand_path('../lib', __FILE__)
57
+ require 'sinatra/fix_951'
metadata ADDED
@@ -0,0 +1,68 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sinatra-fix_951
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Josh Cheek
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-03-22 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: sinatra
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '='
18
+ - !ruby/object:Gem::Version
19
+ version: 1.4.5
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '='
25
+ - !ruby/object:Gem::Version
26
+ version: 1.4.5
27
+ description: 'Fix bug #951 in Sinatra version 1.4.5'
28
+ email: josh.cheek@gmail.com
29
+ executables: []
30
+ extensions: []
31
+ extra_rdoc_files: []
32
+ files:
33
+ - ".gitignore"
34
+ - ".travis.yml"
35
+ - Gemfile
36
+ - Rakefile
37
+ - Readme.md
38
+ - lib/sinatra/fix_951.rb
39
+ - sinatra-fix_951.gemspec
40
+ - test.rb
41
+ homepage: https://github.com/JoshCheek/sinatra-fix_951
42
+ licenses:
43
+ - MIT
44
+ metadata: {}
45
+ post_install_message:
46
+ rdoc_options: []
47
+ require_paths:
48
+ - lib
49
+ required_ruby_version: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ required_rubygems_version: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ version: '0'
59
+ requirements: []
60
+ rubyforge_project:
61
+ rubygems_version: 2.4.1
62
+ signing_key:
63
+ specification_version: 4
64
+ summary: My students at the Turing School of Software and Design have been hitting
65
+ this bug for three or four months now. Finally decided to just fix it.
66
+ test_files:
67
+ - test.rb
68
+ has_rdoc: