mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
ca12968587
ImageProcessing gem is a wrapper around MiniMagick and ruby-vips, and implements an interface for common image resizing and processing. This is the canonical image processing gem recommended in [Shrine], and that's where it developed from. The initial implementation was extracted from Refile, which also implements on-the-fly transformations. Some features that ImageProcessing gem adds on top of MiniMagick: * resizing macros - #resize_to_limit - #resize_to_fit - #resize_to_fill - #resize_and_pad * automatic orientation * automatic thumbnail sharpening * avoids the complex and inefficient MiniMagick::Image class * will use "magick" instead of "convert" on ImageMagick 7 However, the biggest feature of the ImageProcessing gem is that it has an alternative implementation that uses libvips. Libvips is an alternative to ImageMagick that can process images very rapidly (we've seen up 10x faster than ImageMagick). What's great is that the ImageProcessing gem provides the same interface for both implementations. The macros are named the same, and the libvips implementation does auto orientation and thumbnail sharpening as well; only the operations/options specific to ImageMagick/libvips differ. The integration provided by this PR should work for both implementations. The plan is to introduce the ImageProcessing backend in Rails 6.0 as the default backend and deprecate the MiniMagick backend, then in Rails 6.1 remove the MiniMagick backend.
162 lines
4.3 KiB
Ruby
162 lines
4.3 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
source "https://rubygems.org"
|
|
|
|
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
|
|
|
|
gemspec
|
|
|
|
# We need a newish Rake since Active Job sets its test tasks' descriptions.
|
|
gem "rake", ">= 11.1"
|
|
|
|
gem "mocha"
|
|
|
|
gem "capybara", ">= 2.15"
|
|
|
|
gem "rack-cache", "~> 1.2"
|
|
gem "coffee-rails"
|
|
gem "sass-rails"
|
|
gem "turbolinks", "~> 5"
|
|
|
|
# require: false so bcrypt is loaded only when has_secure_password is used.
|
|
# This is to avoid Active Model (and by extension the entire framework)
|
|
# being dependent on a binary library.
|
|
gem "bcrypt", "~> 3.1.11", require: false
|
|
|
|
# This needs to be with require false to avoid it being automatically loaded by
|
|
# sprockets.
|
|
gem "uglifier", ">= 1.3.0", require: false
|
|
|
|
# Explicitly avoid 1.x that doesn't support Ruby 2.4+
|
|
gem "json", ">= 2.0.0"
|
|
|
|
gem "rubocop", ">= 0.47", require: false
|
|
|
|
# https://github.com/guard/rb-inotify/pull/79
|
|
gem "rb-inotify", github: "matthewd/rb-inotify", branch: "close-handling", require: false
|
|
|
|
group :doc do
|
|
gem "sdoc", "~> 1.0"
|
|
gem "redcarpet", "~> 3.2.3", platforms: :ruby
|
|
gem "w3c_validators"
|
|
gem "kindlerb", "~> 1.2.0"
|
|
end
|
|
|
|
# Active Support.
|
|
gem "dalli"
|
|
gem "listen", ">= 3.0.5", "< 3.2", require: false
|
|
gem "libxml-ruby", platforms: :ruby
|
|
gem "connection_pool", require: false
|
|
|
|
# for railties app_generator_test
|
|
gem "bootsnap", ">= 1.1.0", require: false
|
|
|
|
# Active Job.
|
|
group :job do
|
|
gem "resque", require: false
|
|
gem "resque-scheduler", require: false
|
|
gem "sidekiq", require: false
|
|
gem "sucker_punch", require: false
|
|
gem "delayed_job", require: false
|
|
gem "queue_classic", github: "rafaelfranca/queue_classic", branch: "update-pg", require: false, platforms: :ruby
|
|
gem "sneakers", require: false
|
|
gem "que", require: false
|
|
gem "backburner", require: false
|
|
gem "delayed_job_active_record", require: false
|
|
gem "sequel", require: false
|
|
end
|
|
|
|
# Action Cable
|
|
group :cable do
|
|
gem "puma", require: false
|
|
|
|
gem "hiredis", require: false
|
|
gem "redis", "~> 4.0", require: false
|
|
|
|
gem "redis-namespace"
|
|
|
|
gem "websocket-client-simple", github: "matthewd/websocket-client-simple", branch: "close-race", require: false
|
|
|
|
gem "blade", require: false, platforms: [:ruby]
|
|
gem "blade-sauce_labs_plugin", require: false, platforms: [:ruby]
|
|
gem "sprockets-export", require: false
|
|
end
|
|
|
|
# Active Storage
|
|
group :storage do
|
|
gem "aws-sdk-s3", require: false
|
|
gem "google-cloud-storage", "~> 1.8", require: false
|
|
gem "azure-storage", require: false
|
|
|
|
gem "image_processing", "~> 1.2"
|
|
end
|
|
|
|
group :ujs do
|
|
gem "qunit-selenium"
|
|
gem "chromedriver-helper"
|
|
end
|
|
|
|
# Add your own local bundler stuff.
|
|
local_gemfile = File.expand_path(".Gemfile", __dir__)
|
|
instance_eval File.read local_gemfile if File.exist? local_gemfile
|
|
|
|
group :test do
|
|
gem "minitest-bisect"
|
|
|
|
platforms :mri do
|
|
gem "stackprof"
|
|
gem "byebug"
|
|
end
|
|
|
|
gem "benchmark-ips"
|
|
end
|
|
|
|
platforms :ruby, :mswin, :mswin64, :mingw, :x64_mingw do
|
|
gem "nokogiri", ">= 1.8.1"
|
|
|
|
# Needed for compiling the ActionDispatch::Journey parser.
|
|
gem "racc", ">=1.4.6", require: false
|
|
|
|
# Active Record.
|
|
gem "sqlite3", "~> 1.3.6"
|
|
|
|
group :db do
|
|
gem "pg", ">= 0.18.0"
|
|
gem "mysql2", ">= 0.4.10"
|
|
end
|
|
end
|
|
|
|
platforms :jruby do
|
|
if ENV["AR_JDBC"]
|
|
gem "activerecord-jdbcsqlite3-adapter", github: "jruby/activerecord-jdbc-adapter", branch: "master"
|
|
group :db do
|
|
gem "activerecord-jdbcmysql-adapter", github: "jruby/activerecord-jdbc-adapter", branch: "master"
|
|
gem "activerecord-jdbcpostgresql-adapter", github: "jruby/activerecord-jdbc-adapter", branch: "master"
|
|
end
|
|
else
|
|
gem "activerecord-jdbcsqlite3-adapter", ">= 1.3.0"
|
|
group :db do
|
|
gem "activerecord-jdbcmysql-adapter", ">= 1.3.0"
|
|
gem "activerecord-jdbcpostgresql-adapter", ">= 1.3.0"
|
|
end
|
|
end
|
|
end
|
|
|
|
platforms :rbx do
|
|
# The rubysl-yaml gem doesn't ship with Psych by default as it needs
|
|
# libyaml that isn't always available.
|
|
gem "psych", "~> 3.0"
|
|
end
|
|
|
|
# Gems that are necessary for Active Record tests with Oracle.
|
|
if ENV["ORACLE_ENHANCED"]
|
|
platforms :ruby do
|
|
gem "ruby-oci8", "~> 2.2"
|
|
end
|
|
gem "activerecord-oracle_enhanced-adapter", github: "rsim/oracle-enhanced", branch: "master"
|
|
end
|
|
|
|
# A gem necessary for Active Record tests with IBM DB.
|
|
gem "ibm_db" if ENV["IBM_DB"]
|
|
gem "tzinfo-data", platforms: [:mingw, :mswin, :x64_mingw, :jruby]
|
|
gem "wdm", ">= 0.1.0", platforms: [:mingw, :mswin, :x64_mingw, :mswin64]
|