首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Rails错误-无法加载此类文件-- aws-sdk (您可能需要安装aws-sdk gem)

Rails错误-无法加载此类文件-- aws-sdk (您可能需要安装aws-sdk gem)
EN

Stack Overflow用户
提问于 2013-02-26 07:21:36
回答 3查看 20.8K关注 0票数 5

我有一个通过回形针和亚马逊s3上传图片的RoR应用程序。一切正常,直到我决定将路由从myapp.com/id更改为myapp.com/model-name。现在我得到以下错误:LoadError cannot load such file -- aws-sdk (You may need to install the aws-sdk gem)。这些更改涉及模型、控制器和数据库的更改。

型号:

代码语言:javascript
运行
复制
class Major < ActiveRecord::Base
  attr_accessible :glance, :name, :image

  # Validations
  validates :glance, presence: true
  validates :name, presence: true
  validates_attachment :image, content_type: {content_type: ['image/jpeg', 'image/jpg', 'image/png', 'image/gif']}, size: { less_than: 5.megabytes }
  validates :slug, uniqueness: true, presence: true

  before_validation :generate_slug

  # Associations
  has_attached_file :image, styles: { 
   profile: "350x350>", 
   similar: '166x134>', 
   thumb: "100x100>" 
  },
    :storage => :s3,
    :bucket => 'major finder'
    :s3_credentials => {
      :access_key_id => 'my_key_id',
      :secret_access_key => 'my_secret_access_key'
    },
    :path => "/majors/:attachment/:style/:filename"    

  # make the url path memorable (instead of using the id)
  def to_param
    slug
  end

  def generate_slug
    self.slug ||= name.parameterize
  end 
end

控制器:

代码语言:javascript
运行
复制
class MajorsController < ApplicationController
  before_filter :authenticate_user!, only: [:new, :edit]
  before_filter :find_page, only: [:show, :edit, :update, :destroy]

  def index
    @majors_recent = Major.order("created_at DESC")
    @majors = Major.all

    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @majors }
    end
  end

  def show
    respond_to do |format|
      format.html # show.html.erb
      format.json { render json: @major }
    end
  end

  def new
    @major = Major.new

    respond_to do |format|
      format.html # new.html.erb
      format.json { render json: @major }
    end
  end

  def edit
  end

  def create
    @major = Major.new(params[:major])

    respond_to do |format|
      if @major.save
        format.html { redirect_to @major, notice: 'Major was successfully created.' }
        format.json { render json: @major, status: :created, location: @major }
      else
        format.html { render action: "new" }
        format.json { render json: @major.errors, status: :unprocessable_entity }
      end
    end
  end

  def update
    respond_to do |format|
      if @major.update_attributes(params[:major])
        format.html { redirect_to @major, notice: 'Major was successfully updated.' }
        format.json { head :no_content }
      else
        format.html { render action: "edit" }
        format.json { render json: @major.errors, status: :unprocessable_entity }
      end
    end
  end

  def destroy
    @major.destroy

    respond_to do |format|
      format.html { redirect_to majors_url }
      format.json { head :no_content }
    end
  end

private 
  def find_page
    @major = Major.find_by_slug!(params[:id])
  end
end

我的数据库模式如下所示:

代码语言:javascript
运行
复制
  create_table "majors", :force => true do |t|
    t.text     "glance",             :limit => 255
    t.datetime "created_at",                        :null => false
    t.datetime "updated_at",                        :null => false
    t.string   "name"
    t.string   "image_file_name"
    t.string   "image_content_type"
    t.integer  "image_file_size"
    t.datetime "image_updated_at"
  end

这是我的Gemfile:

代码语言:javascript
运行
复制
gem 'rails', '3.2.11'
gem 'jquery-rails'
gem 'devise'
gem 'simple_form'
gem 'aws-sdk'
gem "paperclip", "~> 3.0"
gem 'sunspot_rails'
gem 'activeadmin'


group :production do
  gem 'pg'
end

group :development, :test do
  gem 'sqlite3'
  gem 'sunspot_solr'
end

group :assets do
  gem 'sass-rails', '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'
  gem 'uglifier', '>= 1.0.3'
  gem 'bootstrap-sass', '~> 2.2.2.0'
end

我现在运行了$ rails g migration add_slug_to_majors slug:index,然后运行了$ rake db:migrate,尽管我已经删除了所有的更改,但仍然收到这个错误。我已经找遍了,也找不到解决办法。有谁有什么想法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-02-26 07:33:20

解决方案是在错误的情况下编写的,您还需要在开发模式下使用aws-sdk gem (因为您在模型中使用它)。只需将gem 'aws-sdk'移出组即可。

顺便说一下:在开发和生产模式下使用相同的数据库引擎,我和你一样在配置上有一些问题。

票数 3
EN

Stack Overflow用户

发布于 2017-12-19 03:27:58

这实际上是您在管理Gemfile中的版本时可能遇到的问题。

在我的例子中,它是一个较新版本的回形针,导致了问题。降级到旧版本为我修复了它。

票数 9
EN

Stack Overflow用户

发布于 2021-10-05 22:20:22

今天(2021年10月5日)我遇到了这个问题,我将一个名为FilterTRAK的应用程序从Railsv4.2.1重写到Railsv6.1.4.1。

我在这个问题的主题中得到了确切的错误。

我不能降级回形针,因为一个依赖问题,在Mimemagic0.3.0,它已被强行拉出。

Mimemical0.3.7是所有可用的,要做到这一点,你必须升级到回形针5.0;问题是回形针5.0给出了同样的错误。

解决方案:

gem回形针-aws我特别安装了这个gem,如下所示:

代码语言:javascript
运行
复制
gem 'paperclip-aws', '~> 1.6', '>= 1.6.8'

并且我的应用程序正确加载了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15078455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档