2

私はこれが他のスレッドで数回尋ねられるのを見ました、しかし答えのどれも当てはまらないようです。

環境: jugendのRails 3 amazon /ecsgem。唯一のファイルはここにあります:http: //github.com/jugend/amazon-ecs/blob/master/lib/amazon/ecs.rb

私のgemfileには次のものがあります:gem'amazon-ecs'、:git =>'git://github.com/jugend/amazon-ecs.git'

すべてがirbで機能します。私は実行できます:バンドルコンソールには「amazon / ecs」が必要で、それから町に行きます

ただし、コントローラーから使用しようとすると、次のようになります。「amazon/ecs」が必要です。

require 'amazon/ecs'

class SearchController < ApplicationController
  def index    
  end

  def results
    Amazon::Ecs.configure do |options|
        options[:aWS_access_key_id] = '[key]'
        options[:aWS_secret_key] = '[secret]'
    end

    res = Amazon::Ecs.item_search(params[:search], {:response_group => 'Medium', :search_index => 'All'})
  end
end

8行目で初期化されていない定数SearchController::Amazonを取得します。ここで、最初にAmazonを使用しようとします。

ecs.rbには、クラスEcsを含むモジュールAmazonがあります。なぜこれがレールではなくerbで機能しているのかわかりません。

Railsはまだ少し新しいので、短い言葉で答えてください。:-/

4

2 に答える 2

0

答えを与えられた. 初期化コードを config/initializers ファイルの初期化子に移動し、require を完全に削除したところ、うまくいきました。よくわからないので、どなたか答えていただけると助かります。

于 2010-07-06T23:24:17.547 に答える
0

すべての gem はデフォルトでファイルを必要とするため、通常は明示的にファイルを必要とする必要はありません。

あなたの問題について言えば、Amazonモジュールが処理される前にコントローラーが実行されている可能性があります。

于 2014-02-13T21:40:14.803 に答える