1

Heroku のアプリにファイルをロードすると、すべてが機能しますが、アプリケーションを再ロードしようとすると、次のエラーが表示されます。

2013-01-25T08:48:31+00:00 app[web.1]:   app/controllers/main_controller.rb:20:in `index'
2013-01-25T08:48:31+00:00 app[web.1]: 
2013-01-25T08:48:31+00:00 app[web.1]: 
2013-01-25T08:48:31+00:00 app[web.1]: Errno::ENOENT (No such file or directory - /app/config/cases/casesID6.yml):
2013-01-25T08:48:31+00:00 app[web.1]:   app/controllers/main_controller.rb:20:in `read'

ローカルで正常に動作します!

メインコントローラー:

# importo yaml di configurazione
require 'yaml'
if Survey.exists?(1)
    @idOfSurvey = Survey.find {|s| s['active_state'] == true}['id']
    nameOfSurvey = "casesID"+String(@idOfSurvey)+".yml"
    @survey = YAML::load(ERB.new(IO.read(File.join(Rails.root, 'config/cases', nameOfSurvey))).result)
else
    render :action => 'noYaml' and return
end

アップロード コントローラ:

#inserisco il nuovo questionario
            survey = Survey.new
            if Survey.exists?(1)
                n = String(Integer(Survey.maximum("Id"))+1)
                survey.name = "casesID#{n}"
            else
                survey.name = "casesID1"
            end
            File.open(Rails.root.join('config/cases', survey.name+".yml"), 'wb+') do |file|
                file.write(uploaded_io.read)
            end
            survey.save()

Heroku にアップロードされたファイルは、たとえばメモリの問題や、ファイルを一時的に保存するためにプラットフォームによってクリアされる可能性があると思いますが、これは可能ですか? ソリューション!

繰り返しますが、すべてがローカルで正常に動作します:(

4

1 に答える 1

11

コードの新しいバージョンをスケーリング、再起動、またはプッシュすると、Heroku ファイルシステムに書き込むことができますが、ファイルは失われます。

Amazon S3、Rackspace などの永続的なファイル ストアを使用する必要があります。詳細はhttps://devcenter.heroku.com/articles/dynos#ephemeral-filesystemを参照し、CarrierWave や Paperclip などの gem を使用して接続します。 S3超シンプル。

于 2013-01-25T09:26:49.187 に答える