我决定将我的应用程序部署到Heroku,我正在关注他们的教程.但是,我现在尝试使用回形针插件连接到我的Amazon S3存储桶,我收到此错误:
Images#index中的ArgumentError
显示第19行引发的app/views/images/index.html.erb:
第0行,第39栏的语法错误:`bucket:(MY BUCKET HERE)
access_key_id :(我的访问密钥ID在这里)
secret_access_key :(我的秘密访问密钥在这里)
'
提取的来源(第19行附近):16:<%= H image.created_at%>
17:<%= H image.updated_at%>
18:
19:<%如果image.img.exists?然后%>
20:<%= image_tag image.img.url(:thumb)%>
21:<%else%>
22:没有附上照片,上传一张.
RAILS_ROOT:C:/ Users/Mariusz/Sites/wiw_development
应用程序跟踪| 框架跟踪| 完整跟踪
C:/Ruby/lib/ruby/1.8/yaml.rb:133:在加载' C:/Users/Mariusz/Sites/wiw_development/vendor/plugins/paperclip/lib/paperclip/storage.rb:236:in parse_credentials'C :/Users/Mariusz/Sites/wiw_development/vendor/plugins/paperclip/lib/paperclip/storage.rb:138:in instance_eval'C :/ Users/Mariusz/Sites/wiw_development/vendor/plugins/paperclip/lib /paperclip/storage.rb:137:in 延伸' C:/Users/Mariusz/Sites/wiw_development/vendor/plugins/paperclip/lib/paperclip/attachment.rb:269:在初始化' C:/用户/马里乌什/站点/wiw_development/vendor/plugins/paperclip/lib/paperclip.rb:326:in attachment_for'load'
C:/Ruby/lib/ruby/1.8/yaml.rb:133:infind_credentials'
C:/Users/Mariusz/Sites/wiw_development/vendor/plugins/paperclip/lib/paperclip/storage.rb:176:inextended'
C:/Users/Mariusz/Sites/wiw_development/vendor/plugins/paperclip/lib/paperclip/storage.rb:137:inextended'
C:/Users/Mariusz/Sites/wiw_development/vendor/plugins/paperclip/lib/paperclip/attachment.rb:269:ininitialize_storage'
C:/Users/Mariusz/Sites/wiw_development/vendor/plugins/paperclip/lib/paperclip/attachment.rb:51:innew'
C:/Users/Mariusz/Sites/wiw_development/vendor/plugins/paperclip/lib/paperclip.rb:326:in
C:/Users/Mariusz/Sites/wiw_development/vendor/plugins/paperclip/lib/paperclip.rb:229:in _run_erb_app47views47images47index46html46erb'C :/Users/Mariusz/Sites/wiw_development/app/views/images/index.html.erb :12:在_run_erb_app47views47images47index46html46erb'C :/Users/Mariusz/Sites/wiw_development/app/controllers/images_controller.rb:7:在'index'中img'
C:/Users/Mariusz/Sites/wiw_development/app/views/images/index.html.erb:19:ineach'
C:/Users/Mariusz/Sites/wiw_development/app/views/images/index.html.erb:12:in
我的文件看起来像这样:
1)app/models/image.rb
class Image <ActiveRecord :: Base
has_and_belongs_to_many:pairs
validates_presence_of:img_file_name
has_attached_file:img,:styles => {:thumb =>"100x100#",:page =>"400x320>"} …
amazon ruby-on-rails amazon-s3 paperclip ruby-on-rails-plugins
嗨我在rails 3中创建一个应用程序我正在使用paperclip,其中我想调用一个回形针函数来生成图像的缩略图但是当我调用after_save方法时它会给出错误
弃用警告:不推荐使用Base#after_save,请改用Base.after_save:方法.(来自app/models/asset.rb:23)
image = PortfolioFileItem.find(107)
img_source = "http://s3.amazonaws.com/test/portfolio_file_items_final/original/1.jpg"
image.picture_from_url(img_source)
image.save(false)
Run Code Online (Sandbox Code Playgroud)
图像保存完成但缺少图像扩展名.这是保存的示例图像名称:open-uri20110528-6779-fpiust-0.
请帮我解决问题.谢谢
在生产中,我偶尔会收到以下错误:
Errno::ETIMEDOUT: Connection timed out - connect(2)
Run Code Online (Sandbox Code Playgroud)
当我使用包含由paperclip/aws-sdk上传到s3的图像的prawn gem生成PDF时,似乎只会发生这种情况.这可能每周只发生几次,每天使用数百次(没有问题),但是当它失败时会导致500错误.
跟踪是:
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/net/http.rb:560:in
`initialize'
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/net/http.rb:560:in
`open'
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/net/http.rb:560:in
`connect'
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/timeout.rb:53:in
`timeout'
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/timeout.rb:101:in
`timeout'
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/net/http.rb:560:in
`connect'
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/net/http.rb:553:in
`do_start'
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/net/http.rb:542:in
`start'
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/open-uri.rb:242:in
`open_http'
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/open-uri.rb:616:in
`buffer_open'
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/open-uri.rb:164:in
`open_loop'
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/open-uri.rb:162:in
`catch'
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/open-uri.rb:162:in
`open_loop'
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/open-uri.rb:132:in
`open_uri'
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/open-uri.rb:518:in
`open'
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/open-uri.rb:30:in
`open'
....rb:57:in `render_image_to_pdf'
Run Code Online (Sandbox Code Playgroud)
第57行:
pdf.image open(image.expiring_url(30.minutes, :full)), :width => 300, :position => 20
Run Code Online (Sandbox Code Playgroud)
建立:
Rails 3.0.10
Ruby 1.8.7EE
Prawn 0.11.1
AWS-SDK 1.3.3
Paperclip 2.5.2
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能防止此错误?
我正在使用回形针来保存图像.一切正常,我可以使用@ item.image.url访问该项目的网址.
class Item
has_attached_file :image, :styles => {
:original => ['1920x1680>', :jpg],
:small => ['100x100>', :jpg],
:medium => ['250x250>', :jpg],
:large => ['500x500>', :jpg]
}
end
Run Code Online (Sandbox Code Playgroud)
这是控制台:
> Item.last.image.url(:small)
=> "/system/images/items/1/small/chanel.jpg?1334005208"
Run Code Online (Sandbox Code Playgroud)
如果我从服务器模板化HAML或ERB并像这样向用户提供页面,这是简单易行的.项目/ show.html.haml:
.item
.item-image
= image_tag @item.image.url(:small)
Run Code Online (Sandbox Code Playgroud)
但是,使用backbone.js,我无法构造URL,因为我在上下文中没有回形针助手.基本上,我将图像的以下属性以json形式发送到页面.
#<Item:0x007fc97559b960> {
:id => 1,
:image_content_type => "image/jpeg",
:image_file_name => "chanel.jpg",
:image_file_size => 28880,
:image_updated_at => 2012-04-09 21:00:08 UTC
}
Run Code Online (Sandbox Code Playgroud)
什么是忍者的方式来将image.url作为项目的属性包含在内.我如何考虑样式URLS?有一个像"image_small_url","image_normal_url"等属性预定和可访问的将是很好的.思考?
ruby-on-rails paperclip backbone.js ruby-on-rails-3 ruby-on-rails-3.1
我正在尝试在 s3_host_alias 中使用 Cloudfront CNAME,但不起作用。
development:
url: ":s3_host_alias"
s3_host_alias: dev-cdn.mysite.com
production:
url: ":s3_host_alias"
s3_host_alias: cdn.mysite.com
Run Code Online (Sandbox Code Playgroud)
def self.s3_config
@@s3_config ||= YAML.load(ERB.new(File.read("#{Rails.root}/config/s3_config.yml")).result)[Rails.env]
end
has_attached_file :avatar, :storage => :s3, :s3_credentials => "#{Rails.root}/config/s3.yml", :url => self.s3_config['url'], :s3_host_alias => self.s3_config['s3_host_alias'], :styles => { :medium => "300x300>", :circle => "130x130#", :thumb => "50x50>" }, :default_url => "avatar/missing.jpg", :path => ":class/:id/:attachment/:style/:hash.:extension", :url => ":class/:id/:attachment/:style/:hash.:extension", :hash_secret => "***"
Run Code Online (Sandbox Code Playgroud)
在模型中直接使用 CNAME 尝试了代码,但也不起作用。
has_attached_file :avatar, :storage => :s3, :s3_credentials => "#{Rails.root}/config/s3.yml", :url => ":s3_host_alias", :s3_host_alias => "dev-cdn.mysite.com", :styles …Run Code Online (Sandbox Code Playgroud) 使用Dokku在Digital Ocean上运行Rails 4应用程序.用户可以通过回形针上传图像.我可以上传图像,应用程序运行良好并显示所有图像.一旦我做了一个像文本更改的小改动,我运行$ git push dokku master,所有上传的图像404.
模型:
class ProductImage < ActiveRecord::Base
has_attached_file :image, default_url: "/images/:style/missing.png",
:path =>":rails_root/public/system/:attachment/:id/:basename_:style.:extension",
:url =>"/system/:attachment/:id/:basename_:style.:extension",
styles: { thumb: ["64x64#", :jpg], medium: ['200x200>', :jpg],
large: ['400x400>', :jpg] }
validates_attachment_content_type :image, content_type: /\Aimage\/.*\Z/
belongs_to :product
end
Run Code Online (Sandbox Code Playgroud)
我有rails_12factor gem.这是配置文件:
Rails.application.configure do
config.cache_classes = true
config.eager_load = true
config.consider_all_requests_local = false
config.action_controller.perform_caching = true
config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present?
config.assets.js_compressor = :uglifier
config.assets.compile = true
config.assets.digest = true
config.log_level = :debug
config.i18n.fallbacks = true
config.active_support.deprecation = :notify
config.log_formatter = …Run Code Online (Sandbox Code Playgroud) 我的建筑内,所有型号的Rails应用程序Users,Album(如相册)和Photo嵌套的顺序.我希望能够找到用户相册使用的总存储空间.
从Album关卡中,我可以找到该相册中照片使用的总存储空间.即:
album = Album.first
album.photos.sum(:image_file_size)
Run Code Online (Sandbox Code Playgroud)
但是,我希望能够从User所有专辑的照片水平上做到这一点.
这样做有一种优雅的方式吗?
谢谢!
sum ruby-on-rails paperclip nested-resources rails-activerecord
在生产中.rb:
config.paperclip_defaults = {
s3_host_name: "s3.#{ENV.fetch('AWS_REGION')}.amazonaws.com",
storage: :s3,
s3_credentials: {
bucket: ENV.fetch('S3_BUCKET_NAME'),
access_key_id: ENV.fetch('AWS_ACCESS_KEY_ID'),
secret_access_key: ENV.fetch('AWS_SECRET_ACCESS_KEY'),
s3_region: ENV.fetch('AWS_REGION'),
}
}
Run Code Online (Sandbox Code Playgroud)
我的初始化程序/paperclip.rb 中没有任何内容。
在我的模型中:
class MyModel < ApplicationRecord
has_attached_file :photo, styles: {
thumb: '100x100>',
square: '200x200#',
medium: '300x300>'
}
validates_attachment_content_type :photo, content_type: /\Aimage\/.*\Z/
def photo_url=(url)
self.photo = URI.parse(url)
end
end
Run Code Online (Sandbox Code Playgroud)
然后我测试一下:
m = Model.new
m.photo_url = "https://s3.us-east-2.amazonaws.com/mybucket/sports-grill-miami.jpg"
m.save!
m.photo.url(:thumb)
"//s3.us-east-2.amazonaws.com/mybucket/buckets/photos/000/000/005/thumb/sports-grill-miami.jpg?1495237443"
Run Code Online (Sandbox Code Playgroud)
为什么缺少 HTTPS 协议?这导致我的 Android 应用程序崩溃,因为它需要一个协议来连接到 URL。我是否需要对 URL 进行硬编码,或者 Paperclip 可以处理这个问题吗?
我在Rails 3应用程序中使用带有Omniauth(带有Facebook)的paperclip gem.所有个人资料照片都保存到Amazon S3.
现在我遇到的问题是许多图像被保存为stringio.txt,导致重复的图像.这意味着,我的一些用户拥有不属于他们自己的个人资料图片.
当图像本身超过10kb时,似乎也会出现这些图像.
到目前为止,我已尝试直接使用保存 open-uri
self.avatar = open(omniauth['user_info']['image'].sub("square","large"))
paperclip ×10
ruby-on-rails ×10
amazon-s3 ×3
after-save ×1
amazon ×1
backbone.js ×1
dokku ×1
facebook ×1
prawn ×1
ruby ×1
sum ×1