J'utilise Ubuntu/vagrant comme environnement de développement. Je reçois ces messages sur la console Rails:
Started GET "/assets/home-fcec5b5a277ac7c20cc9f45a209a3bcd.js?body=1" for 10.0.2.2 at 2015-04-02 15:48:31 +0000
Cannot render console from 10.0.2.2! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
Est-il possible de désactiver ces messages "ne peut pas rendre ..." ou de les autoriser de quelque manière que ce soit?
Vous devez ajouter à la liste blanche l'espace réseau 10.0.2.2 dans la configuration de la console Web.
Donc, vous voulez quelque chose comme ça:
class Application < Rails::Application
config.web_console.whitelisted_ips = '10.0.2.2'
end
Lire ici pour plus d'informations.
Comme souligné par pguardiario , cela veut aller dans config/environments/development.rb
plutôt que config/application.rb
afin qu'il ne soit appliqué que dans votre environnement de développement.
Supposons que vous souhaitiez partager votre console avec 192.168.0.100
. Tu peux le faire:
class Application < Rails::Application
config.web_console.whitelisted_ips = '192.168.0.100'
end
Si vous souhaitez ajouter tout le réseau privé à la liste, vous pouvez effectuer les opérations suivantes:
class Application < Rails::Application
config.web_console.whitelisted_ips = '192.168.0.0/16'
end
class Application < Rails::Application
config.web_console.whiny_requests = false
end
Ceci est probablement uniquement à des fins de développement, vous pouvez donc préférer le placer sous config/environments/development.rb
au lieu de config/application.rb
.
Coder en dur une IP dans un fichier de configuration n'est pas bon. Qu'en est-il des autres développeurs? Et si l'IP change?
La configuration liée à Docker ne doit pas pénétrer dans l'application Rails autant que possible. C'est pourquoi vous devez utiliser env vars dans le fichier config/environments/development.rb
:
class Application < Rails::Application
# Check if we use Docker to allow docker ip through web-console
if ENV['DOCKERIZED'] == 'true'
config.web_console.whitelisted_ips = ENV['DOCKER_Host_IP']
end
end
Vous devez définir les variables env correctes dans un fichier .env
, non suivi dans le contrôle de version.
Dans docker-compose.yml
, vous pouvez injecter env vars à partir de ce fichier avec env_file
:
app:
build: .
ports:
- "3000:3000"
volumes:
- .:/app
links:
- db
environment:
- DOCKERIZED=true
env_file:
- ".env"
Découverte automatique dans votre config/development.rb
config.web_console.whitelisted_ips = Socket.ip_address_list.reduce([]) do |res, addrinfo|
addrinfo.ipv4? ? res << IPAddr.new(addrinfo.ip_address).mask(24) : res
end
Bien sûr, il faudra peut-être ajouter
require 'socket'
require 'ipaddr'
Dans votre fichier.
Toute personne sur l'un de mes réseaux privés est la bienvenue.
Je cours dans un conteneur Docker et je ne me soucie pas du réseau qu'il veut utiliser cette semaine.
config/environnements/development.rb add line
config.web_console.whitelisted_ips = ['10.0.0.0/8', '172.16.0.0/12', '192.168.0.0/16']
Pour l'environnement de développement: Détectez s'il s'agit d'un menu fixe, puis déterminez l'adresse IP et mettez-la en liste blanche
# config/environments/development.rb
require 'socket'
require 'ipaddr'
Rails.application.configure do
...
# When inside a docker container
if File.file?('/.dockerenv')
# Whitelist docker ip for web console
# Cannot render console from 172.27.0.1! Allowed networks: 127.0.0.1
Socket.ip_address_list.each do |addrinfo|
next unless addrinfo.ipv4?
next if addrinfo.ip_address == "127.0.0.1" # Already whitelisted
ip = IPAddr.new(addrinfo.ip_address).mask(24)
Logger.new(STDOUT).info "Adding #{ip.inspect} to config.web_console.whitelisted_ips"
config.web_console.whitelisted_ips << ip
end
end
end
Pour moi cela imprime ce qui suit et l'avertissement s'en va ????
Adding 172.27.0.0 to config.web_console.whitelisted_ips
Adding 172.18.0.0 to config.web_console.whitelisted_ips
Ma solution était de combiner
Si vous utilisez Docker, il est fort probable que vous ne souhaitiez ni introduire de nouvelles variables ENV, ni coder en dur votre adresse IP spécifique.
Au lieu de cela, vous voudrez peut-être vérifier que vous êtes dans Docker en utilisant /proc/1/cgroup
et autoriser votre IP hôte (à la fois pour web_console
et better_errors
). Ajouter à votre config/environments/development.rb
# https://stackoverflow.com/a/20012536/4862360
if File.read('/proc/1/cgroup').include?('docker')
# https://stackoverflow.com/a/24716645/4862360
Host_ip = `/sbin/ip route|awk '/default/ { print $3 }'`.strip
BetterErrors::Middleware.allow_ip!(Host_ip) if defined?(BetterErrors::Middleware)
config.web_console.whitelisted_ips << Host_ip
end
Pour moi, whitelisted_ips
ne semblait pas fonctionner dans un nouveau projet. Le fichier Lisez-moi indique que l'entrée de configuration correspondante est supposée être permissions
maintenant:
Rails.application.configure do
config.web_console.permissions = '192.168.0.0/16'
end
https://github.com/Rails/web-console/blob/master/README.markdown
Si vous ne voulez plus voir ce message d'erreur, vous pouvez ajouter cette ligne dans development.rb
config.web_console.whiny_requests = false