2016-09-29 7 views
0

こんにちは私は昨日Passenger/CapistranoとNginxサーバーを使ってVPSにアプリケーションを配備しました。Braintree checkoutは配備後に `Braintree :: ConfigurationError`エラーを返します

注文ページにcheckoutボタンを入力する場合を除き、すべてがスムーズに実行されています。その後

アプリがクラッシュし、production.logでこのエラーラインは、事はMerchiant_idが設定されていると私は完全に失われてるということですBraintree::ConfigurationError (Braintree::Configuration.merchant_id needs to be set): app/controllers/orders_controller.rb:22:in 'new'

あります。

デプロイメント前に、のAPIキーをProduction個のAPIキーapplication.ymlに変更しました。私は​​を使ってAPI keysを隠しています。

デプロイメント前にlocalhostでこれを実行したところ、すべて正常に動作しました。

私はBraintreeガイドを何度も繰り返しました。私は間違ったことは見つけられません。

ここに何か不足していますか?

ここにはエラーが出ているorders_controller.rbです。

class OrdersController < ApplicationController 

include CurrentCart 
before_action :set_cart, only: [:new, :create] 
before_action :set_order, only: [:show, :edit, :destroy] 

def index 
    @orders = Order.all? 
end 

def new 
    @images = ["1.jpg", "2.jpg", "3.jpg", "4.jpg", "5.jpg"] 
@random_no = rand(5) 
@random_image = @images[@random_no] 

    if @cart.product_items.empty? 
     redirect_to root_url, notice: 'Your Cart is Empty' 
     return 

    end 
    @order = Order.new 
    @client_token = Braintree::ClientToken.generate #this is line 22 were the error is 
end 

def create 
    @order = Order.new(order_params) 
    if @order.save 
     charge 
     if @result.success? 
      @order.add_product_items_from_cart(@cart) 
     Cart.destroy(session[:cart_id]) 
     session[:cart_id] = nil 
     OrderNotifier.received(@order).deliver 
     redirect_to root_url, notice: 'Thank You for Your Order' 
     else 
      flash[:error] = 'Please Check Your Cart' 
      redirect_to root_url, alert: @result.message 
      @order.destroy 
     end 
    else 
     @client_token = Braintree::ClientToken.generate 
     render :new 
    end 
end 


def show 

end 


def destroy 
    @order.destroy 
    redirect_to root_url, notice: 'Order deleted' 
end 

private 

def set_order 
    @order = Order.find(params[:id]) 
end 

def order_params 
    params.require(:order).permit(:name, :email, :address, :city, :country) 
end 

def charge 
    @result = Braintree::Transaction.sale(
     amount: @cart.total_price_usd, 
     payment_method_nonce: params[:payment_method_nonce]) 
end 

end 

答えて

1

私は同じような問題が一度発生しましたが、基本的には同じエラーでした。

あなたがもう一度あなたを展開する前に私は私の場合には、これを解決するためにやったことは `deploy.rb``

set :linked_filesconfig/application.ymlを追加するので、ラインは、このset :linked_files, %w{ config/application.yml}

ようになりましたサーバー上にapplication.ymlを作成する必要があります。ほとんどの場合、それは~/YOURAPP/shared/config$

であるそして、あなたは私がよ、私はほとんどこれを追加すると、あなたの問題

+0

[OK]を感謝を修正することを賭けることができる~/YOURAPP/shared/config/application.yml

にあなたのマシン上でapplication.ymlからコードをコピー&ペースト/それをチェックして....これが解決することを願っています – DaudiHell

+0

いいえ....サーバー上にapplication.ymlが見つかりませんでした。新しいエラーが発生しました。サーバ上に作成してくださいね。 – DaudiHell

+0

申し訳ありません。 ...あなたはそれをしなければなりません...もしそれがうまくいくならば、私は答えを更新します – Slowboy