運用をしていてpaperclipから呼び出すimagemagickのコマンドの負荷を少しでも下げたい場合がある
paperclipのこのメソッドからコマンド実行するときにioniceとniceを付ける
helpers.rbのrunメソッドをoverrideする
- 開発環境がmacの場合ioniceを入れるのが面倒そうだったのでproductionのみ付けるようにした
- 優先度は最低(
ionice -c3 -n7 nice -n19
)にした
config/initializers/paperclip_helpers.rbにoverrideを記述する
require 'paperclip/helpers'
Paperclip::Helpers.module_eval do
def run(cmd, arguments = "", interpolation_values = {}, local_options = {})
command_path = options[:command_path]
Cocaine::CommandLine.path = [Cocaine::CommandLine.path, command_path].flatten.compact.uniq
if logging? && (options[:log_command] || local_options[:log_command])
local_options = local_options.merge(:logger => logger)
end
Cocaine::CommandLine.new("#{Rails.env.production? ? 'ionice -c3 -n7 ' : ''}nice -n19 #{cmd}", arguments, local_options).run(interpolation_values)
end
end