Как отключить "не удается отобразить консоль из..." на рельсах


Я использую Ubuntu / vagrant в качестве среды разработки. Я получаю эти сообщения на консоли 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

можно ли отключить эти "не может оказать..."сообщения или разрешить их в любом случае?

7   108  

7 ответов:

вам нужно внести в белый список сетевое пространство 10.0.2.2 в конфигурации веб-консоли.

Так что вы хотите, что-то вроде этого:

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

читать здесь для получения дополнительной информации.

как указал by pguardiario, это хочет войти в config/environments/development.rb, а не config/application.rb поэтому он применяется только в среде разработки.

вы можете белый список отдельных IP-адресов или целых сетей.

скажем, вы хотите поделиться своей консоли с 192.168.0.100. Вы можете сделать это:

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

если вы хотите, чтобы белый список всей частной сети, вы можете сделать:

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

если вы больше не хотите видеть это сообщение, установите для этого параметра значение false:

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

будьте осторожны, что вы хотите, потому что вы можете просто получить все это

это наверное только для целей развития, так что вы можете предпочитаю разместить его под config/environments/development.rb вместо config/application.rb.

жесткое кодирование IP в конфигурационный файл не очень хорошо. А как насчет других разработчиков? Что делать, если IP меняется?

конфигурация, связанная с Докером, не должна просачиваться в приложение rails, когда это возможно. Вот почему вы должны использовать переменные окружения в config/environments/development.rb file:

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

вы должны установить правильный env vars в .env файл, не отслеживается в системе управления версиями.

на docker-compose.yml вы можете ввести env vars из этого файла с помощью env_file:

app:
  build: .
  ports:
   - "3000:3000"
  volumes:
    - .:/app
  links:
    - db
  environment:
    - DOCKERIZED=true
  env_file:
    - ".env"

автоматическое обнаружение в вашей 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

конечно, может потребоваться добавить

require 'socket'
require 'ipaddr'

в свой файл.

любой в любой из моих частных сетей приветствуется.

Я запускаю в контейнере docker, и мне все равно, какую сеть он хочет использовать на этой неделе.

config / environments / development.РБ добавить строку

config.web_console.whitelisted_ips = ['10.0.0.0/8', '172.16.0.0/12', '192.168.0.0/16']

для среды разработки: определить, если это докер, а затем определить IP-адрес и белый список его

# 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

для меня это печатает следующее и предупреждение уходит

Adding 172.27.0.0 to config.web_console.whitelisted_ips
Adding 172.18.0.0 to config.web_console.whitelisted_ips

мое решение было совместить

Если вы хотите перестать видеть это сообщение об ошибке вы можете добавить эту строку в развитие.РБ

config.web_console.whiny_requests = false