回形针,Cloudinary,开发,生产

时间:2017-05-15 10:08:40

标签: ruby-on-rails heroku paperclip cloudinary

在开发中的本地磁盘上和生产中的Cloudinary上拥有图像文件的优雅解决方案是什么?我有

%td= image_tag investor.image.file.url(cloudinary: {:width => 100, :height => 100, :crop => 'thumb', :gravity => 'face'})

在生产中看起来很棒,但它在开发中弄乱了URL。

%td= image_tag investor.image.file.url(:original, cloudinary: {:width => 100, :height => 100, :crop => 'thumb', :gravity => 'face'})

在制作中也看起来不错,但在开发中太大了,因为它使用原始尺寸的原始文件。

%td= image_tag investor.image.file.url(:thumb, cloudinary: {:width => 100, :height => 100, :crop => 'thumb', :gravity => 'face'})

在开发中看起来不错,但缩略图太远了,而且生产中的面太小了。

model
class Image < ApplicationRecord
  if Rails.env == 'production'
    has_attached_file :file, styles: { medium: "300x300>", thumb: "100x100>" }, default_url: ActionController::Base.helpers.asset_path("user.png"), 
      :storage => :cloudinary,
      :path => ':class/:id/:style/:filename'
  else
    has_attached_file :file, styles: { medium: "300x300>", thumb: "100x100>" }, default_url: ActionController::Base.helpers.asset_path("user.png") 

我无法在模型中设置默认选项,因为该模型用于附加两个不同其他模型的图像,而不仅仅是用户。具有图像的另一个模型没有面孔。我宁愿不必在所有观点中测试Rails.env

参考文献:

https://github.com/thoughtbot/paperclip
http://www.rubydoc.info/gems/paperclip/Paperclip
https://github.com/GoGoCarl/paperclip-cloudinary
http://cloudinary.com/documentation/rails_integration

1 个答案:

答案 0 :(得分:2)

我创建了一个帮手。

  def user_image_url_parameters
    if Rails.env == 'production'
      {cloudinary: {:width => 100, :height => 100, :crop => 'thumb', :gravity => 'face'}}
    else
      :thumb
    end
  end

所以视图是

image_tag user.image.file.url(user_image_url_parameters)