我的代码在这里
if File.extname(params[:build][:app_url].original_filename).include? ('ipa')
builder = Nokogiri::XML::Builder.new(:encoding => 'utf-8') do |xml|
xml.plist(:version => '1.0') do
xml.dict do
xml.key "items"
xml.array do
xml.dict do
xml.key "assets"
xml.array do
xml.dict do
xml.key "kind"
xml.string "software-package"
xml.key "url"
xml.string "#{build.app_url.url}"
end
end
xml.key "metadata"
xml.dict do
xml.key "bundle-identifier"
xml.string "1.0"
xml.key "kind"
xml.string "software"
xml.key "title"
xml.string "#{build.app_url_file_name.split('.').first}"
end
end
end
end
end
end
dir = "#{Rails.root}/public/ipa"
File.open("#{dir}/#{build.id}.plist", "w+") do |f|
f.write(builder.to_xml)
end
build.plist_url = "/ipa/#{build.id}.plist"
build.save
end
此代码工作正常,但是当我在heroku上部署时,它无法正常工作。当我点击mydomain/ipa/build_id.plist
时,它会给我们找不到文件。
答案 0 :(得分:0)
heroku上的文件系统是短暂的:更改不会持久存在,也不会在dynos中复制。
答案 1 :(得分:0)
Heroku的文档specifically states:
以下类型的行为不支持:
- 在
中缓存页面public
目录- 将上传的资源保存到本地磁盘(例如使用attachment_fu或paperclip)
- 使用Ferret撰写全文索引
- 写入SQLite或GDBM等文件系统数据库
- 访问git-wiki等应用程序的git repo
是否为您使用Raketask选项预生成.plist
个文件?然后,您可以将它们检入public
目录中的版本控制。