我正在處理cloud9 IDE上的許多項目,並且真的讓我很沮喪,因爲我無法獲得更好的錯誤gem來正常工作。它不應該需要初始化;它應該只是開箱即用。但是,我仍然只能看到通常的醜陋紅色錯誤頁面。我應該指定它包含在我的gemfile中,並且我已經有bundle install
。爲什麼沒有better_errors在雲9 ide上工作?
如何獲得更好的錯誤以正確工作?有沒有我缺少的安裝步驟?
我正在處理cloud9 IDE上的許多項目,並且真的讓我很沮喪,因爲我無法獲得更好的錯誤gem來正常工作。它不應該需要初始化;它應該只是開箱即用。但是,我仍然只能看到通常的醜陋紅色錯誤頁面。我應該指定它包含在我的gemfile中,並且我已經有bundle install
。爲什麼沒有better_errors在雲9 ide上工作?
如何獲得更好的錯誤以正確工作?有沒有我缺少的安裝步驟?
我用來獲取在Cloud9中工作的'better_errors'gem的技巧是將TRUSTED_IP
的值設置爲我的瀏覽器會話連接到的計算機的公共IP地址。 (據我所知,它與遠程服務器的IP地址或Cloud9服務器地址無關。)
我將概述我用於在我的Cloud9工作區上運行'better_errors'的過程,從我的住宅網絡上的Chromebook ...也許它也適用於您和其他人!
gem "better_errors"
添加到項目Gemfile中的開發組中。gem "binding_of_caller"
添加到項目Gemfile中。bundle
。編輯項目配置/環境/ development.rb文件和下面的代碼行添加到Rails.application.configure塊的末尾。
BetterErrors::Middleware.allow_ip! ENV['TRUSTED_IP'] if ENV['TRUSTED_IP']
Cloud9在新標籤頁中創建一個基本的跑步者文件進行修改。用下面的代碼替換這個文件的內容。
{
"cmd": [
"bash",
"--login",
"-c",
"TRUSTED_IP=XXX.XXX.XXX.XXX rails server -p $port -b $ip $args"
],
"working_dir": "$project_path",
"info": "Your code is running at \\033[01;34m$url\\033[00m.\n\\033[01;31m",
"selector": "source.ru"
}
XXX.XXX.XXX.XXX
以上本地計算機的公共IP地址。 (我用http://ifconfig.me/找到分配給我的Chromebook的公網IP)注:我還沒有想出如何自動餵養我的本地計算機的外部IP地址成住在CLOUD9工作區RoR.run文件的過程。每次移動到新網絡或我的外部IP地址更改時,我都會手動更新它。
警告:我剛剛開始學習RoR,所以我不知道這是否是使這個gem在雲開發服務器/服務環境中工作的「正確」方法。我也不知道這將是多麼安全。我懷疑我的解決方案將解析爲相同外部IP地址的所有計算機暴露在瀏覽器REPL中的'better_errors'。如果您正在處理敏感的代碼庫/數據庫,請不要實施我的解決方案。
當我在Cloud9上工作時,我也喜歡在路由錯誤頁面上顯示控制檯。爲此,我將'config.web_console.whitelisted_ips = ENV ['TRUSTED_IP']'添加到我的項目** config/environments/development.rb **文件中。 – Grokcodile 2015-03-27 02:05:10
由於Cloud9全部基於Web,因此您不會從本地主機訪問它,因此默認情況下更好的錯誤將不起作用。如果你在他們的自述(https://github.com/charliesome/better_errors)保衛科看看你可以添加如下配置/環境/ development.rb:
BetterErrors::Middleware.allow_ip! <ipaddress>
從而使錯誤頁面顯示你的IP。您可以通過點擊舊錯誤頁面的「Show env dump」並查看「REMOTE_ADDR」來找到您的明顯IP。
我只是在cloud9.io測試這一點,這是使cloud9.io這項工作的最簡單的方法:
添加下面一行到config /環境/ development.rb:
BetterErrors::Middleware.allow_ip! 'xxx.xxx.xxx.0/24'
其中xxx.xxx.xxx是您正在使用連接到cloud9.io
的本地機的IP地址的前三段中有更好的錯誤問題和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描述:編輯項目配置/環境/ 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
添加行(輸入,ALT + A):
export TRUSTED_IP='0.0.0.0/0.0.0.0'
保存它(ESC ,:wq)
3-運行rails s -b $IP -p $PORT
像往常一樣...
4- 享受更好的錯誤!
如果你也對這個項目在虛擬機(流浪者)工作:
1在你的虛擬機編輯(流浪者)您的〜/ .bash_profile中(我的情況),並添加:
export TRUSTED_IP=x.x.x.x
export PORT=3000
export IP=0.0.0.0
xxxx必須等於ENV的REMOTE_ADDR。 (這不是像cloud9那樣的問題,因爲在我的虛擬機中,IP不會每次都改變:10.0.2.2總是對我來說)。
有了這個,我現在可以使用寶石工頭:foreman start
在與Procfile兩個地方:
web: rails s -b $IP -p $PORT
這工作,因爲全球ENV變量上均設置。
我剛剛開始學習RoR,因此,希望這是正確的做法,而不會在將來帶來更多問題。
我使用的是2.0.0版本 – elersong 2014-11-25 01:50:44