Feature #11963
closedAdd a simple static web server to `ruby`
Description
Introduction¶
"Good artists copy, great artists steal." - Pablo Picasso
python -m SimpleHTTPServer
starts a static webserver in the local directory. It is
helpful in many surprising ways. Ruby lacks a similar idiom. I advocate that
Ruby offer something similar.
State of the Art¶
A cursory search shows that this question has been asked a number of times (e.g. StackOverflow, blog posts) and
it seems we have, as a community, yet to agree on a simple, clean standard. I
believe the best and shortest chant is the following:
ruby -run -e httpd . -p <PORT>
I believe this chant is attributable to Aaron Patterson.
I find this invocation unsatisfying. First, the use of un.rb
is, admittedly, quite
clever, but therefore also somewhat hard to reason about. IF we're going to
require users to be able to reason about -r 'un'
, let's ease their burdens and
create a magic flag for ruby
to run an in-place static server.
Suggested Semantics¶
ruby -simplewebserver [-p port]
Do Not Use -m¶
-m
suggests module or something similar and I don't want to confuse our
HONORING Python by inappropriately copying their module semantics
Conclusion¶
At the very least, if this request is denied I'd like to have in the searchable
archives why Ruby doesn't support this capability provided by its "cousin,"
Python.
Updated by normalperson (Eric Wong) about 8 years ago
sgharms@stevengharms.com wrote:
"Good artists copy, great artists steal." - Pablo Picasso
I believe the best and shortest chant is the following:
ruby -run -e httpd . -p <PORT>
If we steal from Python, we may also steal the (paraphrased)
"there should be one and one obvious way to do it"
philosophy, right? :)
I find this invocation unsatisfying. First, the use of
un.rb
is, admittedly, quite
clever, but therefore also somewhat hard to reason about. IF we're going to
require users to be able to reason about-r 'un'
, let's ease their burdens and
create a magic flag forruby
to run an in-place static server.
I disagree, as I consider the -r
an educational gateway to learning
to require other libraries.
One problem with introducing a another (not necessarily improved) way to
do things is people will see the new documentation online, attempt to do
things the new way on an older Ruby, fail, and get frustrated. This
would be the case for at least 2-5 years until the old Rubies age out;
and maybe longer with extended distro support.
Do Not Use -m¶
-m
suggests module or something similar and I don't want to confuse our
HONORING Python by inappropriately copying their module semantics
Again I disagree with this. To me it's an educational gateway.
At the very least, if this request is denied I'd like to have in the searchable
archives why Ruby doesn't support this capability provided by its "cousin,"
Python.
Only speaking for myself; not the rest of ruby-core.
Unsubscribe: mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe
http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core
Updated by duerst (Martin Dürst) about 8 years ago
I guess somebody providing code/a patch would go a long way to moving this issue forward. The invocation syntax is probably a detail that will solve itself somehow when we have an implementation.
As to introducing another way to do things, of course we shouldn't introduce it if it isn't an improvement. But if we are too afraid of people on old versions being frustrated, we might never be able to move forward on any improvement to Ruby.
Updated by ulysse (Ulysse Buonomo) almost 3 years ago
I guess this one can be closed, I've just ran my first ruby -run -e httpd . -p 8080
using ruby 2.7!
Updated by jeremyevans0 (Jeremy Evans) almost 3 years ago
- Status changed from Open to Closed