[#55222] [ruby-trunk - Feature #8468][Feedback] Remove $SAFE — "shugo (Shugo Maeda)" <redmine@...>
20 messages
2013/06/01
[#55230] [ruby-trunk - Feature #8468] Remove $SAFE
— "spatulasnout (B Kelly)" <billk@...>
2013/06/02
[#55252] [ruby-trunk - Feature #8468] Remove $SAFE
— "spatulasnout (B Kelly)" <billk@...>
2013/06/02
[#55276] Re: [ruby-changes:28951] zzak:r41003 (trunk): * process.c: Improve Process::exec documentation — Tanaka Akira <akr@...>
2013/5/31 zzak <[email protected]>:
9 messages
2013/06/03
[#55278] Re: [ruby-changes:28951] zzak:r41003 (trunk): * process.c: Improve Process::exec documentation
— David MacMahon <davidm@...>
2013/06/03
[#55285] Re: [ruby-changes:28951] zzak:r41003 (trunk): * process.c: Improve Process::exec documentation
— Zachary Scott <zachary@...>
2013/06/04
The original wording was:
[#55288] Re: [ruby-changes:28951] zzak:r41003 (trunk): * process.c: Improve Process::exec documentation
— David MacMahon <davidm@...>
2013/06/04
[#55289] Re: [ruby-changes:28951] zzak:r41003 (trunk): * process.c: Improve Process::exec documentation
— Zachary Scott <zachary@...>
2013/06/04
I fail to see the difference, please provide a patch to make it more clear.
[#55290] Re: [ruby-changes:28951] zzak:r41003 (trunk): * process.c: Improve Process::exec documentation
— David MacMahon <davidm@...>
2013/06/04
[#55291] Re: [ruby-changes:28951] zzak:r41003 (trunk): * process.c: Improve Process::exec documentation
— Tanaka Akira <akr@...>
2013/06/04
2013/6/4 David MacMahon <[email protected]>:
[#55297] [ruby-trunk - Bug #8486][Open] Random segmentation fault — "manudwarf (Emmanuel Bourgerie)" <manu.dwarf@...>
4 messages
2013/06/04
[#55305] [ruby-trunk - Bug #8489][Open] Tracepoint API: B_RETURN_EVENT not triggered when "next" used — deivid (David Rodríguez) <deivid.rodriguez@...>
7 messages
2013/06/04
[#55312] [ruby-trunk - Bug #8495][Open] include/ruby/win32.h assumes that __STRICT_ANSI__ isn’t set — "now (Nikolai Weibull)" <now@...>
4 messages
2013/06/05
[#55330] [ruby-trunk - Feature #8499][Assigned] Importing Hash#slice, Hash#slice!, Hash#except, and Hash#except! from ActiveSupport — "mrkn (Kenta Murata)" <muraken@...>
30 messages
2013/06/06
[#55416] CI failures: Test IO and cleanup failures — Luis Lavena <luislavena@...>
Hello,
3 messages
2013/06/10
[#55528] [ruby-trunk - Bug #8538][Open] c method not pushed into the callstack when called, but popped when returned — deivid (David Rodríguez) <deivid.rodriguez@...>
9 messages
2013/06/17
[#55530] [ruby-trunk - Feature #8539][Open] Unbundle ext/tk — "naruse (Yui NARUSE)" <naruse@...>
10 messages
2013/06/17
[#55557] [ruby-trunk - misc #8543][Open] rb_iseq_load — "alvoskov (Alexey Voskov)" <alvoskov@...>
47 messages
2013/06/19
[#65574] [ruby-trunk - Feature #8543] rb_iseq_load
— billk@...
2014/10/09
Issue #8543 has been updated by B Kelly.
[#55578] [ruby-trunk - Feature #8553][Open] Bignum#size (and Fixnum#size) — "akr (Akira Tanaka)" <akr@...>
6 messages
2013/06/21
[#55580] [CommonRuby - Feature #8556][Open] MutexedDelegator as a trivial way to make an object thread-safe — "headius (Charles Nutter)" <headius@...>
19 messages
2013/06/21
[#55590] [ruby-trunk - Bug #8560][Open] CSV, skip_lines option causes error when passing a string — "kstevens715 (Kyle Stevens)" <kstevens715@...>
5 messages
2013/06/22
[#55638] [CommonRuby - Feature #8568][Open] Introduce RbConfig value for native word size, to avoid Fixnum#size use — "headius (Charles Nutter)" <headius@...>
18 messages
2013/06/24
[#55678] [ruby-trunk - Feature #8572][Open] Fiber should be a Enumerable — "mattn (Yasuhiro Matsumoto)" <mattn.jp@...>
13 messages
2013/06/28
[#55690] [ANN] Developer Meeting - 12-07-2013 at 23:00 UTC — Aaron Patterson <tenderlove@...>
Hi everyone!
7 messages
2013/06/28
[#55699] [ruby-trunk - Feature #8579][Open] Frozen string syntax — "charliesome (Charlie Somerville)" <charliesome@...>
20 messages
2013/06/29
[ruby-core:55667] [ruby-trunk - Feature #8544] OpenURI should open 'file://' URIs
From:
"naruse (Yui NARUSE)" <naruse@...>
Date:
2013-06-27 04:47:22 UTC
List:
ruby-core #55667
Issue #8544 has been updated by naruse (Yui NARUSE).
Experimental implementation is below, it needs error handling and rdoc and tests.
diff --git a/lib/open-uri.rb b/lib/open-uri.rb
index 32f0662..21af81b 100644
--- a/lib/open-uri.rb
+++ b/lib/open-uri.rb
@@ -781,4 +781,20 @@ module URI
include OpenURI::OpenRead
end
+
+ class File
+ def buffer_open(buf, proxy, options) # :nodoc:
+ if self.host && self.host.downcase != 'localhost'
+ raise ArgumentError, "URI::File#open can't open remote file"
+ end
+ begin
+ raise if options[:mode].nil?
+ rescue
+ options[:mode] = IO::RDONLY
+ end
+ buf.instance_variable_set :@io, ::File.open(self.path, options)
+ end
+
+ include OpenURI::OpenRead
+ end
end
diff --git a/lib/uri.rb b/lib/uri.rb
index 2e136eb..19bd1d6 100644
--- a/lib/uri.rb
+++ b/lib/uri.rb
@@ -103,6 +103,7 @@ end
require 'uri/common'
require 'uri/generic'
+require 'uri/file'
require 'uri/ftp'
require 'uri/http'
require 'uri/https'
diff --git a/lib/uri/file.rb b/lib/uri/file.rb
new file mode 100644
index 0000000..b6806fb
--- /dev/null
+++ b/lib/uri/file.rb
@@ -0,0 +1,91 @@
+# = uri/file.rb
+#
+# Author:: Akira Yamada <[email protected]>
+# License:: You can redistribute it and/or modify it under the same term as Ruby.
+# Revision:: $Id$
+#
+# See URI for general documentation
+#
+
+require 'uri/generic'
+
+module URI
+
+ #
+ # File URI syntax is defined by RFCXXXX section X.X.
+ #
+ class File < Generic
+ #
+ # An Array of the available components for URI::File
+ #
+ COMPONENT = [
+ :scheme,
+ :userinfo, :host,
+ :path
+ ].freeze
+
+ #
+ # == Description
+ #
+ # Creates a new URI::File object from components, with syntax checking.
+ #
+ # The components accepted are +userinfo+, +host+, +path+ and
+ # +typecode+.
+ #
+ # The components should be provided either as an Array, or as a Hash
+ # with keys formed by preceding the component names with a colon.
+ #
+ # If an Array is used, the components must be passed in the order
+ # [userinfo, host, port, path, typecode]
+ #
+ # If the path supplied is absolute, it will be escaped in order to
+ # make it absolute in the URI. Examples:
+ #
+ # require 'uri'
+ #
+ # uri = URI::File.build(['user:password', 'ftp.example.com', nil,
+ # '/path/file.> zip', 'i'])
+ # puts uri.to_s -> ftp://user:[email protected]/%2Fpath/file.zip;type=a
+ #
+ # uri2 = URI::File.build({:host => 'ftp.example.com',
+ # :path => 'ruby/src'})
+ # puts uri2.to_s -> ftp://ftp.example.com/ruby/src
+ #
+ def self.build(args)
+
+ tmp = Util::make_components_hash(self, args)
+
+ return super(tmp)
+ end
+
+ #
+ # == Description
+ #
+ # Creates a new URI::File object from generic URL components with no
+ # syntax checking.
+ #
+ # Unlike build(), this method does not escape the path component as
+ # required by RFC1738; instead it is treated as per RFC2396.
+ #
+ # Arguments are +scheme+, +host+, +path+,
+ # +query+ and +fragment+, in that order.
+ #
+ def initialize(*arg)
+ super(*arg)
+ if @port
+ raise InvalidURIError, "a file URI can't have port"
+ end
+ if @password
+ raise InvalidURIError, "a file URI can't have password"
+ end
+ end
+
+ # Returns a String representation of the URI::File
+ def to_s
+ str = super
+
+ return str
+ end
+ end
+ @@schemes['FILE'] = File
+end
----------------------------------------
Feature #8544: OpenURI should open 'file://' URIs
https://bugs.ruby-lang.org/issues/8544#change-40172
Author: silasdavis (Silas Davis)
Status: Open
Priority: Normal
Assignee:
Category: core
Target version: next minor
The following code prints the contents of '/tmp/file.txt':
require 'open-uri'
open('/tmp/file.txt').read {|f| puts f.read }
which although useful should probably fail since a unix file path is not a URI, and therefore might shield data problems in a system
However the following should produce the same output and is a URI, but fails:
open('file:///tmp/file.txt').read {|f| puts f.read }
I note that the documentation for open-uri does explain that it is a wrapper for http, https, and ftp, but to deserve its name it should open such URIs as specified in this RFC: http://tools.ietf.org/html/rfc1630. This coupled with the fact that it already does open files, but not by a URI specification.
--
http://bugs.ruby-lang.org/