核心就这几行
git pull
bundle install --deployment
bin/rails asset:precompile
bin/rails db:migrate
bin/rails server -e production
写到脚本就是脚本部署,远程 ssh 执行就是远程部署,写到 Dockerfile 就是容器部署。
有回复的主题不能删除,可以编辑清除内容。
我自己写的。
Fresh - The next-gen web framework. https://fresh.deno.dev/
完了完了,下一代又出来了。
可以挖深一点源码有什么不同。
Python 早就有 Django 了。
我留意你运行 gem install 的时候用了 sudo,但安装目录是 homebrew。homebrew 的安装目录是属于用户的,不需要 sudo,所以出现了权限的问题。
运行 gem env
,把 EXECUTABLE DIRECTORY
的路径加到 PATH 里。
例如在 ~/.bash_profile
里面加入以下内容:
export PATH="/usr/local/lib/ruby/gems/2.7.0/bin:$PATH"
路径要替换成你自己的路径。
这是声明一个命名 volume 让 compose 放到默认目录。
首选部署平台或编排系统的 secrets 机制,有的是通过文件提供,有的是通过环境变量提供。
app 用 dotenv 管理 env,可以同时支持 ENV 变量和 .env 文件两种形式。
用 puma 就行了,Rails 新建项目从开发环境就默认 puma。
写了一篇日志记录解决的原理 https://geeknote.net/Rei/posts/1222
验证过的方法:
在 config/initializers/assets.rb 加入:
Rails.application.config.assets.paths << Rails.root.join('node_modules/@fortawesome/fontawesome-free/webfonts')
在 application.sass.scss 加入:
$fa-font-path: ".";
@import "@fortawesome/fontawesome-free/scss/fontawesome.scss";
@import "@fortawesome/fontawesome-free/scss/solid.scss";
其他不用改,包括 manifest.json。
缺少 mysqlclient 的库,楼主没贴是什么系统没法提供方案。
例如 ubuntu 要装的是 libmysqlclient-dev
编辑:行不通,看 18 楼。
我看了下 fontawesome 的源码,也许要加上 fa-font-path 变量,从 scss 编译。
因为 fa-font-path 默认是相对路径 '../webfonts',上面的 link_tree 已经进入了 webfonts 这个目录。
$fa-font-path: '';
// You probably already include the core styles
@import "./fontawesome/scss/fontawesome.scss";
// For Duotones you need both of these files
@import "./fontawesome/scss/duotone.scss";
@import "./fontawesome/scss/_duotone-icons.scss";
// You can include all the other styles the same as before
@import "./fontawesome/scss/solid.scss";
@import "./fontawesome/scss/brands.scss";
编辑:行不通,看 18 楼。
因为 sass 不处理引用的资源(字体或者图片),这还需要 assets pipeline 处理。
如果 assets pipeline 用的是 sprocket,那么可以在 manifest.js 里面添加设置:
//= link_tree ../../../node_modules/@fortawesome/fontawesome-free/webfonts
注意这个路径是否匹配你的安装路径。设置这个后,sprocket 会把这个 webfonts 目录下的资源加入 pipeline,并且替换 css 里面用 url() 引用的资源地址(加上 digest)。
如果还有问题可以参考这个 issue https://github.com/rails/cssbundling-rails/issues/22#issuecomment-1030735501 。
需要贴代码和日志。
原生 dom 用 js 更改 input 的值是不会触发事件的,要手动触发,可能是遵循了原生的惯例。
DOM 不是什么见不得人的事情,就好像一个人只用 ORM 不关心 SQL,我会怀疑他能否写出高效的查询,遇到问题能不能自己解决。
New Suspense SSR Architecture in React 18 https://github.com/reactwg/react-18/discussions/37
React 也在发展类似的技术:
这些在 React 都还是前沿技术,也不难理解为什么有人觉得 hotwire 难了。
前端框架可以让开发忽略一些细节,但是 Web 是一个整体,如果一直割裂看待前端和后端,早晚遇到瓶颈。
全栈是殊途同归,不信请看:
https://staging-cn.vuejs.org/guide/scaling-up/ssr.html
什么是 SSR?
Vue.js 是一个用于构建客户端应用的框架。默认情况下,Vue 组件在浏览器中生成和操作 DOM 作为输出。然而,我们也可以将相同的组件在服务端渲染成 HTML 字符串,直接返回给浏览器,最后再将静态的 HTML“激活” (hydrate) 为完全交互式的客户端应用。
一个由服务端渲染的 Vue.js 应用也可以被认为是“同构的”或“通用的”,因为应用的大部分代码同时运行在服务端和客户端。
区别是你愿意用 JS 全栈,还是 Rails 全栈。
我也刚开始学,看上去就像 stimulus + react,而且是基于 web component。
从技术上看,顶楼的方法没问题。stimulus 负责绑定服务端渲染的组件,react 负责客户端视图渲染和行为,他们是互补的关系。lit 综合了两者的优点,似乎是更好的选择,我未来也打算试用 lit。
从管理上看,选择的技术要符合团队的技术栈,只要团队都能接受就行。现实上全栈的人难招,市场上前端几乎代表着前后端分离了,如果业务需要团队在一年内扩展 100 人,那么只能适应现状走分离路线。但对于小公司,未来一年最大问题是是否存活,开发人员只有几个人,每个人什么都干,那么全栈是比较好的选择。
importmap 最大作用是让 rails 默认创建的时候不依赖任何打包工具,有打包需求的还是应该用打包器。
第一个问题,没有加载成功是指找不到这个带 hash 的文件,还是加载了文件但是内容报错?尝试以下操作:
或者直接在 builds 目录新建一个 foo.js,然后在页面引用看看是否工作,可以排除很多其他干扰。
第二个问题涉及 ES Module 的工作方式,根据每个 js 库的情况不同要分别处理,最好是引用的库自己有关于 esbuild 的说明。
例如找不到 jQuery 的问题,是因为这段代码:
import 'jquery'
这是引用了文件,但没有导入模块到这个上下文。要使用 jquery 里的 $
或者 jQuery
方法,需要这样:
import $ from 'jquery'
但是这个 $
只能在 application.js 这个文件的上下文用,jquery.qrcode
和其他依赖 window.jQuery
对象的库依然找不到,这时候可以把 $
绑定到全局:
import $ from 'jquery'
window.$ = window.jQuery = $
我猜想你的 webpacker 配置设置了:
new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery',
});
就是做了类似的事。
es module 也是这几年才成为事实标准的,有的库不一定做了相应的适配,得逐个看情况处理。所以这个切换并不是很容易的。
用 docker 可以把所有系统依赖包括 ruby, postgres, redis 都写成配置文件(docker compose),难度大大低于单独处理每个依赖,最难的地方就在于第一步:开始学习。
我曾经通过微信指导让一个朋友在 windows 主机上通过 docker compose 运行单独给他写的应用。
这是把论坛当博客用了。
内容太少了,而且排版不良,建议参考招聘板块其他帖子。
@jinxin238357 已禁言
这名用户发送了很多巨魔回复,警告一次,如果不改正将会禁言。其他人无需跟他互动。