railscasts Pro エピソードhttp://railscasts.com/episodes/335-deploying-to-a-vps?view=asciicastにあるのとまったく同じ構成/セットアップで展開用にカピストラーノをセットアップしました。
deploy:check、status、cold のすべてのタスクが実行され、正常に完了します (いじくり回した後)。ただし、アプリは実行されておらず、従来の「問題が発生しました」というエラー ページが表示されます。unicorn.log を確認すると、以下のエラーが表示されます。
スレッドセーフの問題に対処するためにモジュールを含める前にモジュールを要求し、application.rb で絶対パスを自動ロードしようとしました。これはすべて開発環境で機能することに注意してください。
この NameError の問題を修正するためにコードを修正するにはどうすればよいですか?
unicorn.log
E, [2013-10-16T04:15:00.313177 #12996] ERROR -- : uninitialized constant AnswersController::Teebox (NameError)
/home/andrew/rails/teebox/releases/20131016032538/app/controllers/answers_controller.rb:5:in `<class:AnswersController>'
/home/andrew/rails/teebox/releases/20131016032538/app/controllers/answers_controller.rb:1:in `<top (required)>'
answer_controller.rb
class AnswersController < ApplicationController
before_filter :authenticate_user!, except: [:index, :show]
load_and_authorize_resource
require 'teebox/commentable'
include Teebox::Commentable # Offending line
...
end
lib/teebox/commentable.rb
require 'active_support/concern'
module Teebox::Commentable
extend ActiveSupport::Concern
included do
before_filter :comments
end
def comments
@comment = Comment.new
end
end
アプリケーション.rb
# Custom directories with classes and modules you want to be autoloadable.
config.autoload_paths += %W(#{config.root}/decorators)
config.autoload_paths += %W(#{config.root}/lib)
config.autoload_paths += %W(#{config.root}/lib/teebox/commentable.rb)
仕様:
capistrano 2.15.5
rails 3.2.14
ruby 1.9.3-p488
ubuntu 12.04
さらにコードが必要な場合は、ただ叫んでください。