imgproxy.rb 开源项目教程
项目介绍
imgproxy.rb
是一个框架无关的 Ruby Gem,专门为 imgproxy
设计。imgproxy
是一个快速且安全的独立服务器,用于调整和转换远程图像。其主要原则是简单性、速度和安全性。imgproxy
是一个 Go 应用程序,适用于任何 Unix 环境,并且可以通过 Docker 容器化。imgproxy.rb
提供了对 Ruby on Rails 最流行的图像附件选项的支持,如 Active Storage 和 Shrine。
项目快速启动
安装
首先,将以下内容添加到你的 Gemfile:
gem "imgproxy"
或者在系统范围内安装:
gem install imgproxy
配置
使用 anyway_config
加载配置,可以通过不同的方式进行配置。以下是一些示例:
使用单独的配置文件
# <Rails 根目录>/config/imgproxy.yml
development:
# imgproxy 的完整 URL
endpoint: "http://imgproxy.example.com"
# 十六进制编码的签名密钥和盐
key: "your_key"
salt: "your_salt"
production:
# 其他环境配置
使用 secrets.yml 条目
# secrets.yml
production:
imgproxy:
# imgproxy 的完整 URL
endpoint: "http://imgproxy.example.com"
# 十六进制编码的签名密钥和盐
key: "your_key"
salt: "your_salt"
使用示例
假设你有一个用户头像,你可以使用 imgproxy_url
方法生成 URL:
user.avatar.imgproxy_url(width: 250, height: 250)
应用案例和最佳实践
在开发和生产环境中使用不同的图像处理工具
imgproxy-rails
gem 允许你在开发环境中使用 vips
或 ImageMagick
,而在生产环境中使用 imgproxy
。以下是如何配置:
# Gemfile
gem "imgproxy-rails"
配置 active_storage
解析模型路由:
# development.rb
config.active_storage.resolve_model_to_route = :rails_storage_proxy
# production.rb
config.active_storage.resolve_model_to_route = :imgproxy_active_storage
这样,以下 HTML 片段将在开发和生产环境中生成不同的 URL:
# show.erb.html
<%= image_tag user.avatar %>
典型生态项目
Active Storage
Active Storage
是 Ruby on Rails 的一个内置库,用于上传文件并将其附加到应用程序中的记录。结合 imgproxy
,可以轻松处理图像上传和调整大小。
Shrine
Shrine
是一个功能强大的文件上传库,支持多种存储后端和丰富的插件系统。通过 imgproxy
,可以无缝集成图像处理功能。
通过这些生态项目的支持,imgproxy.rb
可以广泛应用于各种 Ruby on Rails 项目中,提供高效、安全的图像处理解决方案。