2012-07-27 29 views
0

我跟隨在Rails(Rails 3.2+)的敏捷Web開發,我在第16章,關於部署。然而,我在計劃使用Heroku的大多數B/C中跳過它,而我正在試圖弄清楚。無論如何,我昨天成功解散了我的應用程序,並且它工作正常,除了我的一個模型外。我的'訂單'模型總是返回一個「我們很抱歉,但出了問題。」錯誤,我不明白爲什麼。這裏是'heroku日誌'模型/表不會工作heroku

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"=>"[email protected]", "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 [email protected] (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內部服務器錯誤。但是,我不知道可能是什麼原因造成的。我所有的其他模型都能正常工作。這不像我遲到添加'訂單'模型並忘記遷移。我知道'orders'表正在工作,因爲我安裝了一個sql控制檯,並且可以看到所有正在記錄的條目。另外,它在本地工作得很好。我也這樣做是爲了看到更多的錯誤報告:

config.consider_all_requests_local  = true 

但是,我沒有得到任何比「Heroku的日誌」中發現更多的信息。任何和所有的輸入將不勝感激。

編輯

訂購控制器代碼:

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 
+0

您可以發佈爲創建行動的命令控制器代碼:關於Gmail和的ActionMailer https://devcenter.heroku.com/articles/smtp

後#1?它似乎在得到一個錯誤 – 2012-07-27 17:32:10

+0

當然。剛添加它。 – flyingarmadillo 2012-07-27 17:36:28

+0

謝謝,你的控制器看起來不錯。我認爲這個問題與SMTP有關。按照這個文檔https://devcenter.heroku.com/articles/sendgrid#usage – 2012-07-27 17:41:43

回答

4

我認爲這個問題是與你的郵件,請嘗試使用sendgrid

devcenter.heroku.com/articles/sendgrid#usage

+0

是的,就是這樣。配置它使用我的Gmail帳戶(您必須登錄到您的Gmail帳戶,並授權登錄您的應用程序),一切正常。謝謝! – flyingarmadillo 2012-07-27 18:38:13