'English' 全局变量在 Rails 中不起作用
'English' global variables don't work in Rails
我正在尝试在 Rails 中使用英语 gem,这样我就可以访问 $LAST_MATCH_INFO
,$~
的较隐秘版本。然而,尽管需要英语,$LAST_MATCH_INFO
总是 nil
,而 $~
仍然有效。
这是我对 irb
的预期行为:
'foo' =~ /o/ # => 1
$~ # => #<MatchData "o">
$LAST_MATCH_INFO # => nil
require 'english' # => true
$LAST_MATCH_INFO # => #<MatchData "o">
$LAST_MATCH_INFO == $~ # => true
这是 rails console
的错误行为:
'foo' =~ /o/ # => 1
$~ # => #<MatchData "o">
$LAST_MATCH_INFO # => nil
require 'english' # => false
# (Means it's already been required)
$LAST_MATCH_INFO # => nil
$LAST_MATCH_INFO == $~ # => false
它在 irb
中有效,但在 rails console
或 Web 控制台中无效。请注意 require 'english'
returns false
因为 gem 已经加载,但它不起作用。
我错过了什么?
TL;DR:从 Gemfile 中删除了 gem 'english'
,有效。
我最终在几个月后回到这个问题并弄清楚了。
在我匆忙中使用 English
library, I added the english
gem 到我的 Gemfile
。 (注意大写)。
虽然 English
是我想要的内置库,但对于描述性全局变量,english
是用于一般英语语言处理的 gem。
通常,require 'english'
需要 gem,而 require 'English'
需要库。但是,我使用的是 case insensitive Mac OS X 系统,所以 require 'English'
首先找到了 english
gem并使用它。这意味着 Ruby 无法加载 English
库,这就是它从未起作用的原因。
我正在尝试在 Rails 中使用英语 gem,这样我就可以访问 $LAST_MATCH_INFO
,$~
的较隐秘版本。然而,尽管需要英语,$LAST_MATCH_INFO
总是 nil
,而 $~
仍然有效。
这是我对 irb
的预期行为:
'foo' =~ /o/ # => 1
$~ # => #<MatchData "o">
$LAST_MATCH_INFO # => nil
require 'english' # => true
$LAST_MATCH_INFO # => #<MatchData "o">
$LAST_MATCH_INFO == $~ # => true
这是 rails console
的错误行为:
'foo' =~ /o/ # => 1
$~ # => #<MatchData "o">
$LAST_MATCH_INFO # => nil
require 'english' # => false
# (Means it's already been required)
$LAST_MATCH_INFO # => nil
$LAST_MATCH_INFO == $~ # => false
它在 irb
中有效,但在 rails console
或 Web 控制台中无效。请注意 require 'english'
returns false
因为 gem 已经加载,但它不起作用。
我错过了什么?
TL;DR:从 Gemfile 中删除了 gem 'english'
,有效。
我最终在几个月后回到这个问题并弄清楚了。
在我匆忙中使用 English
library, I added the english
gem 到我的 Gemfile
。 (注意大写)。
虽然 English
是我想要的内置库,但对于描述性全局变量,english
是用于一般英语语言处理的 gem。
通常,require 'english'
需要 gem,而 require 'English'
需要库。但是,我使用的是 case insensitive Mac OS X 系统,所以 require 'English'
首先找到了 english
gem并使用它。这意味着 Ruby 无法加载 English
库,这就是它从未起作用的原因。