如何在Rails上禁用“无法渲染控制台…”
我正在使用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
是否有可能禁用那些“无法呈现…”的消息或允许他们以任何方式?
您需要在Web控制台configuration中将10.0.2.2networking空间列入白名单。
所以你会想要这样的东西:
class Application < Rails::Application config.web_console.whitelisted_ips = '10.0.2.2' end
在这里阅读更多的信息。
正如pguardiario所指出的那样 ,它想要进入config/environments/development.rb
而不是config/application.rb
所以它只能在你的开发环境中应用。
您可以将单个IP或整个networking列入白名单。
假设你想与192.168.0.100
共享你的控制台。 你可以这样做:
class Application < Rails::Application config.web_console.whitelisted_ips = '192.168.0.100' end
如果您想将整个专用networking列入白名单,您可以执行以下操作:
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硬编码到configuration文件并不好:其他开发者呢? 如果IP变化怎么办?
Docker相关的configuration应该尽可能不泄露到rails应用程序中。
这就是为什么你应该在config/environments/development.rb
文件中使用env vars:
# 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
您应该在.env
文件中设置正确的env vars,而不是跟踪到版本控制。
在docker-compose.yml
你可以用env_file
从这个文件注入env vars:
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'
在你的文件中。
任何人在我的私人networking是受欢迎的。
我在一个docker集装箱运行,我不在乎这个星期要使用哪个networking。
config / environments / development.rb添加行
config.web_console.whitelisted_ips = ['10.0.0.0/8', '172.16.0.0/12', '192.168.0.0/16']
如果你想停止看到这个错误信息,你可以在development.rb中添加这一行
config.web_console.whiny_requests = false