在Rails 3控制器中需要宝石失败并且“常量缺失”

时间:2010-07-06 21:49:35

标签: ruby ruby-on-rails-3 bundler

我已经在其他帖子中看到过这个问题,但是没有一个答案似乎适用。

环境: Rails 3 来自jugend的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中运作。我可以跑: 捆绑控制台 要求'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

我得到:未初始化的常量SearchController ::亚马逊第8行,我首先尝试使用亚马逊。

ecs.rb有一个包含Ecs类的亚马逊模块。我不确定为什么这个工作在erb中,而不是在rails中。

我仍然是Rails的新手,所以请用小词回答。 : - /

2 个答案:

答案 0 :(得分:0)

得到了答案。我将初始化代码移动到config / initializers文件中的初始化程序,完全删除了需求,并且工作正常。我不知道为什么,所以如果有人能回答,那就太好了。

答案 1 :(得分:0)

默认情况下,所有宝石都需要他们的文件,因此通常您不需要明确要求任何文件。

说到你的问题,可能会在某种程度上,你的控制器在处理亚马逊模块之前运行。