0

我得到了我的Rails应用程序使用社区发动并立即运行,但不知何故我无法使图像上传工作。Rails 3和Communityengine的照片上传

在标准安装时,我尝试上传图片我总是会得到这个错误:

Photo /tmp/stream20130319-18602-13k89ab.gif is not recognized by the 'identify' command. 

ImageMagick的正确安装和识别命令的作品。/tmp /文件夹的权限也是正确的。所以我对这个问题一无所知=(。

要解决此问题,我尝试使用Amazon S3进行存储,因为我不介意图像来自哪里(请参阅here)。我复制了正确填写的s3 .yml到应用程序/配置/文件夹,我使用的宝石“AWS-SDK”在我的Gemfile如下建议:Paperclip;我更新application_config.rb这样的:

:photo => { 
    :missing_thumb => '/assets/icon_missing_thumb.gif', 
    :missing_medium => "/assets/icon_missing_medium.gif", 
    :paperclip_options => { 
     :storage => 's3', 
     :styles => { 
     :thumb => { 
      :geometry => '100x66#', 
      :processors => [:cropper] 
     }, 
     :medium => { 
      :geometry => '300x200#', 
      :processors => [:cropper] 
     }, 
     :large => { 
      :geometry => '600x400#', 
      :processors => [:cropper] 
     }, 
     :original => "1024>"  
     } 
    }, 
    :validation_options => { 
     :max_size => 3, 
     :content_type => ['image/jpg', 'image/jpeg', 'image/pjpeg', 'image/gif', 'image/png', 'image/x-png']   
    } 
    }, 

    :feature => { 
    :use_thumbs => true, 
    :paperclip_options => { 
     :storage => 's3', 
     :styles => { 
     :thumb => "100x66#", 
     :medium => '300x200#', 
     :large => "600x400#", 
     :original => '1024>'    
     } 
    }, 
    :validation_options => { 
     :max_size => 3, 
     :content_type => ['image/jpg', 'image/jpeg', 'image/pjpeg', 'image/gif', 'image/png', 'image/x-png']   
    } 
    }, 

    :clipping => { 
    :paperclip_options => { 
     :storage => 's3', 
     :styles => { 
     :thumb => "100x66#", 
     :medium => "300x200#", 
     :large => "600x400#", 
     :original => '1024>'  
     } 
    }, 
    :validation_options => { 
     :max_size => 3, 
     :content_type => ['image/jpg', 'image/jpeg', 'image/pjpeg', 'image/gif', 'image/png', 'image/x-png']    
    } 
    }, 

当我尝试编辑用户配置文件或上传图片我收到此错误: 未初始化的常量AWS :: S3 :: Base Full Trace here:

paperclip (2.4.5) lib/paperclip/storage/s3.rb:101:in `block in extended' 
paperclip (2.4.5) lib/paperclip/storage/s3.rb:79:in `instance_eval' 
paperclip (2.4.5) lib/paperclip/storage/s3.rb:79:in `extended' 
paperclip (2.4.5) lib/paperclip/attachment.rb:392:in `extend' 
paperclip (2.4.5) lib/paperclip/attachment.rb:392:in `initialize_storage' 
paperclip (2.4.5) lib/paperclip/attachment.rb:73:in `initialize' 
paperclip (2.4.5) lib/paperclip.rb:448:in `new' 
paperclip (2.4.5) lib/paperclip.rb:448:in `attachment_for' 
paperclip (2.4.5) lib/paperclip.rb:337:in `block in has_attached_file' 
activerecord (3.2.11) lib/active_record/attribute_assignment.rb:85:in `block in assign_attributes' 
activerecord (3.2.11) lib/active_record/attribute_assignment.rb:78:in `each' 
activerecord (3.2.11) lib/active_record/attribute_assignment.rb:78:in `assign_attributes' 
activerecord (3.2.11) lib/active_record/base.rb:497:in `initialize' 
/home/martin/.bundler/ruby/1.9.1/communityengine-281d49916dbc/app/controllers/photos_controller.rb:104:in `new' 
/home/martin/.bundler/ruby/1.9.1/communityengine-281d49916dbc/app/controllers/photos_controller.rb:104:in `create' 
actionpack (3.2.11) lib/action_controller/metal/implicit_render.rb:4:in `send_action' 
actionpack (3.2.11) lib/abstract_controller/base.rb:167:in `process_action' 
actionpack (3.2.11) lib/action_controller/metal/rendering.rb:10:in `process_action' 
actionpack (3.2.11) lib/abstract_controller/callbacks.rb:18:in `block in process_action' 
activesupport (3.2.11) lib/active_support/callbacks.rb:460:in `block (2 levels) in _run__141873283__process_action__116704501__callbacks' 
activesupport (3.2.11) lib/active_support/callbacks.rb:215:in `block in _conditional_callback_around_1705' 
activesupport (3.2.11) lib/active_support/callbacks.rb:326:in `around' 
activesupport (3.2.11) lib/active_support/callbacks.rb:310:in `_callback_around_1685' 
activesupport (3.2.11) lib/active_support/callbacks.rb:214:in `_conditional_callback_around_1705' 
activesupport (3.2.11) lib/active_support/callbacks.rb:459:in `block in _run__141873283__process_action__116704501__callbacks' 
activesupport (3.2.11) lib/active_support/callbacks.rb:215:in `block in _conditional_callback_around_1704' 
/home/martin/.bundler/ruby/1.9.1/communityengine-281d49916dbc/lib/community_engine/localized_application.rb:25:in `set_locale' 
activesupport (3.2.11) lib/active_support/callbacks.rb:214:in `_conditional_callback_around_1704' 
activesupport (3.2.11) lib/active_support/callbacks.rb:414:in `_run__141873283__process_action__116704501__callbacks' 
activesupport (3.2.11) lib/active_support/callbacks.rb:405:in `__run_callback' 
activesupport (3.2.11) lib/active_support/callbacks.rb:385:in `_run_process_action_callbacks' 
activesupport (3.2.11) lib/active_support/callbacks.rb:81:in `run_callbacks' 
actionpack (3.2.11) lib/abstract_controller/callbacks.rb:17:in `process_action' 
actionpack (3.2.11) lib/action_controller/metal/rescue.rb:29:in `process_action' 
actionpack (3.2.11) lib/action_controller/metal/instrumentation.rb:30:in `block in process_action' 
activesupport (3.2.11) lib/active_support/notifications.rb:123:in `block in instrument' 
activesupport (3.2.11) lib/active_support/notifications/instrumenter.rb:20:in `instrument' 
activesupport (3.2.11) lib/active_support/notifications.rb:123:in `instrument' 
actionpack (3.2.11) lib/action_controller/metal/instrumentation.rb:29:in `process_action' 
actionpack (3.2.11) lib/action_controller/metal/params_wrapper.rb:207:in `process_action' 
activerecord (3.2.11) lib/active_record/railties/controller_runtime.rb:18:in `process_action' 
actionpack (3.2.11) lib/abstract_controller/base.rb:121:in `process' 
actionpack (3.2.11) lib/abstract_controller/rendering.rb:45:in `process' 
actionpack (3.2.11) lib/action_controller/metal.rb:203:in `dispatch' 
actionpack (3.2.11) lib/action_controller/metal/rack_delegation.rb:14:in `dispatch' 
actionpack (3.2.11) lib/action_controller/metal.rb:246:in `block in action' 
actionpack (3.2.11) lib/action_dispatch/routing/route_set.rb:73:in `call' 
actionpack (3.2.11) lib/action_dispatch/routing/route_set.rb:73:in `dispatch' 
actionpack (3.2.11) lib/action_dispatch/routing/route_set.rb:36:in `call' 
journey (1.0.4) lib/journey/router.rb:68:in `block in call' 
journey (1.0.4) lib/journey/router.rb:56:in `each' 
journey (1.0.4) lib/journey/router.rb:56:in `call' 
actionpack (3.2.11) lib/action_dispatch/routing/route_set.rb:601:in `call' 
rakismet (1.3.0) lib/rakismet/middleware.rb:10:in `call' 
omniauth (1.1.2) lib/omniauth/strategy.rb:177:in `call!' 
omniauth (1.1.2) lib/omniauth/strategy.rb:157:in `call' 
omniauth (1.1.2) lib/omniauth/builder.rb:48:in `call' 
actionpack (3.2.11) lib/action_dispatch/middleware/best_standards_support.rb:17:in `call' 
rack (1.4.5) lib/rack/etag.rb:23:in `call' 
rack (1.4.5) lib/rack/conditionalget.rb:35:in `call' 
actionpack (3.2.11) lib/action_dispatch/middleware/head.rb:14:in `call' 
actionpack (3.2.11) lib/action_dispatch/middleware/params_parser.rb:21:in `call' 
actionpack (3.2.11) lib/action_dispatch/middleware/flash.rb:242:in `call' 
rack (1.4.5) lib/rack/session/abstract/id.rb:210:in `context' 
rack (1.4.5) lib/rack/session/abstract/id.rb:205:in `call' 
actionpack (3.2.11) lib/action_dispatch/middleware/cookies.rb:341:in `call' 
activerecord (3.2.11) lib/active_record/query_cache.rb:64:in `call' 
activerecord (3.2.11) lib/active_record/connection_adapters/abstract/connection_pool.rb:479:in `call' 
actionpack (3.2.11) lib/action_dispatch/middleware/callbacks.rb:28:in `block in call' 
activesupport (3.2.11) lib/active_support/callbacks.rb:405:in `_run__284061703__call__288038654__callbacks' 
activesupport (3.2.11) lib/active_support/callbacks.rb:405:in `__run_callback' 
activesupport (3.2.11) lib/active_support/callbacks.rb:385:in `_run_call_callbacks' 
activesupport (3.2.11) lib/active_support/callbacks.rb:81:in `run_callbacks' 
actionpack (3.2.11) lib/action_dispatch/middleware/callbacks.rb:27:in `call' 
actionpack (3.2.11) lib/action_dispatch/middleware/reloader.rb:65:in `call' 
actionpack (3.2.11) lib/action_dispatch/middleware/remote_ip.rb:31:in `call' 
actionpack (3.2.11) lib/action_dispatch/middleware/debug_exceptions.rb:16:in `call' 
actionpack (3.2.11) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call' 
railties (3.2.11) lib/rails/rack/logger.rb:32:in `call_app' 
railties (3.2.11) lib/rails/rack/logger.rb:16:in `block in call' 
activesupport (3.2.11) lib/active_support/tagged_logging.rb:22:in `tagged' 
railties (3.2.11) lib/rails/rack/logger.rb:16:in `call' 
actionpack (3.2.11) lib/action_dispatch/middleware/request_id.rb:22:in `call' 
rack (1.4.5) lib/rack/methodoverride.rb:21:in `call' 
rack (1.4.5) lib/rack/runtime.rb:17:in `call' 
activesupport (3.2.11) lib/active_support/cache/strategy/local_cache.rb:72:in `call' 
rack (1.4.5) lib/rack/lock.rb:15:in `call' 
actionpack (3.2.11) lib/action_dispatch/middleware/static.rb:62:in `call' 
railties (3.2.11) lib/rails/engine.rb:479:in `call' 
railties (3.2.11) lib/rails/application.rb:223:in `call' 
rack (1.4.5) lib/rack/content_length.rb:14:in `call' 
railties (3.2.11) lib/rails/rack/log_tailer.rb:17:in `call' 
rack (1.4.5) lib/rack/handler/webrick.rb:59:in `service' 
/usr/lib/ruby/1.9.1/webrick/httpserver.rb:138:in `service' 
/usr/lib/ruby/1.9.1/webrick/httpserver.rb:94:in `run' 
/usr/lib/ruby/1.9.1/webrick/server.rb:191:in `block in start_thread' 

任何人都可以帮我吗?我真的坚持这一点。

回答

0

我现在解决了这个问题! CommunityEngine的Jquery-Bootstrap分支使用回形针2.4.5,并在较新的版本中解决此问题。

我在Github上分叉了Communityengine,并将回形针依赖项更新为2.7.4。 在community_engine.gemspec只需更换这一点:

s.add_dependency(%q<paperclip>, ["~> 2.4.3"]) 

与此:

s.add_dependency(%q<paperclip>, ["~> 2.7.4"]) 

的另一个问题是,需要较新版本“斗”,而不是“BUCKET_NAME”中的S3凭据(我搞砸了这样)。

1

回形针2.4.5仍然使用aws-s3宝石。

您的Gemfile行更改为:

gem "aws-s3", :require => "aws/s3" 

或使用主分支,而不是稳定的版本(这当然有一些涉及的风险):

gem 'paperclip', :git => "git://github.com/thoughtbot/paperclip.git" 
gem "aws-sdk" 

UPDATE:回形针2.5 .0于2012年1月13日发布,现在使用aws-sdk

对于第二个问题,我正在更新它swer

的主要问题是,你需要将下面的代码移动到它自己的初始化文件:

if Rails.env == "production" 
    S3_CREDENTIALS = { :access_key_id => ENV['S3_KEY'], :secret_access_key => ENV['S3_SECRET'], :bucket => "ourbucket"} 
else 
    S3_CREDENTIALS = Rails.root.join("config/s3.yml") 
end 

然后,你应该将下面一行添加到您的模型,你有* has_attached_file:照片*要添加的行是。

:s3_credentials => S3_CREDENTIALS, 

这就是你之前缺少的东西。

此外,当您声明您的存储桶名称时,请确保它适用于我们的标准。如果您使用其他位置之一,则必须适当更新路径。

希望这会有所帮助!

+0

当我改变这个时,我得到了一个不同的错误:“证书不是路径,文件或哈希”。抛出此行“= image_tag(@ user.avatar_photo_url(:medium),:class =>”thumbnail“)”并且跟踪看起来类似:“paperclip(2.4.5)lib/paperclip.rb:332:在'block在has_attached_file' /home/martin/.bundler/ruby/1.9.1/communityengine-281d49916dbc/app/models/user.rb:260:in'avatar_photo_url'“ – Martin 2013-03-19 11:34:50

+0

@Martin查看我的更新回答 – 2013-03-19 11:40:07

+0

感谢您的帮助,但我只是更新回形针! – Martin 2013-03-20 15:02:53