継承したRailsプロジェクトがあります。Rails2からRails3へのアップグレードに取り組んでいます。現在3.0.15で、3.2まで進んでいます。appディレクトリには、クラスを含むサポートフォルダがあります。そのようです:
app/
support/
sweeper.rb
grouped_list/
item.rb
list.rb
item.rbは次のようになります。
class Support::GroupedList::Item
attr_accessor :name, :count, :link
def initialize(name, count, link)
@name = name
@count = count
@link = link
end
end
コントローラの1つでは、Itemsクラスは次のように呼び出されます。
Support::GroupedList::Item.new name, count, link
ページを読み込もうとすると、次のエラーが発生します。
uninitialized constant ApplicationController::Support
私の最初の考えは、自動ロードにないパスでしたので、追加しました
config.autoload_paths += %W(#{config.root}/app/support #{config.root}/app/support/grouped_list)
私のapplication.rbにありますが、それは何も変わりませんでした。例を探した後、ディレクトリ構造に空のモジュールを作成している人がいることがわかったので、supportフォルダに次のようなsupport.rbファイルを作成しました。
module Support
end
今私のエラーはに変わります
uninitialized constant Support::GroupedList
おい!それは興味深いです、なぜそれが変わったのか分かりませんが、その進歩は正しいですか?そこで、grouped_listディレクトリにgrouped_list.rbファイルを追加します。次のようになります。
module Support::GroupedList
end
しかし、それから私は得る
Expected ***/app/support/grouped_list/grouped_list.rb to define GroupedList
うーん!だから私はそれを次のように変更します:
module GroupedList
end
しかし、私は戻ってきました:
uninitialized constant Support::GroupedList
したがって、モジュールにクラスをロードすることについて、私が見逃している基本的な知識がいくつかあることは明らかです。この構造はレール2で機能しましたが、レール3.0.15では壊れています。本当に理解したいので、誰か助けてくれたら本当にありがたいです。