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/