Rails 4.1在自动加载中包含哪些文件夹

时间:2014-05-01 18:15:24

标签: ruby ruby-on-rails-4

我正在使用Ruby 2.11编写Ruby on Rails 4.1应用程序。结构是域 - >团队 - >用户。因此,用户属于一个团队,我有时需要从一个域创建一个团队(因此他们是关联的)。想想星巴克 - > NY Central Team - >巴菲斯先生。

我已经制作了一些构建器类并将它们放在app / builder中,但是当我尝试使用该类时,它在Rails控制台中显示了未初始化的常量。因此,例如,我有app/builders/team_builder.rb中的文件:

class TeamBuilder

  attr_reader :domain, :params

  def initialize(domain, params = {})
    @domain = domain
    @params = params
  end

  def build
    domain.teams.build(params)
  end

end

但是当我输入TeamBuilder.new(domain, name: 'Team name here!')时,我得到了回复

NameError: uninitialized constant TeamBuilder

它似乎无法识别我上面添加的新类,这让我觉得它没有加载它。但我认为app /中的所有子目录都已加载。

完全难以接受这个,我找不到关于此的指南或文件(也许它就在那里 - 某个地方......)

2 个答案:

答案 0 :(得分:3)

进入rails控制台(rails c)并输入以下内容:

YourAppName::Application.config.eager_load_paths

(其中YourAppName是在您的environment.rb中调用的任何内容,其中调用了initialize!)。这应该显示自动加载到您的应用程序中的所有路径(在自定义之前)。

看起来自动路径添加魔法发生在这里https://github.com/rails/rails/blob/master/railties/lib/rails/engine/configuration.rb

答案 1 :(得分:0)

docs表示您可以运行:

bin/rails r 'puts ActiveSupport::Dependencies.autoload_paths'

要在终端中查看