Кеширование с рельсами и apache ведет себя неожиданно.Изменения в макете не вступают в силу до перезагрузки Apache - PullRequest
0 голосов
/ 07 октября 2018

Доброе утро всем,

, за последние два дня я работал над своим первым сайтом Ruby on Rails, который я хотел бы развернуть на своем виртуальном сервере.

Я думаю, что все настроил правильно и могу запросить сайт через мой любимый браузер (firefox).Сайт в основном статический, поэтому у него много статических ресурсов, которые мне нужно предварительно скомпилировать.

Однако, когда я фиксирую изменения в пользовательской таблице стилей и прекомпилирую ее, веб-сервер (apache2 в сочетании с пассажирским)продолжает обслуживать старую таблицу стилей / веб-страницу, что меня смущает, так как я думал, что это должно быть предотвращено механизмом хеширования, который rails использует для статических ресурсов.

После перезапуска сервера apache с помощью 'service apache2 restartи перейдите в браузере на веб-сайт, я смогу увидеть новый макет.

Я подозреваю, что это проблема с конфигурацией apache2, так что вот моя конфигурация виртуального хоста (без комментариев):

<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName example.com
ServerAdmin admin@example.com

DocumentRoot /var/www/project/public
RailsEnv production
PassengerRuby /usr/local/rvm/wrappers/ruby-2.5.1/ruby

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

SSLEngine on
SSLCertificateFile /path/to/cert/file
SSLCertificateKeyFile /path/to/private/key

<FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
    SSLOptions +StdEnvVars
</Directory>

BrowserMatch "MSIE [2-6]" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown

<Directory />
       Require all denied
</Directory>
<Directory /var/www/project/public>
    Options FollowSymLinks
    Require all granted
</Directory>

<Location /assets/>
    # Use of ETag is discouraged when Last-Modified is present                                                                                  
    Header unset ETag
    FileETag None
    # RFC says only cache for 1 year                                                                                                            
    ExpiresActive On
    ExpiresDefault "access plus 1 year"
</Location>

</VirtualHost>
</IfModule>

У кого-нибудь есть предложение, где я могу найти неправильную конфигурацию?Большое спасибо.

Дополнительная информация: Rails v5.2.1

Gemfile:

source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }

ruby '2.5.1'
gem 'passenger'

gem 'rails', '~> 5.2.1'
gem 'sqlite3'
gem 'puma', '~> 3.11'
gem 'sass-rails', '~> 5.0'
gem 'uglifier', '>= 1.3.0'
gem 'jquery-rails'
gem 'coffee-rails', '~> 4.2'
gem 'turbolinks', '~> 5'
gem 'jbuilder', '~> 2.5'
gem 'bootsnap', '>= 1.1.0', require: false

group :development, :test do
    gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
end

group :development do
    gem 'web-console', '>= 3.3.0'
    gem 'listen', '>= 3.0.5', '< 3.2'
    gem 'spring'
    gem 'spring-watcher-listen', '~> 2.0.0'
end

group :test do
    gem 'capybara', '>= 2.15'
    gem 'selenium-webdriver'
    gem 'chromedriver-helper'
end

gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]

1 Ответ

0 голосов
/ 07 октября 2018

Поскольку вы запускаете Rails в режиме production, вам необходимо перезапустить сервер приложений, чтобы получить любые изменения в коде.В вашем случае приложение обслуживается модулем Passenger внутри Apache, поэтому это объясняет, почему нужно перезапустить Apache.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...