Ruby 西纳特拉;Carrierwave:在'require';中:无法加载这样的文件--RMagick(LoadError)
我想用Carrierwave在Sinatra创建一个简单的图像上传类。我使用了与此几乎相同的代码,并在Gemfile中指定了相同的行,但是在运行$bundle install和所有安装都没有问题之后,我从以下代码中得到了一个LoadError: 档案:Ruby 西纳特拉;Carrierwave:在'require';中:无法加载这样的文件--RMagick(LoadError),ruby,sinatra,carrierwave,rmagick,Ruby,Sinatra,Carrierwave,Rmagick,我想用Carrierwave在Sinatra创建一个简单的图像上传类。我使用了与此几乎相同的代码,并在Gemfile中指定了相同的行,但是在运行$bundle install和所有安装都没有问题之后,我从以下代码中得到了一个LoadError: 档案: source 'https://rubygems.org' ruby '1.9.3' gem 'sinatra' gem 'sinatra-contrib' gem 'rack' gem 'thin' gem "mongo_mapper" g
source 'https://rubygems.org'
ruby '1.9.3'
gem 'sinatra'
gem 'sinatra-contrib'
gem 'rack'
gem 'thin'
gem "mongo_mapper"
gem 'bson_ext'
# Image uploading to S3
gem "fog", "~> 1.3.1"
gem 'carrierwave'
gem 'rmagick', '2.13.2', :git=>'http://github.com/rmagick/rmagick.git', :require=>'RMagick'
CarrierWave配置文件:
# Configure Carrierwave Uploads to Amazon S3
CarrierWave.configure do |config|
config.fog_credentials = {
:provider => 'AWS', # required
:aws_access_key_id => '(never mind about this)', # required
:aws_secret_access_key => '(or this)' # required
#:region => 'eu-west-1', # optional, defaults to 'us-east-1'
#:host => 's3.example.com', # optional, defaults to nil
#:endpoint => 'https://s3.example.com:8080' # optional, defaults to nil
}
config.fog_directory = 'penumbra-images' # required
config.fog_attributes = {'Cache-Control'=>'max-age=315576000'} # optional, defaults to {}
end
ImageUploader类定义:
class ImageUploader < CarrierWave::Uploader::Base
include CarrierWave::RMagick
process :resize_to_fit => [1024, 1024]
storage :fog
end
class ImageUploader[1024,1024]
储存:雾
结束
我的结果:
$ ruby app.rb
CarrierWave::Uploader::Base
/Users/duncanmalashock/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:124:in `require': cannot load such file -- RMagick (LoadError)
from /Users/duncanmalashock/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:124:in `require'
from /Users/duncanmalashock/.rvm/gems/ruby-1.9.3-p448/gems/carrierwave-0.9.0/lib/carrierwave/processing/rmagick.rb:67:in `rescue in block in <module:RMagick>'
from /Users/duncanmalashock/.rvm/gems/ruby-1.9.3-p448/gems/carrierwave-0.9.0/lib/carrierwave/processing/rmagick.rb:64:in `block in <module:RMagick>'
from /Users/duncanmalashock/.rvm/gems/ruby-1.9.3-p448/gems/activesupport-3.2.14/lib/active_support/concern.rb:121:in `class_eval'
from /Users/duncanmalashock/.rvm/gems/ruby-1.9.3-p448/gems/activesupport-3.2.14/lib/active_support/concern.rb:121:in `append_features'
from /Users/duncanmalashock/Generator/init/uploader.rb:2:in `include'
from /Users/duncanmalashock/Generator/init/uploader.rb:2:in `<class:ImageUploader>'
from /Users/duncanmalashock/Generator/init/uploader.rb:1:in `<top (required)>'
from /Users/duncanmalashock/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:124:in `require'
from /Users/duncanmalashock/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:124:in `require'
from app.rb:7:in `<main>'
$ruby app.rb
CarrierWave::Uploader::Base
/Users/duncanmalaschock/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/site\u ruby/1.9.1/rubygems/core\u ext/kernel\u require.rb:124:“require”中:无法加载此类文件--RMagick(LoadError)
来自/Users/duncanmalaschock/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/site\u ruby/1.9.1/rubygems/core\u ext/kernel\u require.rb:124:in'require'
来自/Users/duncanmalaschock/.rvm/gems/ruby-1.9.3-p448/gems/carrierwave-0.9.0/lib/carrierwave/processing/rmagick.rb:67:“在区块中进行救援”
from/Users/duncanamalaschock/.rvm/gems/ruby-1.9.3-p448/gems/carrierwave-0.9.0/lib/carrierwave/processing/rmagick.rb:64:in'block in'
来自/Users/duncanmalaschock/.rvm/gems/ruby-1.9.3-p448/gems/activesupport-3.2.14/lib/active\u support/concern.rb:121:in'class\u eval'
来自/Users/duncanmalaschock/.rvm/gems/ruby-1.9.3-p448/gems/activesupport-3.2.14/lib/active\u support/concern.rb:121:“附加功能”中
from/Users/duncanmalaschock/Generator/init/uploader.rb:2:in'include'
from/Users/duncanmalaschock/Generator/init/uploader.rb:2:in`'
from/Users/duncanmalaschock/Generator/init/uploader.rb:1:in`'
来自/Users/duncanmalaschock/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/site\u ruby/1.9.1/rubygems/core\u ext/kernel\u require.rb:124:in'require'
来自/Users/duncanmalaschock/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/site\u ruby/1.9.1/rubygems/core\u ext/kernel\u require.rb:124:in'require'
来自app.rb:7:in`'
有人能帮忙吗?非常感谢。在您的
Gemfile
中,您指定了RMagick的git版本。Bundler采取了一些特殊的步骤将这些库添加到Ruby的加载路径中,但在没有Bundler的情况下运行时它们不可用,因为它们不是普通的gems。当您在没有Bunder的情况下使用ruby app.rb
运行应用程序时,Bundler无法将此项目添加到加载路径,因此会出现加载错误
要修复此问题,请确保使用Bundler运行应用程序:
$ bundle exec ruby app.rb
或者,您可以在代码中设置Bundler。加
require 'bundler/setup'
在
app.rb的顶部,每次运行时都会设置Bundler。非常感谢,@matt!我有一个不同的问题,但你的回答节省了我几个小时。