2016-12 / 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

2016-12-19 (月)

Ruby の $ERROR_INFO などの特殊変数は require 'English' が必要だったのか [Ruby]

先日会社の tech channel で話題になったのでメモ。Rubiest の方々にとっ
ては常識なんですかね...?

$ ruby -v
ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-darwin15]

$ ruby -e 'raise "aaa" rescue  p $!'
#<RuntimeError: aaa>

$ ruby -e 'raise "aaa" rescue  p $ERROR_INFO'
nil

$ ruby -r English -e 'raise "aaa" rescue  p $ERROR_INFO'
#<RuntimeError: aaa>



Ruby はグローバル変数の初期値が nil なのがたちが悪い。個人的にはも
う $ERROR_INFO とかは使わないと思う。


C: Prefer $ERROR_INFO from the stdlib 'English' module over $!.


Rubocop 先生がこのようにお怒りだったので、出来るだけ長い変数名を使
うようにしていましたが、行間を読む必要があったみたいです。
=> require 'English' も必要。

関連情報
- library English (Ruby 2.3.0)
- https://github.com/bbatsov/rubocop/issues/1747#issuecomment-164329831

http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/9271

まつもと ゆきひろです

In message "[ruby-dev:9270] Re: bang method returns string always"
    on 00/02/23, GOTO Kentaro <gotoken / math.sci.hokudai.ac.jp> writes:

|>$~などの記号でない代替が必要だろうとは昔から思ってるんです。
|
|English.rb を組み込みにするのはどうですか??

記号変数の撲滅と言う観点では前進ですが、$の削減と言う観点か
らは前進じゃないんですよねえ。


そういえば、まつもとさんは長い変数名が好きではないと、rebuild.fm
155158 で話してました。

http://perldoc.jp/docs/perl/5.20.1/perlvar.pod

以下の名前は Perl では特別な意味を持ちます。 記号的な名前の多くは記憶法があるか、シェルでの類推が可能です。 それでも長い名前を使用したい場合には

   use English;

とプログラムの最初に書いてください。


Perl 由来らしい。

関係ないけど Perl(真珠)は Shell(殻)に対応(?)していたのですね。

2016-12 / 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

最終更新時間: 2017-01-14 05:25

検索


最近の話題
- 2017-01-10
  完全に闇に落ちていた StartSSL に ¥3,603 課金してしまったお話
- 2017-01-03
  Software Design を 13 ヶ月分まとめ読みした
- 2016-12-19
  任意の Ruby オブジェクトを YAML として書く
  Ruby の $ERROR_INFO などの特殊変数は require 'English' が必要だったのか
- 2016-12-14
  不惑の年に風呂の良さを知った
- 2016-12-10
  bundle install で Your Gemfile.lock is corrupt. と怒られる件
- 2016-11-05
  yaml_vault が AWS での Rails 環境変数つらい問題を解決したと思う
- 2016-11-01
  ZenPad 3S 10 (Z500M) から始まる廃人生活
最近追記された記事
- 2015-06-07-1 (17日前)
- 2016-12-10-1 (35日前)
- 2016-11-05-1 (43日前)
- 2015-01-04-1 (51日前)
- 2016-11-01-1 (72日前)
- 2015-07-28-1 (96日前)
- 2016-09-29-1 (98日前)
- 2014-09-23-1 (179日前)
- 2016-06-07-1 (220日前)
- 2015-12-27-1 (380日前)
カテゴリ
- Anthy (3)
- Apache (11)
- Apple (1)
- ATOK (4)
- au (2)
- AWS (15)
- Bazaar (1)
- Berkshelf (2)
- BigQuery (1)
- BitBar (3)
- Book (85)
- Boxen (2)
- Bugsnag (1)
- C (26)
- capistrano (3)
- chalow (56)
- ChatWork (1)
- Chef (17)
- Chrome (3)
- Chromecast (1)
- CircleCI (7)
- Comics (2)
- Cooking (10)
- cvs (15)
- cygwin (12)
- D3.js (1)
- Debian (55)
- Docker (1)
- E-mail (8)
- elasticsearch (3)
- Emacs (219)
- Emacs講座 (10)
- English (4)
- feedforce (7)
- fetchmail (3)
- Firefox (20)
- Fluentd (4)
- ftp (1)
- Game (19)
- Gem (5)
- Git (8)
- GitHub (15)
- Go (5)
- Google (1)
- gpg (4)
- GrowthForecast (7)
- Health (2)
- Heroku (9)
- Homebrew (10)
- HTML (6)
- iBook (1)
- iPhone (14)
- IRC (1)
- Jenkins (8)
- Karabiner (1)
- KeySnail (3)
- Kibana (1)
- Kindle (1)
- Langrich (7)
- LDAP (6)
- Life (18)
- Linux (5)
- Mackerel (1)
- Mew (18)
- MongoDB (1)
- Mozilla (19)
- Music (1)
- MySQL (1)
- NAS (4)
- nginx (6)
- NHK (1)
- Node (1)
- ntp (4)
- OOP (1)
- OpenID (2)
- openssl (1)
- Opera (2)
- OSX (41)
- Perl (14)
- PHP (19)
- PostgreSQL (1)
- procmail (4)
- Programing (3)
- Puppet (1)
- Python (2)
- Rails (10)
- Rake (2)
- RaspberryPi (1)
- RedHat (29)
- Redmine (3)
- Rspec (1)
- Ruby (48)
- samba (3)
- screen (7)
- sed (5)
- serverspec (6)
- sh (8)
- Slack (2)
- Solaris9 (22)
- Spring (2)
- ssh (4)
- StatusNet (21)
- svn (12)
- Swift (1)
- Tablet (1)
- tdiary (3)
- Twitter (14)
- Twmode (6)
- Ubuntu (5)
- UNIX (102)
- vagrant (8)
- Video (21)
- vim (1)
- Wercker (9)
- Windows (29)
- Wine (3)
- XML (11)
- XP (1)
- zsh (25)
- インストールメモ (33)
- クイックシェイプ (12)
- ネタ (15)
- 勉強会 (13)
- 携帯 (6)
- 正規表現 (4)
過去ログ
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12
2002 : 01 02 03 04 05 06 07 08 09 10 11 12
2001 : 01 02 03 04 05 06 07 08 09 10 11 12
Google+