1

我创建了 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'

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

4

1 回答 1

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。)

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

于 2012-09-04T17:14:57.460 回答