楼上#5 对的,我记错了。
(4-(element.length)).times {element = "0" + element}
最后返回的值是 .times 方法的值。暂时没遇到问题,主要都忘了 webpack 怎么设置了,如果要改配置就很费时间 😅
其它好说看到 webpacker 心里一惊赶紧去找升级文档。
去掉 =
,不用 setter 方法
def safe_attributes(attrs, user=User.current, type='father')
logger.info("attrs.class.name => #{attrs.class.name}") #log日志中:attrs.class.name => Array
...
do something
...
end
另外注意 user=User.current
有隐患,默认值不用简单类型而是线程变量可能会有 bug,曾经默认值的计算时机变动过一次。
方法后面加 =
是 setter method,解析器会特殊处理,setter 方法只会接受一个参数,并且方法的返回值也是这个参数。如果参数有多个,他们会当作一个数组。
例子:
def test=(a, b = 'b', c = 'c')
puts a.inspect
puts b.inspect
puts c.inspect
end
self.test = 1, 2, 3
结果:
[1, 2, 3]
"b"
"c"
我没搜到官方文档,有知道的可以补充一下。
setter 方法以前坛里有一些讨论 https://ruby-china.org/topics/24631
没看到问题。
db 启动状态是正常的。
在 web 容器里用 psql 连不到数据库是正常的,要加上数据库的 host,username, password。
psql -h db -U postgres -d DBName
# 密码 password
# DBName 按环境不同
如果 config/database.yml
设置正确,则可以
bin/rails db
楼主要了解到 web 和 db 是两部主机,之间是通过网络通信。
DirectUpload 是上传到储存后端,根据配置可以是本地文件储存或者 S3 一类的云储存,本地文件储存是由 Rails 提供了一个 API。
印象中 DirectUpload 是这样一个流程:
ActiveStorage 有个 DirectUpload 的类,通过手动 create 可以控制它上传的时间,但是要看看源码才理解它怎么用,文档不够详细。
其实跟 vue 没啥关系,前端实现都共通。
我在 mac 下也是在 docker 内开发,也建议开发团队用 docker 同步开发环境。
不过 docker 对于新手来说始终是另外一层需要学习的知识,避免问题交叉可以尽量往后放一放。
听说 WSL2 有很大进步,不知道能不能作为新手开发环境,如果有人写一写就好了,我没有 Windows 环境做不了。
访问共享资源的例子
这贴已经不讨论技术了,就此锁帖。
小马过河
“中台,我信了你的邪” https://36kr.com/p/1725013082113
Mac
k8s 太难用了需要专职运维才行,开发人员需要更简洁的 interface。
以前某浏览器曾经做过这个功能,然后某些网站没有遵循 RESTFul,有些修改资源的操作用 GET 请求,导致浏览器误执行,后来就取消了这个功能。所以用这个机制要确保网站都用了正确的 HTTP 动作。
与其排除不执行 perfetch 的链接,感觉用显式设置打开 prefetch 比较好。
我是在开发环境用 docker 几年了,每个项目都要有隔离空间。但是生产环境用不用还要看情况,目前只有 heroku 一家的 docker 部署环境能让我满意(便利方面),k8s 已经看懂不应该让开发人员直接使用。
看来是 /index.html
不用绝对路径会造成循环重定向。
试试
try_files $uri /index.html;
如果 ubuntu 足够新,例如 20.04,那么直接用源里面的就行了。
dist 里面是不是只有一个 index.html 页面,其它都是 js css?
upstream app {
server 127.0.0.1:3002
}
server {
listen 443 ssl;
server_name www.udask.net udask.net;
ssl on;
ssl_certificate /etc/nginx/cert/udask.pem;
ssl_certificate_key /etc/nginx/cert/udask.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers d...;
ssl_prefer_server_ciphers on;
root /home/udasker/udaskweb/front_web/dist; #这里是vuejs的build文件
try_files $uri/index.html $uri index.html; # <- 这里加 index.html 到末尾
location ~ ^/api/ {
proxy_pass http://app; #后端rails服务 使用3002端口
proxy_set_header Real-IP $remote_addr;
proxy_set_header Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header NginX-Proxy true;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_redirect off;
autoindex_exact_size on;
autoindex_localtime on;
proxy_read_timeout 240s;
}
}
版本一,Rails 只处理 /api 路径,404 由 nginx 处理(可以设置用 dist 里面的 404 页面):
upstream app {
server 127.0.0.1:3002
}
server {
listen 443 ssl;
server_name www.udask.net udask.net;
ssl on;
ssl_certificate /etc/nginx/cert/udask.pem;
ssl_certificate_key /etc/nginx/cert/udask.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers d...;
ssl_prefer_server_ciphers on;
root /home/udasker/udaskweb/front_web/dist; #这里是vuejs的build文件
try_files $uri/index.html $uri;
location ~ ^/api/ {
proxy_pass http://app; #后端rails服务 使用3002端口
proxy_set_header Real-IP $remote_addr;
proxy_set_header Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header NginX-Proxy true;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_redirect off;
autoindex_exact_size on;
autoindex_localtime on;
proxy_read_timeout 240s;
}
}
版本二,Rails 接管 404 页面:
upstream app {
server 127.0.0.1:3002
}
server {
listen 443 ssl;
server_name www.udask.net udask.net;
ssl on;
ssl_certificate /etc/nginx/cert/udask.pem;
ssl_certificate_key /etc/nginx/cert/udask.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers d...;
ssl_prefer_server_ciphers on;
root /home/udasker/udaskweb/front_web/dist; #这里是vuejs的build文件
try_files $uri/index.html $uri @app;
location @app {
proxy_pass http://app;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header NginX-Proxy true;
proxy_redirect off;
root /home/udasker/udaskweb/front_web/dist;
autoindex_exact_size on;
autoindex_localtime on;
proxy_read_timeout 240s;
}
}
没有实操,不一定对。
感觉 location @app
是不是可以整个删掉,前面已经设置了 root 和 try_files 了。
upstream app 指向的是 sock file,改成 3002 端口。