ruby-on-rails vagrant

ruby-on-rails - vagrant download



Cómo deshabilitar "No se puede procesar la consola desde..." en Rails (10)

Puede incluir en la lista blanca direcciones IP individuales o redes completas.

Digamos que desea compartir su consola con 192.168.0.100 . Puedes hacerlo:

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

Si desea incluir en la lista blanca toda la red privada, puede hacer lo siguiente:

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

Si ya no quieres ver este mensaje, configura esta opción en falso:

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

Tenga cuidado con lo que desea, porque podría obtenerlo todo

Probablemente esto sea solo para fines de desarrollo, por lo que es posible que prefiera colocarlo en config/environments/development.rb lugar de config/application.rb .

Estoy usando Ubuntu / vagrant como mi entorno de desarrollo. Recibo estos mensajes en la consola de 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

¿Es posible deshabilitar esos mensajes "no se puede procesar ..." o permitirlos de alguna manera?


Codificar una IP en un archivo de configuración no es bueno. ¿Qué hay de otros desarrolladores? ¿Qué pasa si la ip cambia?

La configuración relacionada con Docker no debe filtrarse en la aplicación rails siempre que sea posible. Es por eso que debe usar env vars en el archivo 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

Debería establecer las .env correctas en un archivo .env , sin seguimiento en el control de versiones.

En docker-compose.yml puede inyectar env vars desde este archivo con env_file :

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


Debe incluir en la lista blanca el espacio de red 10.0.2.2 en la configuración de la consola web.

Entonces querrás algo como esto:

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

Lea here para más información.

Como señaló pguardiario , esto quiere ir a config/environments/development.rb lugar de config/application.rb por lo que solo se aplica en su entorno de desarrollo.


Descubrimiento automático dentro de su 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

Por supuesto, podría necesitar agregar

require ''socket'' require ''ipaddr''

Dentro de tu archivo.


Para el entorno de desarrollo: detecte si es docker, luego determine la dirección IP y póngala en la lista blanca

# 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

Para mí, esto imprime lo siguiente y la advertencia desaparece 🎉

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

Mi solución fue combinar


Para mí, whitelisted_ips no parecía funcionar en un nuevo proyecto. El archivo Léame indica que la entrada de configuración correspondiente debe ser permissions ahora:

class Application < Rails::Application config.web_console.whitelisted_ips = %w( 0.0.0.0/0 ::/0 ) end

https://github.com/rails/web-console/blob/master/README.markdown


Si desea dejar de ver este mensaje de error, puede agregar esta línea en development.rb

config.web_console.whiny_requests = false


Si está utilizando Docker, lo más probable es que no quiera introducir nuevas variables ENV ni codificar su dirección IP específica.

En su lugar, es posible que desee comprobar que está en Docker utilizando /proc/1/cgroup y permitir su IP de host (tanto para web_console como better_errors ). Agregue a su config/environments/development.rb

# https://.com/a/20012536/4862360 if File.read(''/proc/1/cgroup'').include?(''docker'') # https://.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


Cualquier persona en cualquiera de mis redes privadas es bienvenida.

Corro en un contenedor acoplable y no me importa qué red quiere usar esta semana.

configuración / entornos / desarrollo.rb agregar línea

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


Rails.application.configure do config.web_console.permissions = ''192.168.0.0/16'' end