私は cloud9 IDE で多くのプロジェクトに取り組んでいますが、より適切なエラー gem が正しく機能しないことに本当にイライラしています。初期化する必要はありません。それは箱から出してすぐに動作するはずです。ただし、通常の醜い赤いエラーページしか表示されません。それが私のgemfileに含まれていることを指定する必要があり、bundle install
すでに持っています。
エラーを正しく動作させるにはどうすればよいですか? 不足しているインストール手順はありますか?
私は cloud9 IDE で多くのプロジェクトに取り組んでいますが、より適切なエラー gem が正しく機能しないことに本当にイライラしています。初期化する必要はありません。それは箱から出してすぐに動作するはずです。ただし、通常の醜い赤いエラーページしか表示されません。それが私のgemfileに含まれていることを指定する必要があり、bundle install
すでに持っています。
エラーを正しく動作させるにはどうすればよいですか? 不足しているインストール手順はありますか?
これを cloud9.io でテストしたところ、これが cloud9.io で機能する最も簡単な方法です。
次の行を config/environments/development.rb に追加します。
BetterErrors::Middleware.allow_ip! 'xxx.xxx.xxx.0/24'
ここで、xxx.xxx.xxx は、 cloud9.io への接続に使用しているローカルマシンの IP アドレスの最初の 3 つのセクションです。
より良いエラーの問題と c0 ドキュメントに良い答えがあります。
問題: https://github.com/charliesome/better_errors/issues/318
c9 ヘルプ https://community.c9.io/t/white-listing-remote-addr-for-better-errors-gem/4976/4
Rack::Request
オブジェクトを使用して IP を取得します。次のコードをビューに配置できます。
if Rails.env.development?
request = Rack::Request.new(env)
puts "@@@@@@ Request IP_ADDRESS = #{request.ip}"
end
に到達する IP の最後の象限を変更します0/24
。例えば。
BetterErrors::Middleware.allow_ip! '76.168.69.0/24' <--note: change the last quad to 0/24 and of course your ip address will be different than 76.168.69.xx
うん!!わかった!自動的!これが私の解決策です:
1- @Grokcodile の説明と同様: プロジェクトの config/environments/development.rb ファイルを編集し、次のコード行を Rails.application.configure ブロックに追加します。
BetterErrors::Middleware.allow_ip! ENV['TRUSTED_IP'] if ENV['TRUSTED_IP']
config.web_console.whitelisted_ips = ENV['TRUSTED_IP']
2- Cloud9 で ~/.bashrc... を編集します。
vi ~/.bashrc
次の行を追加します (Enter、alt+a):
export TRUSTED_IP='0.0.0.0/0.0.0.0'
保存します (esc, :wq)
3-rails s -b $IP -p $PORT
いつものように走る...
4-より良いエラーをお楽しみください!!
仮想マシン (vagrant) でこのプロジェクトにも取り組んでいる場合:
1- VM (vagrant) で ~/.bash_profile (私の場合) を編集し、以下を追加します。
export TRUSTED_IP=x.x.x.x
export PORT=3000
export IP=0.0.0.0
xxxx は、ENV の REMOTE_ADDR と等しくなければなりません。(これは cloud9 のような問題ではありません。これは、私の VM では IP が毎回変更されるわけではないためです。私にとっては常に 10.0.2.2 です)。
これで、gem foreman を使用できるようになりforeman start
ました: Procfile の両方の場所で:
web: rails s -b $IP -p $PORT
グローバル環境変数が両方に設定されているため、これは機能します。
私も RoR を学び始めたばかりなので、これが正しいことであり、今後これ以上問題が発生しないことを願っています。
Cloud9 はすべて Web ベースであるため、localhost からアクセスしないため、デフォルトではより良いエラーは機能しません。彼らの README ( https://github.com/charliesome/better_errors )のセキュリティ セクションを見ると、config/environments/development.rb に以下を追加できます。
BetterErrors::Middleware.allow_ip! <ipaddress>
そのため、IP のエラー ページが表示されます。古いエラーページの「Show env dump」をクリックして「REMOTE_ADDR」を見ると、見かけの IP を見つけることができます。