标签: ruby-on-rails-5

Rails 5 Carrierwave 和 MiniMagick 在调整缩略图大小时破坏了 gif

我正在使用 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)

ruby-on-rails gif carrierwave minimagick ruby-on-rails-5

1
推荐指数
1
解决办法
1275
查看次数

heroku /usr/bin/env: 'ruby.exe\r': 没有这样的文件或目录问题

因此,过去几周我一直将我的应用程序部署到同一个 heroku 服务器,并且运行良好。

\n\n

我刚刚尝试部署最新的代码,并在尝试运行时收到此错误:

\n\n
heroku run rails db:migrate\n
Run 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\n
Run Code Online (Sandbox Code Playgroud)\n\n

我查看了有关此问题的许多其他主题并听取了他们的建议。

\n\n

最常见的答案是更改 bin/bundle、bin/rails 和 bin/rake 文件夹的第一行:

\n\n
#!/usr/bin/env ruby.exe\n
Run Code Online (Sandbox Code Playgroud)\n\n

对此:

\n\n
#!/usr/bin/env ruby\n
Run Code Online (Sandbox Code Playgroud)\n\n

但这对我不起作用并且我不断收到相同的错误

\n\n

对于这个问题还有其他可能的解决方案吗?

\n\n

我在 Windows 机器上运行

\n

ruby-on-rails heroku ruby-on-rails-5

1
推荐指数
1
解决办法
3483
查看次数

独立 ActionCable 服务器有哪些优点?

Rails 指南描述了使用常规 Rails 应用程序运行 ActionCable 独立服务器的机会。但我想了解这种方法在 Docker 容器中运行 Rails 应用程序的好处。例如,为什么它对于缩放可能有用?

ruby ruby-on-rails ruby-on-rails-5 actioncable

1
推荐指数
1
解决办法
513
查看次数

如何正确设置 Nginx 以获得最小的 TTFB 延迟?

我有一个在生产环境中的 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 属性和配置。

环境

  • nginx 1.10.3
  • 美洲狮 3.12.0(导轨 5.2)
  • PostgreSQL
  • 西德克
  • 弹性搜索

VPS 属性

  • Ubuntu 16.04(64 位)
  • 8 核 (2.4 GHz)
  • 16GB 内存。
  • 网络带宽:1000Mbps

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)

performance nginx puma ruby-on-rails-5 time-to-first-byte

1
推荐指数
1
解决办法
2万
查看次数

ArgumentError:索引名称...太长;限制为 62 个字符

我使用此命令创建了一个脚手架(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由某些背景魔法明确设置的。

activerecord ruby-on-rails ruby-on-rails-5

1
推荐指数
1
解决办法
1646
查看次数

“存在吗?” 方法不起作用 - 尝试在保存到数据库之前检查用户是否存在

我是 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)

ruby ruby-on-rails ruby-on-rails-5

1
推荐指数
1
解决办法
1093
查看次数

如何自定义 Devise 错误消息?

在我的密码更改控制器中,我允许用户更改密码,前提是他们拥有有效的密码请求令牌。

然而,在他们已经使用过它之后,它就会变得无效,因此如果他们想再次重新使用它,用户会在模型上收到错误消息:

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 ruby-on-rails devise ruby-on-rails-5

1
推荐指数
1
解决办法
2355
查看次数

Ruby on Rails 5.2 升级 | ArgumentError(一个类已传递给 `:class_name`,但我们需要一个字符串。)

我正在将 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)

ruby-on-rails-5

1
推荐指数
1
解决办法
648
查看次数

Rails 中的 protected_from_forgery 和 verify_authenticity_token 有什么区别?

我通常skip_before_action :verify_authenticity_token在 API 控制器中编写,但我刚刚发现还有一个protect_from_forgery except :action. 有什么区别以及我什么时候应该使用哪一个?

ruby-on-rails ruby-on-rails-5

1
推荐指数
1
解决办法
913
查看次数

在编辑器中打开 Ruby on Rails 凭证加密文件

如何在文本编辑器中打开rails“credentials.yml.enc”文件以将我的凭据存储在rails 5.2中的该文件中?

rubygems ruby-on-rails ruby-on-rails-5

1
推荐指数
1
解决办法
4213
查看次数