当前位置: 首页 > news >正文

[ruby on rails]rails6.0升级6.1

1.准备工作

在开始升级过程之前,我们有一些建议的准备工作。

  • 升级的时候,最好一个版本一个版本升级,比如6.0到6.1再到7.0,不要一次从6.0到7.0
  • 至少80%的测试覆盖率,测试真的很重要,能确保升级快速完成。
  • 本地新开分支升级,测试全部跑过后,再合到staging环境让测试人员过一遍。
  • 可以通过使用RailsBump检查你的Gemfile.lock是否有不兼容之处。
  • 根据gemfile.lock把gemfile中的gem都固定原来版本,只升级rails,后续有精力再升级gem

2.Rails指南

查阅官方的Rails指南,并遵循你的应用程序所需的任何步骤,这一点很重要。

3. 升级

使用rails app:update进行升级

4. webpack

  • 6.0里是bin/webpack bin/webpack-dev-server命令
  • 6.1里使用rails webpacker:install命令会生成bin/webpacker bin/webpacker-dev-server命令,都保留即可
  • 使用rails webpacker:install命令还会更新package.json yarn.lock文件,建议升级rails时不要更新,等升级完稳定后可以考虑升级

5.zeitwerk

  • Zeitwerk:如果你的应用程序仍然在经典模式下运行,你需要切换到zeitwerk模式。也没有设置自动加载模式的配置点,config.autoloader= 已经被删除。如果你把它设置为:zeitwerk ,只要把它删除即可。查看我们写的关于Zeitwerk升级的文章。
  • 使用Rails.application.config.autoloader查看现在的模式
  • 使用rails zeitwerk:check检查是否需要添加appliaction.rb中的 config.eager_load_paths ,如果打印的不是All is good!,则根据提示添加:
# config/application.rb
config.eager_load_paths << Rails.root.join('app', 'models', 'prod_readonly')
config.eager_load_paths << Rails.root.join('lib')

6.valid

  • record.errors[attribute] << message改为record.errors.add(attribute, :invalid, message)
 # record.errors[attribute] << (options[:message] || '手机号格式错误')record.errors.add(attribute, :invalid, message: options[:message] || '手机号格式错误')    # record.errors[:owner] << '无法对自己的货品进行竞拍'record.errors.add(:owner, :invalid, message: '无法对自己的货品进行竞拍')# record.errors[:base] << '无法对自己的回流单创建订单'record.errors.add(:base, :invalid, message: '无法对自己的回流单创建订单')

7. 提示BigDecimal等错误或警告

# config/application.rbconfig.active_record.yaml_column_permitted_classes = [Symbol, Date, Time, BigDecimal,ActiveSupport::TimeWithZone, ActiveSupport::TimeZone]

6. 其他

  • Spring。如果你的应用程序使用Spring,它需要升级到至少3.0.0版本,否则你会得到undefined method 'mechanism=' for ActiveSupport::Dependencies:Module

  • Sprockets现在是一个可选的依赖项。Rails不再依赖sprockets-rails了。如果你的应用程序仍然需要使用Sprockets,你需要明确地添加该依赖关系。如果你想把你的javaScript代码从sprockets迁移到Webpacker,可以看看这个博文。

相关文章:

[ruby on rails]rails6.0升级6.1

1.准备工作 在开始升级过程之前&#xff0c;我们有一些建议的准备工作。 升级的时候&#xff0c;最好一个版本一个版本升级&#xff0c;比如6.0到6.1再到7.0&#xff0c;不要一次从6.0到7.0至少80%的测试覆盖率&#xff0c;测试真的很重要&#xff0c;能确保升级快速完成。本…...

大模型日报 2024-07-04

大模型日报 2024-07-04 一、大模型资讯 大厂高管转战 AI 创业盘点&#xff1a;超 25 人&#xff0c;覆盖全产业链&#xff0c;AI 应用最热门 涉及多家互联网大厂高管加入生成式 AI 创业&#xff0c;涵盖多个领域及融资情况。 腾讯云发布自研大数据高性能计算引擎 Meson 软硬一体…...

技术成神之路:设计模式(一)单例模式

在软件设计中&#xff0c;有时我们希望某个类的实例始终是唯一的&#xff0c;即无论在何处访问这个类&#xff0c;都能够得到同一个实例。单例模式&#xff08;Singleton Pattern&#xff09;就是为了解决这个问题而产生的。单例模式确保一个类只有一个实例&#xff0c;并提供一…...

四、(3)补充beautifulsoup、re正则表达式、标签解析

四、&#xff08;3&#xff09;补充beautifulsoup、re正则表达式、标签解析 beautifulsoupre正则表达式正则提取标签解析 beautifulsoup 补充关于解析的知识 还需要看爬虫课件 如何定位文本或者标签&#xff0c;是整个爬虫中非常重要的能力 无论find_all&#xff08;&#xff…...

Vscode快捷键崩溃

Vscode快捷键崩溃 Linux虚拟机下使用vscode写代码【ctrlA&#xff0c;CtrlC&#xff0c;CtrlV】等快捷键都不能使用&#xff0c;还会出现“NO text insert“等抽象的指令&#xff0c;问题就是不知道什么时候装了一个VIM插件&#xff0c;让他滚出电脑》》》...

Spring Boot中的开发工具与插件推荐

Spring Boot中的开发工具与插件推荐 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们来聊聊Spring Boot中的开发工具与插件推荐。Spring Boot作为一种简…...

qt6 获取百度地图(一)

需求分析&#xff1a; 要获取一个地图&#xff0c; 需要ip 需要根据ip查询经纬度 根据经纬度查询地图 另外一条线是根据输入的地址 查询ip 根据查询到的ip查地图‘ 最后&#xff0c;要渲染地图 上面这这些动作&#xff0c;要进行http查询&#xff1a; 为此要有三个QNet…...

overlap的uORF对TE的抑制程度为什么显著高于non-overlap的uORF

在翻译调控中&#xff0c;上游开放阅读框&#xff08;uORFs&#xff09;对主开放阅读框&#xff08;main ORF&#xff09;的抑制效果有很大差异&#xff0c;尤其是重叠的uORFs&#xff08;overlap uORFs&#xff09;通常比非重叠的uORFs&#xff08;non-overlap uORFs&#xff…...

面向高精度导航定位领域的UM980RTK定位模块

UM980 是和芯星通自主研发的新一代 BDS/GPS/GLONASS/Galileo/QZSS 全系统全频高精度 RTK 定位模块&#xff0c;基于和芯星通自主研发的新一代射频基带及高精度算法一体化GNSS SoC 芯片—NebulasIV 设计。可同时跟踪 BDS, GPS, GLONASS, Galileo, QZSS, NavIC, SBAS, L-Band* 等…...

145-四路16位125Msps AD FMC子卡模块

一、概述 该板卡可实现4路16bit 125Msps AD 功能&#xff0c;是xilinx开发板设计的标准板卡。FMC连接器是一种高速多pin的互连器件&#xff0c;广泛应用于板卡对接的设备中&#xff0c;特别是在xilinx公司的所有开发板中都使用。该AD&#xff0c;DA子卡模块就专门针对xilinx开发…...

服务器被劫持

当服务器被劫持时&#xff0c;可以采取一系列措施来修复和加强安全防护&#xff0c;确保服务器的安全性和数据的完整性。以下是一些建议的步骤和策略&#xff1a;12 确认服务器被劫持&#xff1a;首先需要确认服务器是否被劫持。这可以通过检查服务器的日志、网络流量、以及任…...

康姿百德磁性床垫好不好,效果怎么样靠谱吗

康姿百德典雅款床垫&#xff0c;打造舒适睡眠新体验 康姿百德床垫是打造舒适睡眠新体验的首选&#xff0c;其设计能够保护脊椎健康&#xff0c;舒展脊椎&#xff0c;让您享受一夜好眠。康姿百德床垫的面料选择也非常重要&#xff0c;其细腻亲肤的针织面料给您带来柔软舒适的触…...

[吃瓜教程]南瓜书第5章神经网络

1.M-P神经元 M-P神经元&#xff0c;全称为McCulloch-Pitts神经元&#xff0c;是一种数学模型&#xff0c;用于模拟生物神经元的功能。这个模型是由Warren McCulloch和Walter Pitts在1943年提出的。它是人工智能和计算神经科学领域中非常重要的早期模型。 M-P神经元接收n个输入…...

装饰模式解析:基本概念和实例教程

目录 装饰模式装饰模式结构装饰模式应用场景装饰模式优缺点练手题目题目描述输入描述输出描述题解 装饰模式 装饰模式&#xff0c;又称装饰者模式、装饰器模式&#xff0c;是一种结构型设计模式&#xff0c;允许你通过将对象放入包含行为的特殊封装对象中来为原对象绑定新的行…...

211.xv6——3(page tables)

在本实验室中&#xff0c;您将探索页表并对其进行修改&#xff0c;以简化将数据从用户空间复制到内核空间的函数。 开始编码之前&#xff0c;请阅读xv6手册的第3章和相关文件&#xff1a; kernel/memlayout.h&#xff0c;它捕获了内存的布局。kernel/vm.c&#xff0c;其中包含…...

yum使用报错:ImportError: /lib64/libxml2.so.2: file too short

系统版本&#xff1a;Rocky 8.10 报错信息&#xff1a; Traceback (most recent call last):File "/usr/lib64/python3.6/site-packages/libdnf/error.py", line 14, in swig_import_helperreturn importlib.import_module(mname)File "/usr/lib64/python3.6/i…...

【Android面试八股文】你是怎么保证Android设备的时间与服务器时间同步的?(使用NTP和TrueTime方案)

文章目录 一、网络时间协议(NTP)二、使用网络时间协议(NTP)2.1 使用系统提供的 NTP 服务器2.2 使用TrueTime2.2.1 引入TrueTime库2.2.2 初始化 TrueTime2.2.3 用法2.2.4 使用 TrueTime 获取时间2.2.4 自动更新时间2.2.5 注意事项二. 使用 HTTP 请求获取服务器时间2.1. 发送…...

解决Python爬虫开发中的数据输出问题:确保正确生成CSV文件

引言 在大数据时代&#xff0c;爬虫技术成为获取和分析网络数据的重要工具。然而&#xff0c;许多开发者在使用Python编写爬虫时&#xff0c;常常遇到数据输出问题&#xff0c;尤其是在生成CSV文件时出错。本文将详细介绍如何解决这些问题&#xff0c;并提供使用代理IP和多线程…...

SCI一区TOP|徒步优化算法(HOA)原理及实现【免费获取Matlab代码】

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2024年&#xff0c;SO Oladejo受到徒步旅行启发&#xff0c;提出了徒步优化算法&#xff08;Hiking Optimization Algorithm, HOA&#xff09;。 2.算法原理 2.1算法思想 HOA灵感来自于…...

Android的activity广播无法接收,提示process gone or crashing原因有可能是那些?

当Android的Activity无法接收广播&#xff0c;并且收到“process gone or crashing”的提示时&#xff0c;可能的原因有多种。以下是一些常见的原因和排查步骤&#xff1a; Activity生命周期问题&#xff1a; 如果Activity在广播发送之前就已经被销毁&#xff08;例如&#xf…...

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站&#xff0c;会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后&#xff0c;网站没有变化的情况。 不熟悉siteground主机的新手&#xff0c;遇到这个问题&#xff0c;就很抓狂&#xff0c;明明是哪都没操作错误&#x…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

【决胜公务员考试】求职OMG——见面课测验1

2025最新版&#xff01;&#xff01;&#xff01;6.8截至答题&#xff0c;大家注意呀&#xff01; 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:&#xff08; B &#xff09; A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

C++.OpenGL (14/64)多光源(Multiple Lights)

多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...

快刀集(1): 一刀斩断视频片头广告

一刀流&#xff1a;用一个简单脚本&#xff0c;秒杀视频片头广告&#xff0c;还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农&#xff0c;平时写代码之余看看电影、补补片&#xff0c;是再正常不过的事。 电影嘛&#xff0c;要沉浸&#xff0c;…...

三分算法与DeepSeek辅助证明是单峰函数

前置 单峰函数有唯一的最大值&#xff0c;最大值左侧的数值严格单调递增&#xff0c;最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值&#xff0c;最小值左侧的数值严格单调递减&#xff0c;最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...

MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用

文章目录 一、背景知识&#xff1a;什么是 B-Tree 和 BTree&#xff1f; B-Tree&#xff08;平衡多路查找树&#xff09; BTree&#xff08;B-Tree 的变种&#xff09; 二、结构对比&#xff1a;一张图看懂 三、为什么 MySQL InnoDB 选择 BTree&#xff1f; 1. 范围查询更快 2…...

android RelativeLayout布局

<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:gravity&…...

Modbus RTU与Modbus TCP详解指南

目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...