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
- la respuesta del usuario2481743 ⭐️ https://.com/a/42142563/2037928
- el comentario de jottr ⭐️ Cómo deshabilitar "No se puede procesar la consola desde ..." en Rails
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