0

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

さらにコードが必要な場合は、ただ叫んでください。

4

1 に答える 1

0

Mac では問題にならなかった命名規則がありましたが、大文字と小文字を区別する Linux ボックスでは問題でした。

私はlib/Teebox/commentable.rbフォルダ構造を持っていて、それから呼び出していました:

include Teebox::Commentable.

だから私はこれをlib/teebox/commentable.rb(小文字のティーボックス)に切り替え、これでエラーが解決しました。

于 2013-10-16T18:31:59.820 に答える