1

Ruby クラスを作成し、app_dir/lib/appointment_messaging_job.rb に配置しました。

class AppointmentMessagingJob
  def perform
  end
end

私のコントローラーの1つで、これを行います:

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

コントローラで使用できるIIRC。librequire 'test_class'ディレクトリはライブラリパス上にあります。これにより、依存関係がより明確になりますが、それがはるかに伝達的であるかどうかはわかりません。

于 2012-09-04T17:14:57.460 に答える