Скрепка, как добавить случайный штамп в конец файла? - PullRequest
1 голос
/ 21 августа 2011

Я использую скрепку с моим приложением rails 3. Я хочу добавить случайную строку, ничего длинного или сумасшедшего в конце файла, чтобы кэшировать перебор CDN. Кто-нибудь знает действительно простой способ сделать это?

Вот что у меня сейчас:

  has_attached_file :photo,
    :styles => { :thumb => "70x70>" },
    :storage => :s3,
    :s3_credentials => "#{Rails.root}/config/s3.yml",
    :path => "/:rails_env/public/users/:id/:style/:basename.:extension",
    .....

Мне нужно имя файла, например, FILENAME_31313.png

Где 31313 является случайным при каждом сохранении фотографии.

Спасибо

Ответы [ 2 ]

5 голосов
/ 29 июня 2012

Скрепка (сейчас?) Поддерживает это из коробки:

has_attached_file :avatar,
    :styles => { :medium => "300x300>", :thumb => "100x100>"},
    :url => "/system/:id_partition/:style/:hash.:extension",
    :hash_secret => Test2::Application.config.secret_token

Таким образом, изображения сохраняются в /system/000/000/006/thumb/1c4fef2bf61f39193f8606521e880cbde54e04a1.jpg. Не коротко, хотя. С :basename вы можете добавить базовое имя в URL. Подробнее см. https://github.com/thoughtbot/paperclip#uri-obfuscation.

4 голосов
/ 21 августа 2011

Вы можете использовать что-то вроде этого, чтобы выполнить работу:

before_create :generate_random_hex

private
def generate_random_hex
  self.random_hex = ActiveSupport::SecureRandom.hex(8)
end

Paperclip.interpolates :random_hex do |attachment, style|
  attachment.instance.random_hex
end

Затем измените настройки скрепки следующим образом:

has_attached_file :photo,
  :styles => { :thumb => "70x70>" },
  :storage => :s3,
  :s3_credentials => "#{Rails.root}/config/s3.yml",
  :path => "/:rails_env/public/users/:id/:style/:basename_:random_hex.:extension",
...