Comment désactiver "impossible de rendre la Console à partir de ..." sur Rails

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 ceux " impossible de rendre..."messages ou leur permettre en aucune façon?

108
demandé sur arogachev 2015-04-02 18:57:24

7 réponses

Vous devez mettre en liste blanche l'Espace réseau 10.0.2.2 dans la configuration de la Console Web.

Donc, vous voudrez quelque chose comme ceci:

class Application < Rails::Application
  config.web_console.whitelisted_ips = '10.0.2.2'
end

Lire ici pour plus d'informations.

, Comme souligné par pguardiario, ce qui veut aller dans config/environments/development.rb plutôt que config/application.rb, de sorte qu'il est appliqué uniquement dans votre environnement de développement.

133
répondu ydaetskcoR 2017-05-23 11:54:58

Vous pouvez mettre en liste blanche des adresses IP uniques ou des réseaux entiers.

Dites que vous voulez partager votre console avec 192.168.0.100. Vous pouvez faire ceci:

class Application < Rails::Application
  config.web_console.whitelisted_ips = '192.168.0.100'
end

Si vous voulez mettre en liste blanche l'ensemble du réseau privé, vous pouvez faire:

class Application < Rails::Application
  config.web_console.whitelisted_ips = '192.168.0.0/16'
end

Si vous ne voulez plus voir ce message, définissez cette option sur false:

class Application < Rails::Application
  config.web_console.whiny_requests = false
end

Faites attention à ce que vous souhaitez, car vous pourriez tout obtenir

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.

69
répondu Flavio Wuensche 2015-07-07 16:09:08

Le codage en dur D'une adresse IP dans un fichier de configuration n'est pas bon. Quels sont les autres devs? Que faire si l'adresse IP change?

La configuration liée à Docker ne devrait pas fuir dans l'application rails autant que possible. C'est pourquoi vous devriez 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 des variables d'env correctes dans un fichier .env, non suivi dans le contrôle de version.

Dans docker-compose.yml Vous pouvez injecter des variables env à partir de ce fichier avec env_file:

app:
  build: .
  ports:
   - "3000:3000"
  volumes:
    - .:/app
  links:
    - db
  environment:
    - DOCKERIZED=true
  env_file:
    - ".env"
23
répondu Pak 2018-03-28 14:22:35

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, vous devrez peut-être ajouter

require 'socket'
require 'ipaddr'

Dans votre fichier.

14
répondu user2481743 2018-03-28 14:25:40

Toute personne sur l'un de mes réseaux privés est la bienvenue.

Je cours dans un conteneur docker et je me fiche du réseau qu'il veut utiliser cette semaine.

Config / environnements / développement.RB ajouter une ligne

config.web_console.whitelisted_ips = ['10.0.0.0/8', '172.16.0.0/12', '192.168.0.0/16']
6
répondu kwerle 2017-09-07 21:22:42

Pour l'environnement de développement: détectez si c'est docker, puis déterminez l'adresse IP et la 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 disparaît

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

1
répondu Scymex 2018-03-20 14:42:16

Si vous voulez arrêter de voir ce message d'erreur, vous pouvez ajouter cette ligne dans développement.rb

config.web_console.whiny_requests = false
0
répondu Sai Ram Reddy 2017-09-19 12:56:05