惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

G
GRAHAM CLULEY
T
Tenable Blog
Know Your Adversary
Know Your Adversary
C
CXSECURITY Database RSS Feed - CXSecurity.com
P
Privacy International News Feed
S
Security Affairs
NISL@THU
NISL@THU
O
OpenAI News
Attack and Defense Labs
Attack and Defense Labs
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Hacker News: Ask HN
Hacker News: Ask HN
Webroot Blog
Webroot Blog
Schneier on Security
Schneier on Security
S
SegmentFault 最新的问题
S
Schneier on Security
G
Google Developers Blog
V
V2EX
C
Check Point Blog
U
Unit 42
Google DeepMind News
Google DeepMind News
T
Threatpost
阮一峰的网络日志
阮一峰的网络日志
T
The Exploit Database - CXSecurity.com
Recent Announcements
Recent Announcements
M
MIT News - Artificial intelligence
S
Secure Thoughts
博客园 - 司徒正美
Recorded Future
Recorded Future
P
Proofpoint News Feed
Spread Privacy
Spread Privacy
K
Kaspersky official blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
AI
AI
博客园 - 聂微东
N
News and Events Feed by Topic
SecWiki News
SecWiki News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
V
Vulnerabilities – Threatpost
P
Palo Alto Networks Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Engineering at Meta
Engineering at Meta
Recent Commits to openclaw:main
Recent Commits to openclaw:main
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
酷 壳 – CoolShell
酷 壳 – CoolShell
WordPress大学
WordPress大学
The Hacker News
The Hacker News
The Last Watchdog
The Last Watchdog
Project Zero
Project Zero
W
WeLiveSecurity
博客园 - Franky

博客园 - 柒零壹

Ubuntu 24.04 安装最新版podman@5.6.1 [转贴]在前端如何玩转 Word 文档 一个命令行参数解决open-webui镜像启动失败的问题(huggingface网站访问失败问题) Go Template 常用疑难知识点 从数据库中随机选取数据(基于golang,xorm) go-ElasticSearch TypedClient学习笔记 golang用pgx查询数据时如何将查询结果方便的放入Map中 go语言如何使用elastic官方客户端go-elasticsearch/v8实现数据批量更新 【转】网络常用颜文字(文字表情) GoCV下实现多图片单窗口内同时显示 解决GoCV/OpenCV不支持中文的问题 golang中xorm自动维护表结构自动导入数据的实现 [golang] gin的中间中调用Abort方法导致的带附件的表单提交时,浏览器报net::ERR_CONNECTION_RESET错误的原因及解决方法 [golang]filepath.Glob的缺陷,不支持多级目录 浏览器中javascript简易实现json数据保存到客户端 最简单搭建前端轻量级项目开发服务 [转]Three.js做一个酷炫的城市展示可视化大屏 [转]css实现不同样式的tooltip对话框小三角 puma web server如何监听所有IP地址
[原]升级项目到Rails7.0.3,使用自己手动方案编译打包css及js资源
柒零壹 · 2022-06-24 · via 博客园 - 柒零壹


一、 升级Rails到当前大版本的最新小版本
1,修改Gemfile中的版本号
vim中全局替换命令:":%s/6.0.3/6.1.6/g"
2,升级gem

升级bundle本身 

带版本号运行

3, 运行rails升级命令"rails app:update"

如果报错

rails aborted!
Psych::BadAlias: Unknown alias: default
/home/ruby/rubydev/projects/fas/config/environment.rb:5:in `<main>'
/home/ruby/rubydev/projects/fas/bin/rails:9:in `<top (required)>'
/home/ruby/rubydev/projects/fas/bin/spring:15:in `require'

因为 psych这个gem的原因,解决放方案:
修改Gemfile,添加

出现其他错误,根据提示解决,比如 可能需要 'yarn install --checkfiles'

二、升级到rails7.0.3

基本上重复上面的步骤

1,修改Gemfile中的版本号7.0.3
2,bundle
3, rails app:update

三、清理webpacker相关
1,删除一些文件

rm package.json
rm package-lock.json
rm bin/webpack*
rm bin/yarn
rm -rf node_modules/
rm -rf public/packs/
rm yarn.lock
rm yarn-error.log

下面这几个时必须删掉的,否则程序不能运行

rm -rf config/webpack
rm config/webpacker.yml
rm config/initializers/assets.rb

2,删除或注释掉无用gem,因为自己编译资源
#gem 'sass-rails', '>= 6'
#gem 'webpacker', '~> 4.0'
#gem 'turbolinks', '~> 5'
其中webpacker是必须删除的,否则启动失败。


3,删除config/中所有的配置文件中关于assets的配置,例如

#config.assets.quiet = true

  #config.assets.compile = false

 

不清除这些设置应用也无法启动

四、修改调整application.js 及 application.scss
1,修改app/javascript/packs/application.js
如下内容一律清除

require('jquery');
window.$ = $;
window.jQuery = $;
require("@rails/ujs").start()
//require("turbolinks").start()
require("@rails/activestorage").start()
//require("channels")
require("trix")
require("@rails/actiontext")

// Uncomment to copy all static images under ../images to the output folder and reference
// them with the image_pack_tag helper in views (e.g <%= image_pack_tag 'rails.png' %>)
// or the `imagePath` JavaScript helper below.
//
// const images = require.context('../images', true)
// const imagePath = (name) => images(name, true)

const images = require.context('../images', true);
const imagePath = (name) => images(name, true);

// libraries
//require('bulma/css/bulma.min.css');
require('font-awesome/css/font-awesome.min.css')

// app's style
require('../stylesheets/application.scss');

View Code

2,清理app/javascript/stylesheets/application.scss,删掉一切和自定义scss文件无关的引入。

3,处理原来打包的图片资源

a) 原来放在app/javascript/images中的图片资源,移动到public/images
b) 替换erb中的image_pack_tag 改为 使用<img src>静态引用。

<%= image_pack_tag 'logo-main.png', class: 'orbit-image'%>

修改为===>

<img src="images/logo-main.png" class="orbit-image">

五、修改layouts文件中app资源引入方式
1,原来打包的第三方js、css框架(如jquery,fontAwesome)放置到public目录下,改为静态引入:

<link rel="stylesheet" type="text/css" href="<%= root_path%>font-awesome/css/font-awesome.min.css"/> 
<script src="<%= root_path%>js/jquery-3.4.1/jquery.min.js"></script>

2,app相关js、css改为静态引入方式
首先,删除如下两行内容

<%= stylesheet_pack_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>

然后安装下列方式添加引用。

<link rel="stylesheet" type="text/css" href="<%= root_path%>packs/app.min.css"/>
<script type="text/javascript" src="<%= root_path%>packs/app.min.js"></script>

六、自己实现js,scss编译。
1,准备node环境。
安装node
全局方式安装esbuild

全局方式安装sass

2,添加文件bin/web-dev-server.sh

#! /usr/bin/bash
bash `/usr/bin/esbuild ./app/javascript/packs/application.js --outfile=./public/packs/app.min.js --watch --bundle --minify --sourcemap --color=true` &
/usr/bin/node /usr/bin/sass --watch --style=compressed ./app/javascript/stylesheets/application.scss ./public/packs/app.min.css &

七、分发时不再需要预编译。