web-dev-qa-db-ja.com

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

これらの「レンダリングできません...」メッセージを無効にしたり、何らかの方法で許可したりすることは可能ですか?

118
Leandro França

Webコンソールの設定で10.0.2.2ネットワークスペースをホワイトリストに登録する必要があります。

したがって、次のようなものが必要になります。

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

詳細については、 here をお読みください。

指摘 by pguardiario のように、これはconfig/environments/development.rbではなくconfig/application.rbに入りたいので、開発環境でのみ適用されます。

149
ydaetskcoR

単一の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の下に配置することをお勧めします。

73
Flavio Wuensche

IPを構成ファイルにハードコーディングすることは適切ではありません。他の開発者はどうですか? IPが変更された場合はどうなりますか?

Docker関連の構成は、可能な限りRailsアプリにリークしないようにしてください。そのため、config/environments/development.rbファイルでenv変数を使用する必要があります。

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ファイルに正しいenv変数を設定する必要があります。

docker-compose.ymlでは、env_fileを使用してこのファイルからenv変数を注入できます。

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

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'

ファイル内。

17
user2481743

プライベートネットワークの誰でも歓迎します。

Dockerコンテナで実行し、今週どのネットワークを使用するかは気にしません。

config/environments/development.rb行を追加

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

開発環境の場合:Dockerかどうかを検出し、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

私の解決策は

4
Scymex

Dockerを使用している場合は、新しいENV変数を導入したり、特定のIPアドレスをハードコーディングしたりしないでください。

代わりに、/proc/1/cgroupを使用してDockerにいることを確認し、ホストIP(web_consolebetter_errorsの両方)を許可することができます。 config/environments/development.rbに追加します

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

私にとって、whitelisted_ipsは新しいプロジェクトでは機能していないようです。 Readmeには、対応する構成エントリがpermissionsになるはずであると記載されています。

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

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

0
Fabian Kübler

このエラーメッセージを表示したくない場合は、この行をdevelopment.rbに追加できます。

config.web_console.whiny_requests = false
0
Sai Ram Reddy