Heroku不是创建公用文件夹上的文件不起作用

时间:2014-05-13 06:43:10

标签: ruby xml heroku ruby-on-rails-4

我的代码在这里

 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时,它会给我们找不到文件。

2 个答案:

答案 0 :(得分:0)

heroku上的文件系统是短暂的:更改不会持久存在,也不会在dynos中复制。

答案 1 :(得分:0)

Heroku的文档specifically states

  

以下类型的行为支持:

     
      
  • public目录
  • 中缓存页面   
  • 将上传的资源保存到本地磁盘(例如使用attachment_fu或paperclip)
  •   
  • 使用Ferret撰写全文索引
  •   
  • 写入SQLite或GDBM等文件系统数据库
  •   
  • 访问git-wiki等应用程序的git repo
  •   

是否为您使用Raketask选项预生成.plist个文件?然后,您可以将它们检入public目录中的版本控制。