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/include_other_files_in_ruby.html http://ionrails.com/2009/09/19/ruby_require-vs-load-vs-include-vs-extend/