我有一个文件,my_helper.rb
看起来像这样:
require 'cgi'
require 'enumerator'
module MyHelper
# ...
end
class MyUpstreamError < StandardError
# ...
end
当我require 'my_helper'
在别处时,MyHelper
变得可见,但MyUpstreamError
不可见。为什么是这样?
我有一个文件,my_helper.rb
看起来像这样:
require 'cgi'
require 'enumerator'
module MyHelper
# ...
end
class MyUpstreamError < StandardError
# ...
end
当我require 'my_helper'
在别处时,MyHelper
变得可见,但MyUpstreamError
不可见。为什么是这样?
原来是文件名冲突。在我的 Rails 设置的目录中还有一个名为 的文件my_helper.rb
,我从未编辑过它。helpers
它正在隐藏这个文件,该文件位于lib
.
Ruby 的 require 类似于包含在 C 中。
你可能想读一读: http: //rubylearning.com/satishtalim/including_other_files_in_ruby.html http://ionrails.com/2009/09/19/ruby_require-vs-load-vs-include-vs-extend/