运行 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 已禁言
这名用户发送了很多巨魔回复,警告一次,如果不改正将会禁言。其他人无需跟他互动。
chatwoot 是个好的开源商业案例啊,他们 2017 年发布的时候没什么关注,2019 年快要放弃了就开源了,结果火了。现在关注的人多,也有商业模式。
感觉我中枪了呢,毕竟我也在 Twitter 做调研,也搞了个 XX 笔记,也还没赚到钱。
不知道楼主是不是已经创业成功了,有什么经验或者点子能分享,不然我不知道楼主吐槽这个有什么意义。
能被大多数人需要的东西,肯定有大公司做了,而垂直领域需要的东西,需要跟这个领域有接触,除非之前就在这个领域工作,否则很难凭空想出来。
从自己的需求出发,事前做调研,已经是较务实的做法了。按我实际经验,程序员可不会留面子说“不错”,大多数都是说“不需要”,“别人都能做,你有什么优势”。
创业成功的人 >>> 事前调研的人 > 事前不调研的人 >>> 干说不练的人。
foreign_key 主要看业务,需不需要数据库外健保证数据一致性。例如订单引用了产品,但是产品被删除了,订单处理就会出异常,这样就需要外健保护。
像是 test fixture 里面的数据引用了不存在的对象。
是的。生产环境均衡负载用云服务的,静态文件用 CDN。nginx 也可以这么用。基于文件共享的方案不适合容器。
我在用 atom,但是进入维护模式了。新选建议 vscode。