2

我已经在其他线程中看到过几次这样的问题,但似乎没有一个答案适用。

环境: 来自 jugend 的 Rails 3 amazon/ecs gem。唯一的文件在这里: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中工作。我可以运行:bundle console require '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 有一个模块 Amazon 包含一个类 Ecs。我不确定为什么这在 erb 中有效,而不是在 rails 中有效。

我对 Rails 还是有点陌生​​,所以请用小词回答。:-/

4

2 回答 2

0

得到了答案。我将初始化代码移至 config/initializers 文件中的初始化程序,完全删除了 require,一切正常。我不知道为什么,所以如果有人能回答这个问题,那就太好了。

于 2010-07-06T23:24:17.547 回答
0

默认情况下,所有 gem 都需要它们的文件,因此通常您不需要显式地需要任何文件。

谈到您的问题,您的控制器可能是在处理 Amazon 模块之前运行的。

于 2014-02-13T21:40:14.803 回答