我的第一个ActiveStorage项目在开发(仅 puma)上运行良好,但在生产(nginx/puma)上,我在下载显示为截断文件的大文件时遇到问题。
例如,上传的文件大小为 24.1 MB,下载后文件大小为 5 MB(截断)。
我主要上传 pdf 文件,上传的文件是完整的(在服务器上检查)并且预览工作正常。
所有环境都使用config.active_storage.service = :local
local:
service: Disk
root: <%= Rails.root.join("storage") %>
Run Code Online (Sandbox Code Playgroud)
下载网址是使用生成的rails_blob_path(document.doc, disposition: :inline)
我怀疑 puma 或 nginx 中的某个选项或参数导致下载完整文件失败。截至目前,我在日志中看不到任何错误。
upstream app {
# Path to Puma SOCK file, as defined previously
server unix:/home/deploy/rails/shared/sockets/puma.sock fail_timeout=0;
}
server {
listen 80;
root /home/deploy/rails/public;
try_files $uri/index.html $uri @app;
# Make site accessible from http://localhost/
server_name localhost;
location @app {
proxy_pass http://app;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host; …Run Code Online (Sandbox Code Playgroud) 我在Ubuntu linux上使用openscad命令从命令行生成模型.我最终成功运行了openscad命令,使用-D参数覆盖变量值:
$ openscad -o output.stl -D 'param1="name1"' -D 'param2="name2"' openscad-script.scad
Run Code Online (Sandbox Code Playgroud)
编辑:注意我们必须传递-D参数的方式,单引号和双引号必须根据因为Openscad文档.
但是当我从shell脚本生成并执行相同的命令时,openscad失败并出现错误:
$ ./myscript.sh value1 value2
Run Code Online (Sandbox Code Playgroud)
错误:第XX行中的分析器错误:语法错误无法解析文件'openscad-script.scad'!
其中XX =文件的最后一行.
#!/bin/bash
# run openscad command
param1="-D 'param1=\"$1\"'"
param2="-D 'param2=\"$2\"'"
echo "openscad -o $1-$2.stl $param1 $param2 openscad-script.scad"
openscad -o $1-$2.stl $param1 $param2 openscad-script.scad
Run Code Online (Sandbox Code Playgroud)
这看起来很简单,我仍然无法弄清楚opencad在运行命令时失败的原因.
谢谢你的帮助,
编辑:我发现了一种让它工作的方法,可能不是最好的
#!/bin/bash
# run openscad command
param1="-D 'param1=\"$1\"'"
param2="-D 'param2=\"$2\"'"
command = "openscad -o $1-$2.stl $param1 $param2 openscad-script.scad"
eval $command
Run Code Online (Sandbox Code Playgroud)