这个未初始化的常量错误是什么?

时间:2012-09-04 17:10:06

标签: ruby-on-rails

我创建了ruby类并将其放在app_dir / lib / appointment_messaging_job.rb

class AppointmentMessagingJob
  def perform
  end
end

在我的一个控制器中,我这样做:

test = AppointmentMessagingJob.new

我得到一个非常烦人的非常难以理解的错误:

Started GET "/en/appointments/1/approve" for 127.0.0.1 at 2012-09-04 13:02:43 -0400
Processing by AppointmentsController#approve as HTML
  Parameters: {"locale"=>"en", "id"=>"1"}
Completed 500 Internal Server Error in 2ms

NameError (uninitialized constant AppointmentsController::AppointmentMessagingJob):
  app/controllers/appointments_controller.rb:89:in 'approve'

这个未初始化的常数是什么?我真的不明白。

1 个答案:

答案 0 :(得分:4)

您的图书馆未加载,而且无法解析班级名称。

更新config/application.rb以自动包含lib目录;那里有一行默认注释掉:

# Custom directories with classes and modules you want to be autoloadable.
# config.autoload_paths += %W(#{config.root}/extras)

(您显然想要包含lib目录,而不是extras。)

IIRC您也可以在控制器中使用require 'test_class',lib目录位于库路径上。这使得依赖性更加明确,但我不确定它是否更具沟通性。