Я работал над переносом приложения на «Rails 3.0.7» с тех пор, как начал использовать кеширование для своего приложения (файловый кеш, memcache или любой другой).Я всегда получаю вышеупомянутую ошибку «не могу сбросить файл».
Я немного погуглил и обнаружил, что это как-то связано с дампом Marshal, так как интерпретатор ruby разрешает дамп Marshal объекта, у которого есть Procs илилямбды в них, поэтому я посмотрел на свой код, но я не смог найти ни одного Proc и лямбда во всех моих приложениях
Теперь, чтобы обнаружить проблему, я углубляюсь в код ActiveRecord 3.0.7, и вот несколько интересных находок, которые япридумали
1."include" в Rails 3 + внутренне вызовите определение name name ОК, я отвечаю, что есть Proc и Lambada, связанные собъект, поэтому ошибка , но это не объясняет, почему один и тот же код иногда работает и сообщает об ошибках (выше ошибок) в других случаях я имею в виду, если ошибка относится к Marshalling и объектукоторые содержат Proc или Lambada, тогда код определенно не должен работать и всегда должен сообщать об ошибках независимо от того, сколько раз один и тот же код запускается , ноздесь дело обстоит иначе код возврата ошибки иногда и хорошо работают другие времена
код
Rails.cache.fetch ("available_websites_1") {Website.includes (: account)}
2. Если ". включает" в Rails 3.0 +, естьПроблема в том, что с синтаксисом other 'include' он тоже сообщает об ошибке (ошибка выше), поэтому я запустил код с более старым синтаксисом из include
Вот оно
Rails.cache.fetch ("available_websites_1") {Website.all (: include =>: account)}
что удивительнозапустился, но он никогда не загружал предварительно учетную запись, связанную с для всего сайта (что и странно) , но по крайней мере он никогда не выдавал ошибку, так что еще раз была проведена экспертиза на Active Record 3.0 + дляузнайте, как более старая версия включает (Rails 2.3 +), работает с удивлением, узнав, что более старая версия включает синтаксис внутренний вызов .include метод ActiveRecord 3.0 +
whoo Как такое возможно, что два разных синтаксиса оба вызывают один и тот же внутренний метод один отчет с ошибкой иногда (некаждый раз, но предварительно загружая связанный объект ) и другие не не сообщает с ошибкой , но и не предварительно загружает связанный объект , как было сказано ранее.
Ладно, выслушав все это, если кто-нибудь может мне помочь, тогда я был бы очень признателен
Кстати
Вот что я пытаюсь достичь
Rails.cache.fetch ("available_websites_1") {Website.includes (: account)}
эквивалентный код выше в Rails 2.3.5 и Rails 3+ (но не предварительно загружает связанный объект учетной записи всех веб-сайтов), т. Е.
Rails.cache.fetch ("available_websites_1") {Website.find (: all,: include =>: account)}
Отлично работает без каких-либо проблем
Я использую
Ruby = "ruby 1.8.7 (2010-01-10 patchlevel 249)[i486-linux] "Rails =" Rails 3.0.7 "
Та же проблема сохраняется даже на Rails 3.1.0
Я что-то упустил
Я также могу предоставить структуру модели, если требуется