2014-11-25 27 views
4

我正在處理cloud9 IDE上的許多項目,並且真的讓我很沮喪,因爲我無法獲得更好的錯誤gem來正常工作。它不應該需要初始化;它應該只是開箱即用。但是,我仍然只能看到通常的醜陋紅色錯誤頁面。我應該指定它包含在我的gemfile中,並且我已經有bundle install爲什麼沒有better_errors在雲9 ide上工作?

如何獲得更好的錯誤以正確工作?有沒有我缺少的安裝步驟?

+0

我使用的是2.0.0版本 – elersong 2014-11-25 01:50:44

回答

5

我用來獲取在Cloud9中工作的'better_errors'gem的技巧是將TRUSTED_IP的值設置爲我的瀏覽器會話連接到的計算機的公共IP地址。 (據我所知,它與遠程服務器的IP地址或Cloud9服務器地址無關。)

我將概述我用於在我的Cloud9工作區上運行'better_errors'的過程,從我的住宅網絡上的Chromebook ...也許它也適用於您和其他人!

  1. gem "better_errors"添加到項目Gemfile中的開發組中。
  2. gem "binding_of_caller"添加到項目Gemfile中。
  3. 在項目Cloud9終端中運行$ bundle
  4. 編輯項目配置/環境/ development.rb文件和下面的代碼行添加到Rails.application.configure塊的末尾。

    BetterErrors::Middleware.allow_ip! ENV['TRUSTED_IP'] if ENV['TRUSTED_IP'] 
    
  5. 點擊「運行」>創建CLOUD9一個新的 「亞軍」, 「運行方式」>「新飛人」
  6. 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" 
    } 
    
  7. 的代碼替換XXX.XXX.XXX.XXX以上本地計算機的公共IP地址。 (我用http://ifconfig.me/找到分配給我的Chromebook的公網IP)
  8. 保存亞軍文件名爲RoR.run/.c9/runners路徑的項目。
  9. 使用此新跑步者啓動項目服務器。點擊運行>運行>回滾
  10. 在跑步者啓動服務器後,使用Cloud9顯示的彈出鏈接查看該應用。享受'better_errors'!

注:我還沒有想出如何自動餵養我的本地計算機的外部IP地址成住在CLOUD9工作區RoR.run文件的過程。每次移動到新網絡或我的外部IP地址更改時,我都會手動更新它。

警告:我剛剛開始學習RoR,所以我不知道這是否是使這個gem在雲開發服務器/服務環境中工作的「正確」方法。我也不知道這將是多麼安全。我懷疑我的解決方案將解析爲相同外部IP地址的所有計算機暴露在瀏覽器REPL中的'better_errors'。如果您正在處理敏感的代碼庫/數據庫,請不要實施我的解決方案。

+0

當我在Cloud9上工作時,我也喜歡在路由錯誤頁面上顯示控制檯。爲此,我將'config.web_console.whitelisted_ips = ENV ['TRUSTED_IP']'添加到我的項目** config/environments/development.rb **文件中。 – Grokcodile 2015-03-27 02:05:10

0

由於Cloud9全部基於Web,因此您不會從本地主機訪問它,因此默認情況下更好的錯誤將不起作用。如果你在他們的自述(https://github.com/charliesome/better_errors)保衛科看看你可以添加如下配置/環境/ development.rb:

BetterErrors::Middleware.allow_ip! <ipaddress> 

從而使錯誤頁面顯示你的IP。您可以通過點擊舊錯誤頁面的「Show env dump」並查看「REMOTE_ADDR」來找到您的明顯IP。

+0

我添加了上面提到的這一行,並用包含我的ip的字符串「xx.xx.xx.xx」替換了'',我沒有改變。重新啓動服務器後仍然顯示標準錯誤頁面。 – elersong 2014-11-25 20:09:26

+0

我沒有想法。可能值得發送電子郵件至[email protected],以便他們可以診斷爲什麼它不起作用。 – Tim 2014-11-26 09:25:10

2

我只是在cloud9.io測試這一點,這是使cloud9.io這項工作的最簡單的方法:

添加下面一行到config /環境/ development.rb:

BetterErrors::Middleware.allow_ip! 'xxx.xxx.xxx.0/24' 

其中xxx.xxx.xxx是您正在使用連接到cloud9.io

1

本地機的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 
2

是啊!我知道了!自動! 這裏是我的解決方案:

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,因此,希望這是正確的做法,而不會在將來帶來更多問題。