Lorsque je suis passé de Rails 5.0 à 5.1 et que j'ai essayé de vérifier le fonctionnement de la production localement, je suis tombé sur quelque chose, je vais donc résumer les solutions aux problèmes.
Premièrement, lorsque je clique sur rails s -e production
, j'ai eu une erreur indiquant que la page WEB ne pouvait pas être affichée en raison d'un problème de sécurité avec cette connexion. Cela semble inutile à moins qu'il ne soit défini sur https.
Pour la méthode de base, je me suis référé à cet article. Activer SSL / HTTPS dans l'environnement local de Rails5 + puma
Dans l'article ci-dessus, j'ai émis un certificat avec openssl, mais j'ai eu une erreur, j'ai donc émis un certificat avec mkcert. Cet article a été utile pour savoir comment émettre un certificat avec mkcert. Bonne nouvelle pour ceux qui mettent en garde sur SSL dans l'environnement local avec mon certificat
Tout d'abord, émettez un certificat avec mkcert conformément à l'article ci-dessus et placez les fichiers server.key et server.crt dans un emplacement approprié sous le dossier de l'application.
Définissez puma.rb en vous reportant à Activer SSL / HTTPS dans l'environnement local de Rails5 + puma.
Démarrez le serveur avec bundle exec pumactl start -e production
.
J'ai pu me connecter avec SSL, mais j'ai eu l'erreur HTTP parse error, malformed request ()
et application.js et application.css n'étaient pas chargés.
Le serveur de js et css étant http://0.0.0.0:3000, le paramètre de asset_host a été modifié comme suit. Je l'ai défini avec une variable d'environnement afin qu'il puisse être modifié localement et dans l'environnement de production.
config/environments/production.rb
config.action_controller.asset_host = "https://#{ENV['HOST_URI']}"
référence
Avec le support ci-dessus, css et js sont sortis, mais les fichiers image placés sous public / images n'étaient pas encore affichés. À partir de Rails 5.1, les fichiers statiques qui ne sont pas précompilés avec asset_pipeline sont écrits comme suit lorsqu'ils sont appelés par l'assistant.
= image_tag 'hogehoge.png', skip_pipeline: true
Cependant, même si cela a été défini, cela n'a pas fonctionné, donc cela semble être un autre problème.
** Correspondance 1 **
Définissez config.public_file_server.enabled
sur true
config/environments/production.rb
- config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?
+ config.public_file_server.enabled = true
** Correspondance 2 ** redo assets: précompiler.
#Si vous voulez franchir le pas et tout effacer une fois, cliquez d'abord ici
RAILS_ENV=production bundle exec rake assets:clobber
# assets:clean efface les anciennes versions des fichiers. Si tu clobber, tu n'as pas besoin de nettoyer
RAILS_ENV=production bundle exec rake assets:precompile assets:clean
Avec le support ci-dessus, tous les actifs sont maintenant affichés.
référence
Recommended Posts