raindrops RubyGem user+dev discussion/patches/pulls/bugs/help
 help / color / mirror / Atom feed
* [RFC] linux: workaround Ruby 2.3 change
@ 2016-02-02 18:31 Eric Wong
  2016-02-23  2:04 ` [RFC 2/1] linux: remove Pathname stdlib dependency Eric Wong
  0 siblings, 1 reply; 3+ messages in thread
From: Eric Wong @ 2016-02-02 18:31 UTC (permalink / raw)
  To: raindrops-public

File.readlink (and thus Pathname#realpath) returns the filesystem
encoding (Encoding.find "filesystem").  The filesystem encoding
defaults to the locale encoding, which tends to be UTF-8.  This
is true even on *nix filesystems which can have any byte besides
"\0".

ref: https://bugs.ruby-lang.org/issues/12034
ref: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/73593
---
 lib/raindrops/linux.rb | 1 +
 1 file changed, 1 insertion(+)

diff --git a/lib/raindrops/linux.rb b/lib/raindrops/linux.rb
index 7cfb653..a38fa64 100644
--- a/lib/raindrops/linux.rb
+++ b/lib/raindrops/linux.rb
@@ -47,6 +47,7 @@ module Raindrops::Linux
         if File.symlink?(path)
           link = path
           path = Pathname.new(link).realpath.to_s
+          path.force_encoding(Encoding::BINARY) if defined?(Encoding)
           rv[link] = rv[path] # vivify ListenerStats
         else
           rv[path] # vivify ListenerStats
-- 
EW


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [RFC 2/1] linux: remove Pathname stdlib dependency
  2016-02-02 18:31 [RFC] linux: workaround Ruby 2.3 change Eric Wong
@ 2016-02-23  2:04 ` Eric Wong
  2016-02-23 11:00   ` Antonio Terceiro
  0 siblings, 1 reply; 3+ messages in thread
From: Eric Wong @ 2016-02-23  2:04 UTC (permalink / raw)
  To: raindrops-public; +Cc: Antonio Terceiro

The File.readlink has been available since the earliest SVN import
of Ruby from Jan 16 1998.  There's no reason to load the Pathname
class here since we don't do any further pathname manipulation.

So avoid loading the extra .so here and creating extra objects.
---
 Noticed while reviewing "[RFC] linux: workaround Ruby 2.3 change"
 http://bogomips.org/raindrops-public/20160202183136.21549-1-e@80x24.org/raw

 lib/raindrops/linux.rb | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/lib/raindrops/linux.rb b/lib/raindrops/linux.rb
index a38fa64..4166ec7 100644
--- a/lib/raindrops/linux.rb
+++ b/lib/raindrops/linux.rb
@@ -8,7 +8,6 @@
 # Instead of snapshotting, Raindrops::Aggregate::LastDataRecv may be used
 # to aggregate statistics from +all+ accepted sockets as they arrive
 # based on the +last_data_recv+ field in Raindrops::TCP_Info
-require 'pathname'
 
 module Raindrops::Linux
 
@@ -46,7 +45,7 @@ module Raindrops::Linux
         path.force_encoding(Encoding::BINARY) if defined?(Encoding)
         if File.symlink?(path)
           link = path
-          path = Pathname.new(link).realpath.to_s
+          path = File.readlink(link)
           path.force_encoding(Encoding::BINARY) if defined?(Encoding)
           rv[link] = rv[path] # vivify ListenerStats
         else
-- 
EW

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [RFC 2/1] linux: remove Pathname stdlib dependency
  2016-02-23  2:04 ` [RFC 2/1] linux: remove Pathname stdlib dependency Eric Wong
@ 2016-02-23 11:00   ` Antonio Terceiro
  0 siblings, 0 replies; 3+ messages in thread
From: Antonio Terceiro @ 2016-02-23 11:00 UTC (permalink / raw)
  To: Eric Wong; +Cc: raindrops-public

[-- Attachment #1: Type: text/plain, Size: 1489 bytes --]

On Tue, Feb 23, 2016 at 02:04:34AM +0000, Eric Wong wrote:
> The File.readlink has been available since the earliest SVN import
> of Ruby from Jan 16 1998.  There's no reason to load the Pathname
> class here since we don't do any further pathname manipulation.
> 
> So avoid loading the extra .so here and creating extra objects.
> ---
>  Noticed while reviewing "[RFC] linux: workaround Ruby 2.3 change"
>  http://bogomips.org/raindrops-public/20160202183136.21549-1-e@80x24.org/raw
> 
>  lib/raindrops/linux.rb | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/lib/raindrops/linux.rb b/lib/raindrops/linux.rb
> index a38fa64..4166ec7 100644
> --- a/lib/raindrops/linux.rb
> +++ b/lib/raindrops/linux.rb
> @@ -8,7 +8,6 @@
>  # Instead of snapshotting, Raindrops::Aggregate::LastDataRecv may be used
>  # to aggregate statistics from +all+ accepted sockets as they arrive
>  # based on the +last_data_recv+ field in Raindrops::TCP_Info
> -require 'pathname'
>  
>  module Raindrops::Linux
>  
> @@ -46,7 +45,7 @@ module Raindrops::Linux
>          path.force_encoding(Encoding::BINARY) if defined?(Encoding)
>          if File.symlink?(path)
>            link = path
> -          path = Pathname.new(link).realpath.to_s
> +          path = File.readlink(link)
>            path.force_encoding(Encoding::BINARY) if defined?(Encoding)
>            rv[link] = rv[path] # vivify ListenerStats
>          else
> -- 
> EW

LGTM


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 820 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2016-02-23 11:00 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-02-02 18:31 [RFC] linux: workaround Ruby 2.3 change Eric Wong
2016-02-23  2:04 ` [RFC 2/1] linux: remove Pathname stdlib dependency Eric Wong
2016-02-23 11:00   ` Antonio Terceiro

raindrops RubyGem user+dev discussion/patches/pulls/bugs/help

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://yhbt.net/raindrops-public
	git clone --mirror http://ou63pmih66umazou.onion/raindrops-public

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V1 raindrops-public raindrops-public/ https://yhbt.net/raindrops-public \
		raindrops-public@yhbt.net raindrops-public@bogomips.org raindrops@librelist.org raindrops@librelist.com
	public-inbox-index raindrops-public

Example config snippet for mirrors.
Newsgroups are available over NNTP:
	nntp://news.public-inbox.org/inbox.comp.lang.ruby.raindrops
	nntp://ou63pmih66umazou.onion/inbox.comp.lang.ruby.raindrops
 note: .onion URLs require Tor: https://www.torproject.org/

code repositories for the project(s) associated with this inbox:

	raindrops.git

AGPL code for this site: git clone https://public-inbox.org/public-inbox.git