1

継承した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では壊れています。本当に理解したいので、誰か助けてくれたら本当にありがたいです。

4

1 に答える 1