Tag: ruby on rails 5.2

Rail 5交换带有自定义重新加载器的ActionDispatch :: Reloader

我们有一个用例,用于在本地开发时将模拟引擎安装到进程会话,其中自定义会话中间件在请求通过时通过Net :: http请求调用模拟引擎。 当代码更改时,会触发重新加载器,并在此处调用ActiveSupport::Dependencies以开始卸载。 然后请求传递给我们的自定义会话中间件,并触发http请求。 但是,由于http请求调用可安装的引擎,它再次认为是相同的中间件,并且重新加载器再次卸载所有依赖项,这导致第一次重新加载超时。 因此,目标是能够跳过第二个请求的重新加载。 我在这里向ActionDispatch::Reloader添加了以下代码,它完全符合我的要求。 class Reloader < Executor def initialize(app, executor) super(app, executor) end def call(env) request = ActionDispatch::Request.new(env) return @app.call(env) if skip_request?(request) super(env) end def skip_request?(request) request.path_info.start_with?('/session') end end 然后我想让这个更干净的想法完全把它拉出来一个模块,然后从初始化器中做这样的交换 app.config.middleware.swap(::ActionDispatch::Reloader, MyModule::CustomReloaderMiddleware) 这是模块 require ‘action_dispatch’ module MyModule class CustomReloaderMiddleware < ActionDispatch::Executor def initialize(app, executor) @app, @executor = app, executor end […]

在Heroku上的新Rails 5.2.1应用程序中的Javascript无法正常工作

我认为Heroku的生产环境中的Rails 5应用程序中的JavaScript文件存在很大问题。 它虽然在本地工作 我的配置: Windows: 10 Education Rails: 5.2.1 Ruby: 2.4.4p296 Heroku: heroku/7.7.7 win32-x64 node-v10.7.0 postgres: postgres (PostgreSQL) 10.3 我现在将向您介绍我所做的步骤,以确认它不起作用,您可以尝试自己。 最后,您将获得一个指向bitbucket repo和Heroku上的应用程序的链接。 步骤1:创建新的Rails 5应用程序并切换到根文件夹 > rails new my_app –database=postgresql > cd my_app 第2步:生成控制器 > rails generate controller static_pages 第3步:编辑/ app / controllers / static_pages_controller文件 class StaticPagesController < ApplicationController def show end def destroy end end […]

ActiveRecord中的随机记录> = 5.2

到目前为止,从数据库获取随机记录的“常见”方法是: # Postgress Model.order(“RANDOM()”).first # MySQL Model.order(“RAND()”).first 但是,在Rails 5.2中执行此操作时,它会显示以下Deprecation警告: DEPRECATION WARNING:使用非属性参数调用的危险查询方法(其参数用作原始SQL的方法):“RANDOM()”。 Rails 6.0中不允许使用非属性参数。 不应使用用户提供的值调用此方法,例如请求参数或模型属性。 可以通过将它们包装在Arel.sql()中来传递已知安全值。 我对Arel并不熟悉,所以我不确定解决这个问题的正确方法是什么。

使用activestorage直接上传时如何在上传到S3时指定前缀?

使用标准S3配置: AWS_ACCESS_KEY_ID: [AWS ID] AWS_BUCKET: [bucket name] AWS_REGION: [region] AWS_SECRET_ACCESS_KEY: [secret] 我可以使用此Rails 5.2代码将文件上传到S3(使用直接上传)(仅显示相关代码): form.file_field :my_asset, direct_upload: true 在提交表单后,这将有效地将我的资产置于我的S3存储桶的根目录中。 如何指定前缀(例如“development /”,以便我可以模仿S3上的文件夹)?

DEPRECATION WARNING:使用非属性参数调用的危险查询方法(其参数用作原始SQL的方法)

我将rails 5.1.4 app更新为5.2.0。 我的一个模型中有以下范围: scope :by_category, lambda { |category_slug| category_ids = Category.find_by(slug: category_slug)&.subtree_ids where(category_id: category_ids) } 由于该范围,Rails返回错误: DEPRECATION WARNING: Dangerous query method (method whose arguments are used as raw SQL) called with non-attribute argument(s): “coalesce(\”categories\”.\”ancestry\”, ”)”. Non-attribute arguments will be disallowed in Rails 6.0. This method should not be called with user-provided values, such as […]