我应该在哪里放置扩展 Rails 中的散列 class 的文件?
Where do I place a file that exntends the hash class in Rails?
我正在使用 Rails 4.2.7.1。我想创建一个不区分大小写的散列,如此处所述 — How do I create a hash in Ruby that compares strings, ignoring case? 。我用
创建了文件 app/active-support/hash_with_indifferent_access.rb
class CaseInsensitiveHash < HashWithIndifferentAccess
# This method shouldn't need an override, but my tests say otherwise.
def [](key)
super convert_key(key)
end
protected
def convert_key(key)
key.respond_to?(:downcase) ? key.downcase : key
end
end
但是当我加载控制台时,它无法识别哈希…
davea$ rails console
Loading development environment (Rails 4.2.7.1)
2.3.0 :001 > h = CaseInsensitiveHash.new
NameError: uninitialized constant CaseInsensitiveHash
from (irb):1
from /Users/davea/.rvm/gems/ruby-2.3.0/gems/railties-4.2.7.1/lib/rails/commands/console.rb:110:in `start'
from /Users/davea/.rvm/gems/ruby-2.3.0/gems/railties-4.2.7.1/lib/rails/commands/console.rb:9:in `start'
from /Users/davea/.rvm/gems/ruby-2.3.0/gems/railties-4.2.7.1/lib/rails/commands/commands_tasks.rb:68:in `console'
from /Users/davea/.rvm/gems/ruby-2.3.0/gems/railties-4.2.7.1/lib/rails/commands/commands_tasks.rb:39:in `run_command!'
from /Users/davea/.rvm/gems/ruby-2.3.0/gems/railties-4.2.7.1/lib/rails/commands.rb:17:in `<top (required)>'
from bin/rails:4:in `require'
from bin/rails:4:in `<main>'
我应该把我的文件放在哪里才能在我的项目中找到它?
我通常把那些东西放在 lib/core_ext/hash.rb 中。但这取决于你。我做的你错过的是创建一个 config/initializers/require.rb 文件,如下所示:
require "core_ext/hash"
require "core_ext/array"
...
我正在使用 Rails 4.2.7.1。我想创建一个不区分大小写的散列,如此处所述 — How do I create a hash in Ruby that compares strings, ignoring case? 。我用
创建了文件 app/active-support/hash_with_indifferent_access.rbclass CaseInsensitiveHash < HashWithIndifferentAccess
# This method shouldn't need an override, but my tests say otherwise.
def [](key)
super convert_key(key)
end
protected
def convert_key(key)
key.respond_to?(:downcase) ? key.downcase : key
end
end
但是当我加载控制台时,它无法识别哈希…
davea$ rails console
Loading development environment (Rails 4.2.7.1)
2.3.0 :001 > h = CaseInsensitiveHash.new
NameError: uninitialized constant CaseInsensitiveHash
from (irb):1
from /Users/davea/.rvm/gems/ruby-2.3.0/gems/railties-4.2.7.1/lib/rails/commands/console.rb:110:in `start'
from /Users/davea/.rvm/gems/ruby-2.3.0/gems/railties-4.2.7.1/lib/rails/commands/console.rb:9:in `start'
from /Users/davea/.rvm/gems/ruby-2.3.0/gems/railties-4.2.7.1/lib/rails/commands/commands_tasks.rb:68:in `console'
from /Users/davea/.rvm/gems/ruby-2.3.0/gems/railties-4.2.7.1/lib/rails/commands/commands_tasks.rb:39:in `run_command!'
from /Users/davea/.rvm/gems/ruby-2.3.0/gems/railties-4.2.7.1/lib/rails/commands.rb:17:in `<top (required)>'
from bin/rails:4:in `require'
from bin/rails:4:in `<main>'
我应该把我的文件放在哪里才能在我的项目中找到它?
我通常把那些东西放在 lib/core_ext/hash.rb 中。但这取决于你。我做的你错过的是创建一个 config/initializers/require.rb 文件,如下所示:
require "core_ext/hash"
require "core_ext/array"
...