Rails应用上传Liquid文件至Shopify Snippets目录为空问题排查
解决ShopifyAPI上传本地Liquid文件到Snippets目录为空的问题
你遇到的问题根源在于用错了ShopifyAPI::Asset的参数——src是用来指定远程文件的URL的,不是本地文件路径。Shopify没法直接读取你Rails服务器上的本地文件,所以生成的snippet自然是空的。
正确的做法是先读取本地文件的内容,再通过body参数把内容传给Asset对象。这里给你完整的修正代码:
# 获取本地Liquid文件的绝对路径 file_path = Rails.root.join("public/sample-js.liquid") # 读取文件内容(注意确保文件存在且应用有读取权限) file_content = File.read(file_path) # 创建Asset并上传到Shopify店铺的snippets目录 asset = ShopifyAPI::Asset.new( key: "snippets/sample-js.liquid", body: file_content ) asset.save!
额外给你几个小提示:
- 可以先通过
File.exist?(file_path)检查文件是否存在,避免读取不存在的文件报错 - 如果文件内容特别大,用
File.open(file_path, 'r') { |f| f.read }的方式读取更高效 - 用
save!会在上传失败时抛出异常,方便你调试问题;如果想静默处理可以用save,然后检查返回值判断是否成功
内容的提问来源于stack exchange,提问作者rmn.nish
相关产品推荐
相关产品推荐

