Comments (9)
+1. Also bumped into it.
As a workaround (somewhat weird though), it is possible to pass env hash (with REQUEST_URI in it) as third argument to get/post/put/etc.
I'd also suggest that the lack of REQUEST_URI support (or any other standard rack feature) should be documented. Just to reduce global wtfs per minute.
from rack-test.
I just ran into this issue, too.
from rack-test.
Hmm... not sure about this one. From what I can tell, REQUEST_URI is not part of the Rack spec. (http://rack.rubyforge.org/doc/files/SPEC.html)
Can you guys give specific examples of what you ran into?
from rack-test.
I know it's been less than a month since I commented about it, but I can't remember the details of the issue. I wonder now, though, if what I was really running into was the Rails 3 move from using REQUEST_URI to PATH_INFO and I wrongly blamed rack-test.
If I can dig up a simple repro case, I'll post it.
from rack-test.
Non standard - my bad. But it is still there, in request.env ! Which is how I am guessing myself (and possibly others) ended up relying on it.
Perhaps, a clarification line about rack-test keeping strictly to the spec (as opposed to rack itself) could save some developers some time.
from rack-test.
Hi Artem,
Yes, my understanding is that it is often present but can vary by web server. Therefore, it's unsafe and PATH_INFO and SCRIPT_NAME should be preferred instead.
As for the clarification, a quick search of the latest Rack source shows only one reference to env["REQUREST_URI"] which is in the SCGI handler (which, I imagine, is barely used), so it seems as though Rack doesn't use it itself anymore.
-Bryan
from rack-test.
@brynary Nevertheless, REQUEST_URI is what is used by ActionController::Request
in Rails 2. For those of us that would like to test our rails 2.x apps, this would still be a very welcome addition.
https://github.com/rails/rails/blob/v2.3.14/actionpack/lib/action_controller/request.rb#L367-371
I'd be happy to submit a PR if you're willing to accept it.
from rack-test.
For a framework that elects to use REQUEST_URI (e.g. Rails 2) it would be appropriate for the framework to handle ensuring REQUEST_URI gets set. Rack-Test intends to be extensible in this way -- if there's a way that could be easier, let me know.
Therefore, I'd recommend either a patch or monkey-patch to Rails 2.
from rack-test.
I've been bitten by this for 2 days. See this gist for how things go horribly wrong in things like RSpec request specs:
https://gist.github.com/f361516ee8686637ee23
from rack-test.
Related Issues (20)
- Issues with hidden field + file field HOT 13
- Encoding error with binary files HOT 13
- uploaded_file.rb#append_to: incompatible character encodings: UTF-8 and ASCII-8BIT HOT 3
- clarify that minitest is used for testing HOT 1
- utils.rb#build_primitive_part: incompatible character encodings: UTF-8 and ASCII-8BIT HOT 4
- Π‘an`t pass cookies HOT 1
- Setting original_filename when the content is not StringIO HOT 4
- build_primitive_part: undefined method `b' while testing docx HOT 4
- ActiveSupport::MessageVerifier::InvalidSignature error while uploading file in RSpec Tests HOT 2
- Rack::Test::UploadedFile#test_0007_finalizes on garbage collection fails on sparc HOT 3
- Resolving dependencies for published CVE's HOT 1
- Cannot set CONTENT_TYPE at Rack::MockRequest.env_for HOT 1
- Request#[] is deprecated and will be removed in a future version of Rack. Please use request.params[] instead HOT 2
- something amiss with release tags HOT 3
- Preferred way to set :domain option on cookie jar while setting a cookie using []=? HOT 2
- Rack >= 2.2.2 tests skip `Rack::Events#on_finish` HOT 3
- Is `Rack::Test::UploadedFile` supposed to be used with StringIO instead of real files? HOT 1
- Accessing Tempfile after GC of UploadedFile will cause IOError HOT 2
- Vulnerability scan shows rack-test is bringing in a vulnerable version of rack HOT 4
- Request body received as empty string in POST request (sinatra 4, rack 3) HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. πππ
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google β€οΈ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rack-test.