0

私はRails(rails 3.2+)を使用したアジャイルWeb開発をフォローしており、展開については第16章を参照しています。ただし、Herokuを使用することを計画しているb / cの大部分はスキップしており、現在それを理解しようとしています。とにかく、私は昨日私のアプリを正常に解凍しました、そしてそれは私のモデルの1つを除いてすべてうまくいきます。私の「注文」モデルは常に「申し訳ありませんが、問題が発生しました」を返します。エラーと私は理由を理解することはできません。これが「herokulogs」です

2012-07-27T16:46:00+00:00 app[web.1]: => Booting WEBrick
2012-07-27T16:46:00+00:00 app[web.1]: => Rails 3.2.6 application starting in production on http://0.0.0.0:59115
2012-07-27T16:46:00+00:00 app[web.1]: => Call with -d to detach
2012-07-27T16:46:00+00:00 app[web.1]: => Ctrl-C to shutdown server
2012-07-27T16:46:00+00:00 app[web.1]: Connecting to database specified by DATABASE_URL
2012-07-27T16:46:00+00:00 app[web.1]: [2012-07-27 16:46:00] INFO  WEBrick 1.3.1
2012-07-27T16:46:00+00:00 app[web.1]: [2012-07-27 16:46:00] INFO  ruby 1.9.3 (2012-04-20) [x86_64-linux]
2012-07-27T16:46:00+00:00 app[web.1]: [2012-07-27 16:46:00] INFO  WEBrick::HTTPServer#start: pid=2 port=59115
2012-07-27T16:46:01+00:00 heroku[web.1]: State changed from starting to up
2012-07-27T16:46:04+00:00 app[web.1]: 
2012-07-27T16:46:04+00:00 app[web.1]: Started POST "/en/orders" for 68.110.76.153 at 2012-07-27 16:46:04 +0000
2012-07-27T16:46:04+00:00 app[web.1]: 
2012-07-27T16:46:04+00:00 app[web.1]: Processing by OrdersController#create as HTML
2012-07-27T16:46:04+00:00 app[web.1]:   Parameters: {"utf8"=>"✓", "authenticity_token"=>"MGaN236tlISbAvzPPHogMMyRPIOux+VjAhjCYv/Uv8g=", "order"=>{"name"=>"Tim Turner", "address"=>"9393 E Thorougbh ", "email"=>"xrobertquinnx@aol.com", "pay_type"=>"Check"}, "commit"=>"Place Order", "locale"=>"en"}
2012-07-27T16:46:05+00:00 app[web.1]:   Rendered collection (0.0ms)
2012-07-27T16:46:05+00:00 app[web.1]:   Rendered order_notifier/received.html.erb (58.4ms)
2012-07-27T16:46:05+00:00 app[web.1]:   Rendered collection (0.0ms)
2012-07-27T16:46:05+00:00 app[web.1]:   Rendered order_notifier/received.text.erb (0.8ms)
2012-07-27T16:46:08+00:00 app[web.1]: 
2012-07-27T16:46:08+00:00 app[web.1]: Sent mail to johndoe@aol.com (3050ms)
2012-07-27T16:46:08+00:00 app[web.1]: 
2012-07-27T16:46:08+00:00 app[web.1]: Completed 500 Internal Server Error in 3619ms
2012-07-27T16:46:08+00:00 app[web.1]: Errno::ECONNREFUSED (Connection refused - connect(2)):
2012-07-27T16:46:08+00:00 app[web.1]:   app/controllers/orders_controller.rb:59:in `block in create'
2012-07-27T16:46:08+00:00 app[web.1]:   app/controllers/orders_controller.rb:55:in `create'
2012-07-27T16:46:08+00:00 app[web.1]: 
2012-07-27T16:46:08+00:00 app[web.1]: 
2012-07-27T16:46:08+00:00 heroku[router]: POST depot-app-test.herokuapp.com/en/orders dyno=web.1 queue=0 wait=0ms service=3791ms status=500 bytes=643
2012-07-27T16:46:08+00:00 heroku[router]: GET depot-app-test.herokuapp.com/favicon.ico dyno=web.1 queue=0 wait=0ms service=6ms status=304 bytes=0
2012-07-27T16:46:08+00:00 app[web.1]: [2012-07-27 16:46:08] WARN  Could not determine content-length of response body. Set content-length of the response or set Response#chunked = true

ご覧のとおり、500内部サーバーエラーがあります。しかし、何がこれを引き起こしているのかわかりません。他のすべてのモデルは問題なく動作します。「注文」モデルを遅れて追加し、移行するのを忘れたわけではありません。SQLコンソールをインストールし、ログに記録されているすべてのエントリを確認できるため、「orders」テーブルが機能していることがわかります。また、ローカルでも問題なく動作します。私はまた、より多くのエラー報告を見るためにこれを行いました:

config.consider_all_requests_local       = true

しかし、「herokulogs」にある以上の情報は得られませんでした。ありとあらゆる入力をいただければ幸いです。

編集

注文コントローラーコード:

class OrdersController < ApplicationController
    skip_before_filter :authorize, only: [:new, :create]

  # GET /orders
  # GET /orders.json
  def index
    @orders = Order.paginate page: params[:page], order: 'created_at desc',
      per_page: 10

    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @orders }
    end
  end

  # GET /orders/1
  # GET /orders/1.json
  def show
    @order = Order.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.json { render json: @order }
    end
  end

  # GET /orders/new
  # GET /orders/new.json
  def new
    @cart = current_cart
    if @cart.line_items.empty?
      redirect_to store_url, notice: "Your cart is empty"
      return
    end

    @order = Order.new

    respond_to do |format|
      format.html # new.html.erb
      format.json { render json: @order }
    end
  end

  # GET /orders/1/edit
  def edit
    @order = Order.find(params[:id])
  end

  # POST /orders
  # POST /orders.json
  def create
    @order = Order.new(params[:order])
    @order.add_line_items_from_cart(current_cart)

    respond_to do |format|
      if @order.save
        Cart.destroy(session[:cart_id])
        session[:cart_id] = nil
        OrderNotifier.received(@order).deliver
        format.html { redirect_to store_url, notice: 
          I18n.t('.thanks') }
        format.json { render json: @order, status: :created,
          location: @order }
      else
        @cart = current_cart
        format.html { render action: "new" }
        format.json { render json: @order.errors,
          status: :unprocessable_entity }
      end
    end
  end

  # PUT /orders/1
  # PUT /orders/1.json
  def update
    @order = Order.find(params[:id])

    respond_to do |format|
      if @order.update_attributes(params[:order])
        format.html { redirect_to @order, notice: 'Order was successfully updated.' }
        format.json { head :no_content }
      else
        format.html { render action: "edit" }
        format.json { render json: @order.errors, status: :unprocessable_entity }
      end
    end
  end

  # DELETE /orders/1
  # DELETE /orders/1.json
  def destroy
    @order = Order.find(params[:id])
    @order.destroy

    respond_to do |format|
      format.html { redirect_to orders_url }
      format.json { head :no_content }
    end
  end
end
4

2 に答える 2

4

問題はメーラーにあると思います。sendgridを使用してみてください

devcenter.heroku.com/articles/sendgrid#usage

于 2012-07-27T17:43:54.507 に答える
0

エラーログで、メールを送信していることに気づきました。これが問題の原因である可能性があります。Herokuはメールを送信しないため、Gmailを使用するかアドオンを入手する必要があります。

Herokuメールリファレンス:https ://devcenter.heroku.com/articles/smtp

Gmailとactionmailerに関するStackoverflowの投稿:Rails3でActionMailerと連携するようにGmailアカウントを設定する

于 2012-07-27T17:50:30.043 に答える