所以我在做一个Rails应用程序。它生成OG图像,绘制成用户输入的文本。例如,输入"Hello“,保存它,然后应用程序生成写到"Hello”的OG映像。
但这一错误却发生在以下情况:

应用程序/控制器/审查_控制器.reviews
include SetupOgbImage
def create
@review = current_user.active_reviews.create(create_params)
@review.image = build(@review.content)
if @review.save
flash[:success] = "Successfully added a review!"
redirect_to review_path(id: @review.id)
else
flash[:alert] = "Failed to add a review."
redirect_to user_path(id: @review.reviewed_id)
end
end应用程序/控制器/关注点/setup_ogb_Image.rb
module SetupOgbImage
def build(text)
text = prepare_text(text)
img = MiniMagick::Image.open(Settings.ogb.base_image_path)
img.combine_options do |config|
config.font Settings.ogb.font_path
config.fill Settings.ogb.color
config.gravity Settings.ogb.gravity
config.pointsize Settings.ogb.font_size
config.draw "text #{Settings.ogb.text_position} #{text}"
end
img
end
def prepare_text(text)
text.scan(/.{1,#{Settings.ogb.indention_count}}/)[0...Settings.ogb.row_limit].join("\n")
end
endsettings.yml
ogb:
base_image_path: ./app/assets/images/ogb_bg_image.png
gravity: center
text_position: "0,30"
font_path: ./app/assets/fonts/Hind-Medium.ttf
font_size: 24
color: "#fff"
indention_count: 60
row_limit: 10
format:
uuid: !ruby/regexp /\A[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\z/发布于 2019-09-15 04:55:16
您应该将文本放入引号中,否则,shell即执行命令,处理“Hello”和“world!”作为调用mogrify中的两个不同参数
# ⇓ ⇓
config.draw "text #{Settings.ogb.text_position} '#{text}'"https://stackoverflow.com/questions/57940344
复制相似问题