Почему я получаю "cache: [GET /] miss" при работе с использованием WebRick? - PullRequest
9 голосов
/ 31 января 2012

Я не могу проверить свой веб-сайт в производственном режиме, используя WebRick, так как он вызывает ошибки кэширования. В режимах разработки и тестирования все работает отлично.

Я установил эту опцию в config / средах / production.rb:

config.serve_static_assets = true

А потом я побежал:

bundle exec rake assets:precompile

Теперь я запускаю сервер:

david$ rails s -e production
=> Booting WEBrick
=> Rails 3.2.1 application starting in production on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2012-01-31 19:52:35] INFO  WEBrick 1.3.1
[2012-01-31 19:52:35] INFO  ruby 1.9.3 (2011-10-30) [x86_64-darwin11.2.0]
[2012-01-31 19:52:35] INFO  WEBrick::HTTPServer#start: pid=13329 port=3000

И когда я перехожу к http://localhost:3000, я получаю «Извините, но что-то пошло не так». В терминале это то, что он выводит:

cache: [GET /] miss

Я застрял здесь. Я понятия не имею, что делать.

Ответы [ 4 ]

5 голосов
/ 01 февраля 2012

Проблема в конвейере ресурсов, который должен быть хорошо настроен в рабочем режиме, поскольку файлы не прекомпилируются автоматически.

В моем случае я вставлял файл javascript (с javascript_include_tag)он присутствовал только на одной странице, поэтому он не был включен в манифест application.js.

В этом случае конвейер ресурсов не прекомпилирует файл при запуске assets:precompile.

Чтобы включить отсутствующий файл, мы должны отредактировать config/environments/production.rb и добавить эту строку:

config.assets.precompile += %w( script1.js )

Вы заметите, что эта строка уже существует, но она прокомментирована.Прочитайте комментарий для получения дополнительной информации.Для получения дополнительной информации обратитесь к официальному руководству по конвейеру активов .

0 голосов
/ 09 мая 2013

Чтобы запустить приложение в производственном режиме, чтобы вы не получили кеш: [GET /] miss Пожалуйста, проверьте папку {project} / public , есть ли у них какая-либо папка активов если нет, то предварительно скомпилируйте ресурсы, используя bundle exec rake assets: precompile

как только это будет сделано:

установить config.assets.compile до true в производстве.rb

Затем перезапустите WebApp в производственной среде.

Этот подход сработал для меня, надеюсь, сработает для вас.

Если вы используете rails 3.2.0, вы получите [GET /] miss, но ваше приложение будет работать правильно.

0 голосов
/ 05 июня 2012

В качестве временного решения мне помогло следующее.

Я изменил файл config/environments/production.rb, чтобы изменить строку config.assets.compile с false на true

# Don't fallback to assets pipeline if a precompiled asset is missed
 config.assets.compile = true
0 голосов
/ 31 января 2012

Это сообщение об отсутствующих страницах отправляет промежуточное ПО Rack :: Cache. Если вам не нужно использовать кэширование страниц в вашем приложении rails, просто удалите Rack :: Cache в файле config / application.rb:

require 'rack/cache'

module DemoApp
  class Application < Rails::Application
    config.middleware.delete Rack::Cache
    # ...
  end
end
...