我正在使用 Carrierwave 和 mini_magick 来调整图像大小,生成缩略图。它对于 jpg 和 png 等静态图像效果很好,但当我尝试 gif 时,它会扭曲它。您可以在下面查看原始示例与调整大小的示例。知道如何让它生成 gif 拇指而不破坏它吗?
原始 GIF :) https://i.stack.imgur.com/iCSdl.jpg
生成的缩略图 GIF :( https://i.stack.imgur.com/rfEcO.jpg 
ps为什么缩略图的尺寸比原来的大?原图为800*600px,缩略图为400*300px。无论如何,生成缩略图的全部目的是具有较小的文件大小。
谢谢你!
图片上传器.rb
class ImageUploader < CarrierWave::Uploader::Base
# Include RMagick or MiniMagick support:
# include CarrierWave::RMagick
include CarrierWave::MiniMagick
# Choose what kind of storage to use for this uploader:
storage :file
# storage :fog
# Override the directory where uploaded files will be stored.
# This is a sensible default for uploaders that are meant to be mounted:
def …Run Code Online (Sandbox Code Playgroud) 因此,过去几周我一直将我的应用程序部署到同一个 heroku 服务器,并且运行良好。
\n\n我刚刚尝试部署最新的代码,并在尝试运行时收到此错误:
\n\nheroku run rails db:migrate\nRun Code Online (Sandbox Code Playgroud)\n\n我得到的错误是这样的:
\n\n/usr/bin/env: \xe2\x80\x98ruby.exe\\r\xe2\x80\x99: No such file or directory problem\nRun Code Online (Sandbox Code Playgroud)\n\n我查看了有关此问题的许多其他主题并听取了他们的建议。
\n\n最常见的答案是更改 bin/bundle、bin/rails 和 bin/rake 文件夹的第一行:
\n\n#!/usr/bin/env ruby.exe\nRun Code Online (Sandbox Code Playgroud)\n\n对此:
\n\n#!/usr/bin/env ruby\nRun Code Online (Sandbox Code Playgroud)\n\n但这对我不起作用并且我不断收到相同的错误
\n\n对于这个问题还有其他可能的解决方案吗?
\n\n我在 Windows 机器上运行
\nRails 指南描述了使用常规 Rails 应用程序运行 ActionCable 独立服务器的机会。但我想了解这种方法在 Docker 容器中运行 Rails 应用程序的好处。例如,为什么它对于缩放可能有用?
我有一个在生产环境中的 Nginx 和 Puma 上运行的 Rails 应用程序。
网页加载出现问题(TTBF 延迟),我正在尝试找出原因。
在 Production.log 的后端,我看到我的网页在134 毫秒内渲染得足够快:
Completed 200 OK in 134ms (Views: 49.9ms | ActiveRecord: 29.3ms)
Run Code Online (Sandbox Code Playgroud)
但在浏览器中我看到 TTFB 是311.49ms:
我知道设置中可能存在问题,或者进程计数可能不是最佳的,但找不到约 177 毫秒延迟的原因。.将不胜感激。
下面列出了我的 VPS 属性和配置。
环境
VPS 属性
nginx.conf
user www-data;
worker_processes auto;
pid /run/nginx.pid;
events {
worker_connections 8096;
multi_accept on;
use epoll;
}
http {
# Basic Settings
sendfile on; …Run Code Online (Sandbox Code Playgroud) 我使用此命令创建了一个脚手架(Rails 5.2.1.1):
rails g scaffold EmailAddress value:string:index
email_address_type:references
email_addressable:references{polymorphic}
position:integer
Run Code Online (Sandbox Code Playgroud)
这导致了这个迁移文件:
class CreateEmailAddresses < ActiveRecord::Migration[5.2]
def change
create_table :email_addresses do |t|
t.string :value
t.references :email_address_type, foreign_key: true
t.references :email_addressable, polymorphic: true
t.integer :position
t.timestamps
end
add_index :email_addresses, :value
end
end
Run Code Online (Sandbox Code Playgroud)
不幸的是,这会引发以下错误rails db:migrate:
Caused by:
ArgumentError: Index name
'index_email_addresses_on_email_addressable_type_and_email_addressa...'
on table 'email_addresses' is too long; the limit is 62 characters
Run Code Online (Sandbox Code Playgroud)
我了解问题和错误。我想知道最好的解决方案是什么,因为索引不是add_index由某些背景魔法明确设置的。
我是 Rails 新手,正在尝试为我的网站创建注册表单。它工作得很好,但有一个例外——它将用户保存到数据库中,而不首先检查它们是否存在。在保存之前如何检查以确保用户存在?
用户控制器:
class UsersController < ApplicationController
def new
@user = User.new
end
def create
@user = User.new(user_params)
if @user.exists?(:username) == false && @user.save(user_params)
session[:id] = @user.id
redirect_to posts_path
else
redirect_to '/signup'
end
end
def edit
end
def update
end
def show
end
def destroy
end
private
def user_params
params.require(:user).permit(:username, :jabber_id, :password)
end
end
Run Code Online (Sandbox Code Playgroud) 在我的密码更改控制器中,我允许用户更改密码,前提是他们拥有有效的密码请求令牌。
然而,在他们已经使用过它之后,它就会变得无效,因此如果他们想再次重新使用它,用户会在模型上收到错误消息:
Reset password token is invalid
Run Code Online (Sandbox Code Playgroud)
这是来自 Devise 本身。如何将此消息修改为:
User reset password token already used
Run Code Online (Sandbox Code Playgroud)
如果我无法通过某些配置更改消息,那么是否有一种方法可以让我检查令牌是否有效?
这样我就可以在这种情况下手动呈现此消息
我正在将 Ruby on Rails 应用程序从 5.0 升级到 5.2,并在尝试调用任何定义了关系的模型时收到此错误:
ArgumentError (A class was passed to :class_name but we are expecting a string.)
Run Code Online (Sandbox Code Playgroud)
导致问题的代码
belongs_to :manufacturer,
foreign_key: :org_id_mnfr,
class_name: Organization::Manufacturer
Run Code Online (Sandbox Code Playgroud) 我通常skip_before_action :verify_authenticity_token在 API 控制器中编写,但我刚刚发现还有一个protect_from_forgery except :action. 有什么区别以及我什么时候应该使用哪一个?
如何在文本编辑器中打开rails“credentials.yml.enc”文件以将我的凭据存储在rails 5.2中的该文件中?
ruby-on-rails-5 ×10
ruby ×3
actioncable ×1
activerecord ×1
carrierwave ×1
devise ×1
gif ×1
heroku ×1
minimagick ×1
nginx ×1
performance ×1
puma ×1
rubygems ×1