Rails:如何在 Heroku 上使用系统 zip 从 xml 模板制作 docx?

2023-12-15

我在本地工作,将模板文件存储在#{Rails.root}/tmp, using system "cd tmp/template; zip -r ../#{@filename} *"压缩文件,将 .docx(zip 存档)发送到 S3,然后发送到浏览器。问题是 Heroku 找不到这些文件。在创建 xml 文件之前,我从另一个位置复制模板目录(system "cp -R support/ser_template tmp/")。我理解 Heroku 的只读文件系统但我不能拥有#{Process.pid}我的文件名乱七八糟(Word 要求将 xml 文件命名为 document.xml)。

我是否可以将模板文件存储在 Amazon 上并仍然使用 Heroku 的系统 zip 实用程序?RubyZip 无法创建正确的 docx 档案.

编辑:这是代码:

require 'aws/s3'

class WordDocument
  include ConnectS3

  def initialize(content)
    connect_s3
    @pid = Process.pid
    @filename = "SER_" + Time.now.strftime("%Y%m%d-%H%M%S") + '.docx'
    system "cp -R #{Rails.root}/support/ser_template #{temp_path}"
    xml = File.open(xml_path, 'w')
    xml.puts content
    xml.close
    system "cd #{temp_path}; zip -r #{@filename} *"
    docx = File.open(temp_path + "/" + @filename, 'r')
    AWS::S3::S3Object.store(s3_path, docx, @s3_credentials["bucket"], :use_virtual_directories => true)
    AWS::S3::S3Object.grant_torrent_access_to s3_path, @s3_credentials["bucket"]
  end

  def temp_path
    "#{Rails.root}/tmp/#{@pid}_ser"
  end

  def xml_path
    temp_path + "/word/document.xml"
  end

  def path
    "https://s3.amazonaws.com/" + @s3_credentials["bucket"] + s3_path
  end

  def s3_path
    '/section_editor_reports/' + @filename
  end
end

你不能只在其中创建一个目录吗#{Rails.root}/tmp打电话,说,#{Process.pid}_docx/something_nice/?将您需要的内容复制(或符号链接)到:

#{Rails.root}/tmp/#{Process.pid}_docx/something_nice/

Then

system "cd #{Rails.root}/tmp/#{Process.pid}_docx/; zip -r x.zip something_nice"

然后你有:

#{Rails.root}/tmp/#{Process.pid}_docx/x.zip

有一个漂亮的内部结构,不包括你的 PID。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails:如何在 Heroku 上使用系统 zip 从 xml 模板制作 docx? 的相关文章

  • 通过 SSL 发布 UTF-8 时,HEROKU 上出现“EOFError:已到达文件结尾”

    我在 heroku 上遇到了奇怪的错误 为了重现它 我必须使用请求正文中的任何 UTF 8 字符制作大的 超过几 KB HTTPS POST 这是一个例子 require net https require uri Accutally I
  • 设置一个带有 JQuery 掩码的文本字段

    使用 watir webdriver 我尝试设置文本字段的值 browser text field id phoneNumbers value input set 5555551234 当我运行该命令时 我可以看到 watir 找到了该字段
  • 在 postgresql 中查找和汇总具有重叠记录的日期范围

    我有一个大型数据集 我想对记录具有重叠时间的计数进行求和 例如 给定数据 id 1 name A start 2018 12 10 00 00 00 end 2018 12 20 00 00 00 count 34 id 2 name B
  • 为什么包含此模块不会覆盖动态生成的方法?

    我试图通过包含一个模块来覆盖动态生成的方法 在下面的示例中 Ripple 关联添加了rows 方法表 我想调用该方法 但之后还要做一些额外的事情 我创建了一个模块来重写该方法 认为该模块的row 可以打电话super使用现有的方法 clas
  • HMC SHA1 哈希 - C# 生成与 Ruby 不同的哈希输出

    我正在尝试为我正在使用的第三方服务快速获取一个有缺陷的 Net 客户端库 原始库 可以运行 是用 Ruby 编写的 但 DotNet 的等效库会向 Ruby 库生成不同的哈希输出 Ruby加密代码如下 def self encrypt st
  • 有没有办法避免自动更新 Rails 时间戳字段?

    如果您有数据库列created at and updated at当您创建和更新模型对象时 Rails 将自动设置这些值 有没有办法在不接触这些列的情况下保存模型 我正在引入一些旧数据 我想根据 不同名称的 旧数据字段中的相应值设置这些值
  • C# 创建包含多个文件的 ZIP 存档

    我正在尝试创建包含多个文本文件的 ZIP 存档 如下所示 Dictionary
  • 未知属性:user_id

    我在执行 current user stories build 期间收到错误未知属性 user id class User lt ActiveRecord Base has many stories class name Story for
  • 黄瓜与 RSpec

    我想开始深入研究 BDD 我以前从未使用过 TDD 现在 不确定我是否应该从学习 RSpec 开始 然后跳到 Cucumber 或者直接使用 Cucumber 我一直在互联网上阅读有关两者的内容 在我看来 Cucumber 可能是 RSpe
  • Devise:允许用户注册为“UsErNaMe”但使用“用户名”登录

    与大多数网站的工作方式相同 我将 UsErNaMe 存储在数据库中 但让用户使用 用户名 登录 这是一个相当明显且必要的功能 很多人似乎都问过它 但我不断遇到的解决方案似乎与 Devise 自己的文档脱节 例如 考虑这篇博文 http an
  • ubuntu 12.04 ruby​​ 2.0 Rails:找不到“thread_safe”

    我正在 ubuntu 12 04 上安装 Rails 使用以下方法手动安装 如何在 Ubuntu 12 04 上正确安装 ruby 2 0 0 https stackoverflow com questions 16222738 how t
  • 正常关闭 sidekiq 进程

    有谁知道如何找到 sidekiq 的 pidfile 来优雅地关闭它 跑步ps ax grep sidekiq然后运行sidekiqctl stop
  • 如何从数组中提取特定元素?

    如果我有一个数组a 1 2 3 4 5 6 7 8 9 10 我想要这个数组的一个子集 第 1 个 第 5 个和第 7 个元素 是否可以通过简单的方式从该数组中提取这些内容 我在想这样的事情 a 0 4 6 1 5 7 但这行不通 还有一种
  • 在 Yosemite 上安装 Ruby 1.9.2 时出错

    我在 Yosemite 上使用 rvm 安装 ruby 1 9 2 时遇到错误 有人可以帮助我吗 我更新了自制程序和rvm 我正在与其他人合作处理这个项目 所以我无法升级 ruby 我在下面放置了我的输出的链接 提前致谢 Kanyons M
  • <%=h ... %> 在 Rails 中意味着什么?

    I found here http api rubyonrails org classes ActionView Helpers RecordTagHelper html以下语法 什么是h means 它用于转义标签的输出以避免跨站点脚本
  • Cucumber / Savon 省略或删除日志输出

    在运行黄瓜测试时 我得到 除了测试结果之外 许多与调试 日志相关的输出 格式如下 D 2013 03 06T12 21 38 911829 49031 DEBUG SOAP request D 2013 03 06T12 21 38 911
  • 查找 Rails 应用程序中未使用的代码

    如何查找正在运行和未运行的代码生产中 该应用程序经过充分测试 但还有很多测试unused代码 因此 他们在运行测试时得到覆盖 我想重构并清理这个烂摊子 它一直在浪费我的时间 我有很多后台工作 这就是为什么我希望生产环境来指导我 在 Hero
  • 将记录批量插入到 Active Record 表中

    我发现我的Model create 当我一次添加大量记录时 语句需要很长时间才能运行 看着ActiveRecord 导入 https github com zdennis activerecord import wiki但它不适用于哈希数组
  • “heroku”命令存在于以下 Ruby 版本中:

    我在使用 heroku 工具带时遇到了重大问题 我正在使用 cedar 14 堆栈 当我尝试使用不是的 ruby 版本时ruby 2 0 0 dev我收到这个错误 rbenv heroku command not found The her
  • Rails:Passenger Standalone 适合生产部署吗?

    问题标题几乎概括了这一点 我找不到任何好的资源来概述使用 Phusion Passenger Standalone 进行 Rails 应用程序部署的优点 缺点 它与运行 Passenger Nginx 或 Passenger Apache

随机推荐

  • 使 SwiftUI 矩形与另一个矩形具有相同的高度或宽度

    对于 macOS 应用程序中的 SwiftUI 布局 我有三个矩形 如下所示 生成此布局的代码是 import SwiftUI struct ContentView View var body some View VStack HStack
  • 安装laravel 5.7后是否需要执行“php artisan key:generate”命令

    我已经安装了拉拉维尔 5 7在我的系统中 我想知道是否有必要执行php artisan key generate命令 php artisan 密钥 生成 该命令设置APP KEY你的价值 env file 如果您使用 Composer 创建
  • 将一个表中的记录插入到另一个表中

    我在 Access VBA 代码中将其作为用户窗体上的单击按钮 我有两个重复的表 PrintTable 和 ManPowerCalculator 我试图将 ManPowerCalculator 表中的每个项目插入到 PrintTable 中
  • iPhone Web 应用程序的 jQuery Mobile 高度问题,假设页面高度为 480 而不是 460

    jQuery Mobile 似乎在初始化时计算页面高度 但由于我们在应用程序中启用了状态栏 JQM 假设我们有 480 像素可用 而不是 460 像素 我们正在为 iPhone 构建移动网络应用程序 我们使用 JQM 1 1 1 和 Pho
  • 如何在 Python 中将多个高斯曲线拟合到质谱数据?

    我想在 Python 中将多条高斯曲线拟合到质谱数据 现在 我一次对数据进行高斯拟合 实际上是一次一个范围 有没有更简化的方法来做到这一点 有没有办法可以通过循环运行数据以在每个峰值处绘制高斯分布 我猜一定有更好的方法 但我已经通过互联网进
  • Solr Lucene 中连字符/破折号的挑战

    我试图让 Solr 仅提取格式类似于 n nnnnnnn 的票证的第二个 7 位数字部分 原本我希望把全票保留在一起 根据文档 数字与数字应该保留在一起 但在解决这个问题一段时间并查看代码后 我认为情况并非如此 Solr 总是生成两个项 因
  • Linq - 将 GroupBy 与我自己的类型与匿名类型一起使用

    我有一个要使用 Linq 分组的对象列表 对象类型是 GroupRating 我想按它们的 Params 属性对它们进行分组 public class GroupRating public long Id get set public Pa
  • 获取加起来达到目标​​总和的元素组合

    是否可以得到a总和等于变量的列表元素sum 我尝试过迭代 如果我想从列表中获取 2 个元素 也许可以这样做 但我不知道如何获取更多元素 def function sum a h c 1 2 3 4 5 6 7 8 return f sum
  • emacs 中的 Shift 箭头选择

    我正在使用 GNU Emacs 23 2 1我的init el cua mode 1 transient mark mode 1 setq shift select mode t global linum mode 1 show paren
  • PL/SQL - 如何在 IN 子句中使用数组

    我试图在 IN 子句中使用我的过程的输入值数组作为游标的 where 子句的一部分 我知道以前有人问过这个问题 但我还没有看到如何使我的语法正确编译 在封装规范中 类型为 TYPE t brth dt IS TABLE OF sourceT
  • 在大目录中转换 XML 时出现 java.lang.OutOfMemoryError

    我想使用 XSLT2 在一个具有很多级别的巨大目录中转换 XML 文件 文件数量超过 100 万个 每个文件大小 4 至 10 kB 一段时间后 我总是收到 java lang OutOfMemoryError Java 堆空间 我的命令是
  • 将 MemoryStream 写入响应对象

    我正在使用以下代码来传输 MemoryStream 对象中的 pptx 但是当我打开它时 我在 PowerPoint 中收到修复消息 将 MemoryStream 写入响应对象的正确方法是什么 HttpResponse response H
  • 根据日期和时区计算 tm_isdst

    当我运行线路时 time strptime 2012 06 01 12 00 00 time strftime Z Y m d H M S Z 它为我创建了一个结构 但标志tm isdst是错的 六月初 DST 已生效 但无论我在哪一天输入
  • 如何在Access表中插入列描述?

    如何使用 SQL 在 Access 表中插入列的描述 I do CREATE TABLE TAB A COLUMN1 TEXT 30 COLUMN2 REAL PRIMARY KEY COLUMN1 但如何为每列插入描述 你不能用 SQL
  • 我的不和谐机器人代码正在运行,但没有响应我的命令[重复]

    这个问题在这里已经有答案了 我是一名编程大三学生 我了解 Node js 并且想编写自己的 Discord 机器人 我下面写的代码不起作用 你能帮我解决这个问题吗 const Client Intents require discord j
  • Powershell 在空文件夹上比较对象

    我正在编写一个简单的 DLL 复制脚本来帮助我的开发团队设置他们的本地环境 我检查 build devdrop 文件夹并获取 DLL 文件列表 然后 我查看本地文件夹并复制所有较新的 DLL 我的问题是当本地文件夹为空时 即脚本第一次运行
  • Scala Akka HTTP 转换参数为 java.time.ZonedDateTime

    我正在使用 Akka HTTP 在 Scala 中 开发 REST 服务 我希望将传入 http get 请求的参数转换为 ZonedDateTime 类型 如果我尝试使用 String 或 Int 但使用 ZonedDateTime 类型
  • 从 NetworkStream 读取特定数量的字节

    我正在尝试从网络流中读取已知长度的消息 我有点期待NetworkStream Read 将等待返回 直到我给它的缓冲区数组已满 如果不是 那么这样做的意义何在 ReadTimeout财产 我用来测试我的理论的示例代码 public stat
  • Haskell 打印字符串标准输出

    我需要打印 powerset 中的元素 现在我的代码的输出是这样的 a ab b x xy xyz xz y yz z 但是 我需要输出不带引号 如下所示 a ab b x xy xyz xz y yz z 这就是我所拥有的 我该如何修复它
  • Rails:如何在 Heroku 上使用系统 zip 从 xml 模板制作 docx?

    我在本地工作 将模板文件存储在 Rails root tmp using system cd tmp template zip r filename 压缩文件 将 docx zip 存档 发送到 S3 然后发送到浏览器 问题是 Heroku